diff -Nrcpad gcc-16-20250511/ChangeLog gcc-16-20250518/ChangeLog
*** gcc-16-20250511/ChangeLog	Sun May 11 22:32:07 2025
--- gcc-16-20250518/ChangeLog	Sun May 18 22:32:06 2025
***************
*** 1,3 ****
--- 1,11 ----
+ 2025-05-16  Spencer Abson  <spencer.abson@arm.com>
+ 
+ 	* MAINTAINERS: Add myself to write after approval.
+ 
+ 2025-05-14  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS: Marcus Shawcroft has resigned from the project.
+ 
  2025-04-28  Kwok Cheung Yeung  <kcyeung@baylibre.com>
  
  	* MAINTAINERS (kcy): Add gcc.gnu.org username.
diff -Nrcpad gcc-16-20250511/LAST_UPDATED gcc-16-20250518/LAST_UPDATED
*** gcc-16-20250511/LAST_UPDATED	Sun May 11 22:32:54 2025
--- gcc-16-20250518/LAST_UPDATED	Sun May 18 22:33:30 2025
***************
*** 1 ****
! Obtained from git: master revision 37e61c793c1b22bdcfbf142cd6086da2745be596
--- 1 ----
! Obtained from git: master revision eb2ea476db2182939f585df7d806225649ee4f62
diff -Nrcpad gcc-16-20250511/MAINTAINERS gcc-16-20250518/MAINTAINERS
*** gcc-16-20250511/MAINTAINERS	Sun May 11 22:32:07 2025
--- gcc-16-20250518/MAINTAINERS	Sun May 18 22:32:06 2025
*************** docs, and the testsuite related to that.
*** 57,63 ****
  aarch64 ldp/stp         Alex Coplan             <alex.coplan@arm.com>
  aarch64 port            Richard Earnshaw        <richard.earnshaw@arm.com>
  aarch64 port            Richard Sandiford       <richard.sandiford@arm.com>
- aarch64 port            Marcus Shawcroft        <marcus.shawcroft@arm.com>
  aarch64 port            Kyrylo Tkachov          <ktkachov@nvidia.com>
  alpha port              Richard Henderson       <rth@gcc.gnu.org>
  amdgcn port             Julian Brown            <julian@codesourcery.com>
--- 57,62 ----
*************** from other maintainers or reviewers.
*** 330,335 ****
--- 329,335 ----
  Name                            BZ account      Email
  
  Soumya AR                       soumyaa         <soumyaa@nvidia.com>
+ Spencer Abson                   sabson          <spencer.abson@arm.com>
  Mark G. Adams                   mgadams         <mark.g.adams@sympatico.ca>
  Ajit Kumar Agarwal              aagarwa         <aagarwa1@linux.ibm.com>
  Pedro Alves                     palves          <palves@redhat.com>
*************** Senthil Kumar Selvaraj          saaadhu
*** 792,798 ****
  Kostya Serebryany               kcc             <kcc@google.com>
  Thiemo Seufer                   -               <ths@networkno.de>
  Bill Seurer                     seurer          <seurer@linux.vnet.ibm.com>
- Marcus Shawcroft                mshawcroft      <marcus.shawcroft@arm.com>
  Nathaniel Shead                 nshead          <nathanieloshead@gmail.com>
  Tim Shen                        timshen         <timshen@google.com>
  Joel Sherrill                   joel            <joel@oarcorp.com>
--- 792,797 ----
diff -Nrcpad gcc-16-20250511/MD5SUMS gcc-16-20250518/MD5SUMS
*** gcc-16-20250511/MD5SUMS	Sun May 11 22:32:58 2025
--- gcc-16-20250518/MD5SUMS	Sun May 18 22:33:38 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20250511.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-20250518.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
*************** b8acb527560fc760209d200fcfab8ff4  .githu
*** 21,32 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! f34bf42b90c14687dd423c392229b49a  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 728b777437775eb64f16517176ac82ed  LAST_UPDATED
! bb7efdf3d67af3a24c7dfd5440108348  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
  7c87bc1ac5389b3184deb34c599d184f  Makefile.tpl
--- 21,32 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 750ee6727a59ccfcd42c7c754a7ffd67  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 69a78e05dad7ee2d4d1faa09c97dde0e  LAST_UPDATED
! bf48507bebbc2d083f8ff2a5536d4983  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
  7c87bc1ac5389b3184deb34c599d184f  Makefile.tpl
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 514,520 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! f0190d297667893394723609f87fd532  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 514,520 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 1f8392661ed0dfd1e6677d524d8845f4  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 551,569 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! c8d08aaa6c3f391b5473fa4e08dbda43  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! 636b061140f23f47c242d4d7a5488ae3  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 6ab80076b34eb4c0bb7a477989d45a66  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 551,569 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! fe3d280607c76431fe655254471c72f0  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! 3be0669d74e7a3a299240fcd4c53411a  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 958f4497f92d326a50cab0c4ebe0edb9  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** e529e93557ba835a90440062c302bbfe  gcc/ad
*** 590,596 ****
  eea9961506181531b5f7f1a7f62fe428  gcc/ada/ChangeLog-2024
  5598cfcecd6612ea21efddabbbe1ecc0  gcc/ada/ChangeLog.ptr
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
! 711afb6f8ec14edf7425445a669e85ed  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
  b4d8c0a7115d77fba33a6577ab6efe43  gcc/ada/Makefile.rtl
  36ed8f92f8a084af3653ce5eaf0eda34  gcc/ada/accessibility.adb
--- 590,596 ----
  eea9961506181531b5f7f1a7f62fe428  gcc/ada/ChangeLog-2024
  5598cfcecd6612ea21efddabbbe1ecc0  gcc/ada/ChangeLog.ptr
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
! 597f68d7246e635c0cd3df7099ec272c  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
  b4d8c0a7115d77fba33a6577ab6efe43  gcc/ada/Makefile.rtl
  36ed8f92f8a084af3653ce5eaf0eda34  gcc/ada/accessibility.adb
*************** ec7cf235c00294fe67198b9bf264f3d9  gcc/ad
*** 838,844 ****
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  7d09f66d77b747916fdcfbba221e06d4  gcc/ada/gcc-interface/Make-lang.in
! 0a634346a9941ab64b7906cc0cbb449b  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
--- 838,844 ----
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  7d09f66d77b747916fdcfbba221e06d4  gcc/ada/gcc-interface/Make-lang.in
! 43779dc97ce084f83c9f5dea1bfcffb4  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
*************** c60f1ef3d02e040c88d9e217de84ee81  gcc/an
*** 3180,3199 ****
  1c81af4bc406ae0877330e02ea57edad  gcc/analyzer/varargs.cc
  cc81acb908eb9d6b13038a95c3a10a9c  gcc/analyzer/varargs.dot
  eeb42b412edc2884a4c60d6f38f7473b  gcc/array-traits.h
! 681a810c8f43296efd3e8f41a56a910d  gcc/asan.cc
  3b696031376017661bf8d237ffc7c068  gcc/asan.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
  05d6a8f61e165cf9438457af9042b98f  gcc/attribs.cc
  1bdf6723b4c88b5b1495f718e4dd00c7  gcc/attribs.h
! 1c0257185e0c027f8530f132c40515e3  gcc/auto-inc-dec.cc
  3de302030b825a47ae596218c96f18fe  gcc/auto-profile.cc
  fe453e02b17197af9a9101edb6590b74  gcc/auto-profile.h
! 5f6afda00ed75a73ecd5f064cf44fb15  gcc/avoid-store-forwarding.cc
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
  db748cbed8c442a442779d8d857a3ae4  gcc/backend.h
  d6b885b0c4ea7cf856ba4b84021613ce  gcc/basic-block.h
! 307c2b5931d2c66758ea6d962278292c  gcc/bb-reorder.cc
  3e49b0021eba39cbab2bc26d55fde08f  gcc/bb-reorder.h
  919e197f7b89caf16d31f0882964adfa  gcc/bbitmap.h
  bb79e5d725623239adccc4b97ad421cb  gcc/bitmap.cc
--- 3180,3199 ----
  1c81af4bc406ae0877330e02ea57edad  gcc/analyzer/varargs.cc
  cc81acb908eb9d6b13038a95c3a10a9c  gcc/analyzer/varargs.dot
  eeb42b412edc2884a4c60d6f38f7473b  gcc/array-traits.h
! 6abcb9777280c69da14835a391a5c347  gcc/asan.cc
  3b696031376017661bf8d237ffc7c068  gcc/asan.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
  05d6a8f61e165cf9438457af9042b98f  gcc/attribs.cc
  1bdf6723b4c88b5b1495f718e4dd00c7  gcc/attribs.h
! 54fb3cb1cab63227c50a50819ea1a3c3  gcc/auto-inc-dec.cc
  3de302030b825a47ae596218c96f18fe  gcc/auto-profile.cc
  fe453e02b17197af9a9101edb6590b74  gcc/auto-profile.h
! db21702a52f8bcf4cf64f9fb345d9d8a  gcc/avoid-store-forwarding.cc
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
  db748cbed8c442a442779d8d857a3ae4  gcc/backend.h
  d6b885b0c4ea7cf856ba4b84021613ce  gcc/basic-block.h
! 58b4f183a8f75d516025244e2096223f  gcc/bb-reorder.cc
  3e49b0021eba39cbab2bc26d55fde08f  gcc/bb-reorder.h
  919e197f7b89caf16d31f0882964adfa  gcc/bbitmap.h
  bb79e5d725623239adccc4b97ad421cb  gcc/bitmap.cc
*************** fe292df4b7f3e3ef7c0b8305084b6844  gcc/bi
*** 3201,3210 ****
  7cd04e6f25d02f9f2cecc8ce50e73e76  gcc/btfout.cc
  f808dbcc1ad6add5a0867c4b3e03fc4d  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! f82fc6b76f1820b69c268916c7fe1bf6  gcc/builtins.cc
! d86baafdac933140bc11c4cbfb28779e  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 037365f90039c72479159cccecb90339  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
--- 3201,3210 ----
  7cd04e6f25d02f9f2cecc8ce50e73e76  gcc/btfout.cc
  f808dbcc1ad6add5a0867c4b3e03fc4d  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! d8ff60ecebd67b2be7141da80578a9ef  gcc/builtins.cc
! d7a735fed7d7781add6ff1f190c2496f  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! f21727cd9fab73dfb7f496681707a696  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
*************** a4b7179d2e948bb7586a9143fbe05593  gcc/c-
*** 3222,3228 ****
  4c01c042c599ee5c7b21aeb2c0cccbe8  gcc/c-family/c-lex.cc
  c880dc584a0fd4908e5df33dd81137b8  gcc/c-family/c-objc.h
  3609801f0f05c77393ed160a1b16d1c8  gcc/c-family/c-omp.cc
! 58c3b37b6509e37d2866d8f65bde6b01  gcc/c-family/c-opts.cc
  2f1a14531d3a436ca9f4aad2812c3898  gcc/c-family/c-pch.cc
  6e53d008a0c4738339154c353a50ff0a  gcc/c-family/c-ppoutput.cc
  c3373b06f8b0f699244a639f7e84c41e  gcc/c-family/c-pragma.cc
--- 3222,3228 ----
  4c01c042c599ee5c7b21aeb2c0cccbe8  gcc/c-family/c-lex.cc
  c880dc584a0fd4908e5df33dd81137b8  gcc/c-family/c-objc.h
  3609801f0f05c77393ed160a1b16d1c8  gcc/c-family/c-omp.cc
! 3a6dcb45673c45ce1464ac5794d8f636  gcc/c-family/c-opts.cc
  2f1a14531d3a436ca9f4aad2812c3898  gcc/c-family/c-pch.cc
  6e53d008a0c4738339154c353a50ff0a  gcc/c-family/c-ppoutput.cc
  c3373b06f8b0f699244a639f7e84c41e  gcc/c-family/c-pragma.cc
*************** cd371895d730dd64e947066b2e4378f8  gcc/c/
*** 3268,3274 ****
  c169f2d94910060e76c333db12b960b9  gcc/c/gimple-parser.cc
  84e0373f5db72260d34cf125d8587f06  gcc/c/gimple-parser.h
  137bed6e3e62068dc6a3292ae42a0a4e  gcc/caller-save.cc
! 41157841a89354ca28f1b640ab289e63  gcc/calls.cc
  5eea9a238f2c182f5964d1de966e6a34  gcc/calls.h
  c7957e627bab86a3bb7b1adfe7d144e9  gcc/ccmp.cc
  5d9ee312518a07716ecbfe4b5ec17091  gcc/ccmp.h
--- 3268,3274 ----
  c169f2d94910060e76c333db12b960b9  gcc/c/gimple-parser.cc
  84e0373f5db72260d34cf125d8587f06  gcc/c/gimple-parser.h
  137bed6e3e62068dc6a3292ae42a0a4e  gcc/caller-save.cc
! 1e3386f905492f5b8c62c15f0958591e  gcc/calls.cc
  5eea9a238f2c182f5964d1de966e6a34  gcc/calls.h
  c7957e627bab86a3bb7b1adfe7d144e9  gcc/ccmp.cc
  5d9ee312518a07716ecbfe4b5ec17091  gcc/ccmp.h
*************** dce5f9aa135bb3752695f3103daa686a  gcc/cf
*** 3281,3352 ****
  0d52ee7360736bb3d0306e66c1f3a9ce  gcc/cfgbuild.h
  39bbd18fab17b2880094aa317111df50  gcc/cfgcleanup.cc
  0761d2fe0a8e51aa7ed662e27b66747a  gcc/cfgcleanup.h
! fa259ff7ddd6a4f08948047b834236d1  gcc/cfgexpand.cc
  b0df45fc1562ee51ee67ed5f30feb96e  gcc/cfgexpand.h
  748c8fca5e6dfe774ff333205ea9f9be  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
  1103c84ad5690bda0bd6e0c71ea46b93  gcc/cfgloop.cc
  5b21e1c152c74de1773a6cfb0c115604  gcc/cfgloop.h
! 5ac695878401667aceb491bb5467c2b7  gcc/cfgloopanal.cc
  0a36fc8e64fdd79bb47a57fa94df4e3f  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
! c97195f1544d9bfc539271f27e7a26b4  gcc/cfgrtl.cc
  28d9dedd6044321fe1df02d3575f81e9  gcc/cfgrtl.h
! d2af7bef4d7e14fad28c3387b4d48c44  gcc/cgraph.cc
! dc77078cfb0ca0cc5ae08b3f18bf4949  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
! 6ee8068b3cc2f923cf5e42eb111239e1  gcc/cgraphclones.cc
  3be8ee84d005d8a1f5a65ed6a7fce76a  gcc/cgraphunit.cc
  70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
! 2ed4d7707ed07d91433229882dd77435  gcc/cobol/ChangeLog
  0e25dd48b4c3e56f9d9b604cd8980f36  gcc/cobol/Make-lang.in
  d6e5c9435942e9ec3f1d2e83926b5b0c  gcc/cobol/cbldiag.h
  0fc59bb3626b6cda209f53824261beb1  gcc/cobol/cdf-copy.cc
  3bb5c2a5f2ca5af128d40c5e880848cf  gcc/cobol/cdf.y
  f0dbfcf1dedffa22b25991dbdc846baf  gcc/cobol/cdfval.h
  77fc5e59eed5f55ff8b66d9138ca6c18  gcc/cobol/cobol-system.h
! 9730cec0c0f29c48260379a6352beec7  gcc/cobol/cobol1.cc
  5985e1898b04e553a91bdc474c56311f  gcc/cobol/config-lang.in
  aab9bcdb44bef72e1c3a8cd069bfcccd  gcc/cobol/convert.cc
  85e293b3cfd63dd6ec31e1b03363d8de  gcc/cobol/copybook.h
  d82104539470e81b006b5f9227229da7  gcc/cobol/dts.h
! e0e052655b60c48dc15466e247dc21cf  gcc/cobol/except.cc
! 1256a377e7b47a0adcf1c43a2274bf11  gcc/cobol/exceptg.h
! 604df17dfcca35e0919c19f61a592c18  gcc/cobol/gcobc
  d44f9332607dd9c0ad1d7dd811e5a531  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
  e9f9397b294013c218ab16870d43e8ef  gcc/cobol/gcobolspec.cc
! 52a4e43f2242994e6ffc35305279d254  gcc/cobol/genapi.cc
  9405cedcadb1d8d4dc1ec68fc2fb0c59  gcc/cobol/genapi.h
  b04330097798bdf9cbc4959b4ecf7ce8  gcc/cobol/gengen.cc
  5a15fbb14271aa588750f652642e3b68  gcc/cobol/gengen.h
! b948c6f7784a02c72c74464652f7367a  gcc/cobol/genmath.cc
  d44e8c86d57fb704b6c1fbab3464fb9a  gcc/cobol/genmath.h
! 488d365626bd7c2940c0e2d1d1228f10  gcc/cobol/genutil.cc
! 6a111bf23fa6dd512b148307c4f15b9b  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  7b5758bc973cca5cffb0d13f9071a412  gcc/cobol/inspect.h
! 9bff261865a91e8ee85d705fd5bb8143  gcc/cobol/lang-specs.h
! c0074d45ca6599230c4679735132c265  gcc/cobol/lang.opt
! d1170095b14aa5fa21862d07a27e29c8  gcc/cobol/lang.opt.urls
  e0d7a16fdf4749523dfa969aa882d709  gcc/cobol/lexio.cc
! eab918ac4f71f5b18770f9dbb8f6b2b3  gcc/cobol/lexio.h
! f671e4bf371f943621e9a3baad922363  gcc/cobol/parse.y
! fdf36758a0fd775c7da30fa81e31eb81  gcc/cobol/parse_ante.h
  4d55488629c09ff19bd872e7dd9d0fc7  gcc/cobol/parse_util.h
! 118755a347fadbe244b49c857230614d  gcc/cobol/scan.l
! ce068fd0775a453bea6dac7980027779  gcc/cobol/scan_ante.h
  e15d0bd1bbc8d73dee00f50180bfcb54  gcc/cobol/scan_post.h
  31c4d4468924864effced0de842cfc10  gcc/cobol/show_parse.h
  d75653f25ec3b747265e4ab78aa71521  gcc/cobol/structs.cc
  be06e098e0c2eb8f8ac2f0094bf53181  gcc/cobol/structs.h
! 1901ca81f1d02b934cfdb99894e2ce19  gcc/cobol/symbols.cc
! 29676519aa65820884a380e2464f0670  gcc/cobol/symbols.h
  036b7c0fd665dd2cee65ec858597b18f  gcc/cobol/symfind.cc
  a7b20717b0839af4783bead169c2ab02  gcc/cobol/token_names.h
  94ee230280ef44983fee5c81648f8669  gcc/cobol/udf/stored-char-length.cbl
! 5096c1ed5c707e83afb4d36022dc4393  gcc/cobol/util.cc
! ccf9c2bd04d50d1a9e737e478f1e01a3  gcc/cobol/util.h
  0f3dba102a04da8ca1e45b9b16741bde  gcc/collect-utils.cc
  6e6685d60444844fecf36350b5956f77  gcc/collect-utils.h
  30202062ccc5696f6203f07ab6965763  gcc/collect2-aix.cc
--- 3281,3352 ----
  0d52ee7360736bb3d0306e66c1f3a9ce  gcc/cfgbuild.h
  39bbd18fab17b2880094aa317111df50  gcc/cfgcleanup.cc
  0761d2fe0a8e51aa7ed662e27b66747a  gcc/cfgcleanup.h
! 7a824bb7ff780b0aaf4570d63c002338  gcc/cfgexpand.cc
  b0df45fc1562ee51ee67ed5f30feb96e  gcc/cfgexpand.h
  748c8fca5e6dfe774ff333205ea9f9be  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
  1103c84ad5690bda0bd6e0c71ea46b93  gcc/cfgloop.cc
  5b21e1c152c74de1773a6cfb0c115604  gcc/cfgloop.h
! 5064c16e8d6a47a0fc2a9a5c144bbc2d  gcc/cfgloopanal.cc
  0a36fc8e64fdd79bb47a57fa94df4e3f  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
! 20ff4e719c1fd355d84cd960d72aff7f  gcc/cfgrtl.cc
  28d9dedd6044321fe1df02d3575f81e9  gcc/cfgrtl.h
! afcd9ceffbf6a6dc558bcfb1d9f3807d  gcc/cgraph.cc
! cc50b703ddacf4f5ef66bd38576c5e1f  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
! b87eab2b04054f0d3cd20768be99c655  gcc/cgraphclones.cc
  3be8ee84d005d8a1f5a65ed6a7fce76a  gcc/cgraphunit.cc
  70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
! cdb15177fb54b2bbb9962a4a2014b5c5  gcc/cobol/ChangeLog
  0e25dd48b4c3e56f9d9b604cd8980f36  gcc/cobol/Make-lang.in
  d6e5c9435942e9ec3f1d2e83926b5b0c  gcc/cobol/cbldiag.h
  0fc59bb3626b6cda209f53824261beb1  gcc/cobol/cdf-copy.cc
  3bb5c2a5f2ca5af128d40c5e880848cf  gcc/cobol/cdf.y
  f0dbfcf1dedffa22b25991dbdc846baf  gcc/cobol/cdfval.h
  77fc5e59eed5f55ff8b66d9138ca6c18  gcc/cobol/cobol-system.h
! 8a1232cc40a34e1a92e07d4d85b2e2aa  gcc/cobol/cobol1.cc
  5985e1898b04e553a91bdc474c56311f  gcc/cobol/config-lang.in
  aab9bcdb44bef72e1c3a8cd069bfcccd  gcc/cobol/convert.cc
  85e293b3cfd63dd6ec31e1b03363d8de  gcc/cobol/copybook.h
  d82104539470e81b006b5f9227229da7  gcc/cobol/dts.h
! cd566058e56e0bdd6d5fc6174d575702  gcc/cobol/except.cc
! 9099d4eaec925397d6d3a4d11d080a4c  gcc/cobol/exceptg.h
! e41169e986263d176984bceb2cd04a66  gcc/cobol/gcobc
  d44f9332607dd9c0ad1d7dd811e5a531  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
  e9f9397b294013c218ab16870d43e8ef  gcc/cobol/gcobolspec.cc
! 86cfe20ef46b0cf116a784f55d6fbb54  gcc/cobol/genapi.cc
  9405cedcadb1d8d4dc1ec68fc2fb0c59  gcc/cobol/genapi.h
  b04330097798bdf9cbc4959b4ecf7ce8  gcc/cobol/gengen.cc
  5a15fbb14271aa588750f652642e3b68  gcc/cobol/gengen.h
! 03907d50aa67f715c8b1af3c9fc37fd2  gcc/cobol/genmath.cc
  d44e8c86d57fb704b6c1fbab3464fb9a  gcc/cobol/genmath.h
! 282cbbb6d294ffcc750bf7012dcb6532  gcc/cobol/genutil.cc
! 4e33daa941879d0fb799ce0c5005369d  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  7b5758bc973cca5cffb0d13f9071a412  gcc/cobol/inspect.h
! 2c85ade938027e95c4c411b384f6ad11  gcc/cobol/lang-specs.h
! 4ab99742b15962360c2189eb9cdb087c  gcc/cobol/lang.opt
! 746a2d46b3bc2a5f5663a9d64a78a674  gcc/cobol/lang.opt.urls
  e0d7a16fdf4749523dfa969aa882d709  gcc/cobol/lexio.cc
! 20795df25934313075a740d861e58496  gcc/cobol/lexio.h
! 6add8ee58faad412b514f335c6c38d5c  gcc/cobol/parse.y
! 35404a016051a4bf4b9309fe72f6de1c  gcc/cobol/parse_ante.h
  4d55488629c09ff19bd872e7dd9d0fc7  gcc/cobol/parse_util.h
! adf2e210ca55762410bdf29f664fb01d  gcc/cobol/scan.l
! 06ec1421141ba815740f317c4b5cc19f  gcc/cobol/scan_ante.h
  e15d0bd1bbc8d73dee00f50180bfcb54  gcc/cobol/scan_post.h
  31c4d4468924864effced0de842cfc10  gcc/cobol/show_parse.h
  d75653f25ec3b747265e4ab78aa71521  gcc/cobol/structs.cc
  be06e098e0c2eb8f8ac2f0094bf53181  gcc/cobol/structs.h
! f550a49042ffb223019372e14cc5684c  gcc/cobol/symbols.cc
! 930d109039ba3166fa066b87d043bf86  gcc/cobol/symbols.h
  036b7c0fd665dd2cee65ec858597b18f  gcc/cobol/symfind.cc
  a7b20717b0839af4783bead169c2ab02  gcc/cobol/token_names.h
  94ee230280ef44983fee5c81648f8669  gcc/cobol/udf/stored-char-length.cbl
! 6ba2cbbb6288a394c97e5d88faf5098c  gcc/cobol/util.cc
! 3e2148efc3efe4f46e1170c4c0d9e8ef  gcc/cobol/util.h
  0f3dba102a04da8ca1e45b9b16741bde  gcc/collect-utils.cc
  6e6685d60444844fecf36350b5956f77  gcc/collect-utils.h
  30202062ccc5696f6203f07ab6965763  gcc/collect2-aix.cc
*************** f842f1b8595f3ac795ba92c2b07085e6  gcc/co
*** 3403,3409 ****
  03a53ecd36b397fbe0846ead66505e2d  gcc/common/config/pa/pa-common.cc
  1fbcfc1a92bb13e4405bc75767cf8a36  gcc/common/config/pdp11/pdp11-common.cc
  7ee5967300d3c96a608eea63008aa893  gcc/common/config/pru/pru-common.cc
! a8e9e29385848ea85274279c3db6e9c7  gcc/common/config/riscv/riscv-common.cc
  8a5a4ee26b110f44497208d1b31e3503  gcc/common/config/riscv/riscv-ext-bitmask.def
  08537bef63b33fd56aeb2a292c9a207a  gcc/common/config/rs6000/rs6000-common.cc
  9ddaceac9f81b4798f64241b273f8e1c  gcc/common/config/rx/rx-common.cc
--- 3403,3409 ----
  03a53ecd36b397fbe0846ead66505e2d  gcc/common/config/pa/pa-common.cc
  1fbcfc1a92bb13e4405bc75767cf8a36  gcc/common/config/pdp11/pdp11-common.cc
  7ee5967300d3c96a608eea63008aa893  gcc/common/config/pru/pru-common.cc
! 8fa44c1e552752496b4ba4b17ce64d9a  gcc/common/config/riscv/riscv-common.cc
  8a5a4ee26b110f44497208d1b31e3503  gcc/common/config/riscv/riscv-ext-bitmask.def
  08537bef63b33fd56aeb2a292c9a207a  gcc/common/config/rs6000/rs6000-common.cc
  9ddaceac9f81b4798f64241b273f8e1c  gcc/common/config/rx/rx-common.cc
*************** b5a916bb9dd788754ac9e4ad7174ee74  gcc/co
*** 3418,3424 ****
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! d3d293eca3338ab948f00527cdc0bad7  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  1d528f9807496430cc01191e59f745d3  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 3418,3424 ----
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! a0c14a7dd75780980d7e89625c260a33  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  1d528f9807496430cc01191e59f745d3  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** f931bc8e97c2f1358ad3ad91e902d553  gcc/co
*** 3451,3463 ****
  c9a52df251f3132f3562d3fffaa39c7b  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  b14ff14af09e35148ebaceacc90e59a7  gcc/config/aarch64/aarch64-passes.def
! 4dd63ee4335a9fa37c33047e1c4e4974  gcc/config/aarch64/aarch64-protos.h
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  8f28d55d0c7fc64387352822e99a37ff  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! 84455a77397a60fecf4fc1b7438cceb5  gcc/config/aarch64/aarch64-simd.md
  a6b5fef44720ac04efdf50efa092700a  gcc/config/aarch64/aarch64-sme.md
! 221b858bba4517a3871cb07292c6b216  gcc/config/aarch64/aarch64-speculation.cc
  9ab182bab4cc10bb9676b1309abb562f  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
  cdcf6636402c3c91eb0010325542b491  gcc/config/aarch64/aarch64-sve-builtins-base.h
--- 3451,3463 ----
  c9a52df251f3132f3562d3fffaa39c7b  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  b14ff14af09e35148ebaceacc90e59a7  gcc/config/aarch64/aarch64-passes.def
! 825361f50687226bb40a82050d51e8d6  gcc/config/aarch64/aarch64-protos.h
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  8f28d55d0c7fc64387352822e99a37ff  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! 9ea76d93e2634ee882d4a122c5bd8ee5  gcc/config/aarch64/aarch64-simd.md
  a6b5fef44720ac04efdf50efa092700a  gcc/config/aarch64/aarch64-sme.md
! fa6672290fdf9366d9919defcb7e41d7  gcc/config/aarch64/aarch64-speculation.cc
  9ab182bab4cc10bb9676b1309abb562f  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
  cdcf6636402c3c91eb0010325542b491  gcc/config/aarch64/aarch64-sve-builtins-base.h
*************** ba46ae529f856e893a1e7b589bd02f1a  gcc/co
*** 3479,3487 ****
  065e0643d90a8831e9495b5ce2c12b0d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! b4294223a8f61bbe48e0f5b83c2ee14d  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
! 0a4ef861f9b32952abc7cecb404424ce  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
--- 3479,3487 ----
  065e0643d90a8831e9495b5ce2c12b0d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! e3cae0fe7f7009e12da032f7fc2f0c56  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
! 71f148c60e64686f63307ac425ac331d  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
*************** c61b39c4504a36e5c45cd1e3b64723d7  gcc/co
*** 3497,3512 ****
  35fa48ff42e4796d58857c4d001d9920  gcc/config/aarch64/biarchilp32.h
  ae88170d2d567105865813bb4b77d91f  gcc/config/aarch64/biarchlp64.h
  124d7f2adedfdccecd86bb0274dfc7aa  gcc/config/aarch64/check-sve-md.awk
! e1f047783d6854d48a65e26806d1340b  gcc/config/aarch64/constraints.md
  d98f001d9d7b4c0bc18d715b4d512ab9  gcc/config/aarch64/cortex-a57-fma-steering.cc
  034ef57fb17f601ded123d7a43b51d02  gcc/config/aarch64/cygming.h
! d008e1068480bd3433dc32f0c9200ab1  gcc/config/aarch64/driver-aarch64.cc
  f713d33fdaee532813b56547dd070c8c  gcc/config/aarch64/fractional-cost.h
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
  abbbbf6a81aacb22ddfd5cf90e09c3fb  gcc/config/aarch64/iterators.md
! 5b5a63a020088c423711fc910c09f55c  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  9a62f0d5ab77ee226f2c440e8c4d3a1d  gcc/config/aarch64/t-aarch64
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-freebsd
--- 3497,3512 ----
  35fa48ff42e4796d58857c4d001d9920  gcc/config/aarch64/biarchilp32.h
  ae88170d2d567105865813bb4b77d91f  gcc/config/aarch64/biarchlp64.h
  124d7f2adedfdccecd86bb0274dfc7aa  gcc/config/aarch64/check-sve-md.awk
! 4eb5f6bc0723b5a1d6bb507b101d5fce  gcc/config/aarch64/constraints.md
  d98f001d9d7b4c0bc18d715b4d512ab9  gcc/config/aarch64/cortex-a57-fma-steering.cc
  034ef57fb17f601ded123d7a43b51d02  gcc/config/aarch64/cygming.h
! 13b725f057e939c7ebe5bd19da1df7ee  gcc/config/aarch64/driver-aarch64.cc
  f713d33fdaee532813b56547dd070c8c  gcc/config/aarch64/fractional-cost.h
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
  abbbbf6a81aacb22ddfd5cf90e09c3fb  gcc/config/aarch64/iterators.md
! 3d86aed4fe95882adcb3a5a466d3e9ff  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  9a62f0d5ab77ee226f2c440e8c4d3a1d  gcc/config/aarch64/t-aarch64
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-freebsd
*************** a07ee362a4961e9d41cb0ab83553de74  gcc/co
*** 3555,3561 ****
  d51a0766c060e725ac291bdfb7029579  gcc/config/alpha/alpha-modes.def
  b2ecc6b45e614eef7e1878acb4c9f345  gcc/config/alpha/alpha-passes.def
  8b2d685006af3011ecd8b617703ed1ab  gcc/config/alpha/alpha-protos.h
! b3ca9f45a06a55d9d56d54ca2f1064b8  gcc/config/alpha/alpha.cc
  93511b626141bd2b9f58ecef4371b76e  gcc/config/alpha/alpha.h
  c59dfa45c361244bab962af31c11302c  gcc/config/alpha/alpha.md
  8845f6e324c252c878acb1b4d26c77ea  gcc/config/alpha/alpha.opt
--- 3555,3561 ----
  d51a0766c060e725ac291bdfb7029579  gcc/config/alpha/alpha-modes.def
  b2ecc6b45e614eef7e1878acb4c9f345  gcc/config/alpha/alpha-passes.def
  8b2d685006af3011ecd8b617703ed1ab  gcc/config/alpha/alpha-protos.h
! b11186ce374784981736035902e9a624  gcc/config/alpha/alpha.cc
  93511b626141bd2b9f58ecef4371b76e  gcc/config/alpha/alpha.h
  c59dfa45c361244bab962af31c11302c  gcc/config/alpha/alpha.md
  8845f6e324c252c878acb1b4d26c77ea  gcc/config/alpha/alpha.opt
*************** ca0f368e9dc0029f1bd04462f37bff1b  gcc/co
*** 3592,3598 ****
  e54824657551f1b95cd19d0a50bef8b3  gcc/config/arc/arc-simd.h
  e4a75970451275f37c431cddbd360dce  gcc/config/arc/arc-tables.opt
  6704645d075bf670b5ed5d77f0a88b86  gcc/config/arc/arc-tables.opt.urls
! 7446689fd838d145de72b07fd15f5fa1  gcc/config/arc/arc.cc
  7571a4c51258ecb3cc685c010427e67b  gcc/config/arc/arc.h
  1fa49626336ccb287a77a7c72d57a372  gcc/config/arc/arc.md
  5e49444e76be2e50b3f491529836f101  gcc/config/arc/arc.opt
--- 3592,3598 ----
  e54824657551f1b95cd19d0a50bef8b3  gcc/config/arc/arc-simd.h
  e4a75970451275f37c431cddbd360dce  gcc/config/arc/arc-tables.opt
  6704645d075bf670b5ed5d77f0a88b86  gcc/config/arc/arc-tables.opt.urls
! 70c8e8381e886f7e29e9331e3062a5b7  gcc/config/arc/arc.cc
  7571a4c51258ecb3cc685c010427e67b  gcc/config/arc/arc.h
  1fa49626336ccb287a77a7c72d57a372  gcc/config/arc/arc.md
  5e49444e76be2e50b3f491529836f101  gcc/config/arc/arc.opt
*************** e8f60792d98bc24662b34c7928104624  gcc/co
*** 3621,3639 ****
  63b9c725f3edde7fed6ffc49e0227b2e  gcc/config/arm/README-interworking
  c6495aa81de32f973141a776003c7fec  gcc/config/arm/aarch-bti-insert.cc
  2a910650029579bceccf08fc2394245b  gcc/config/arm/aarch-common-protos.h
! 3bc84026bb8175224a66c8640518b315  gcc/config/arm/aarch-common.cc
  f9afd2ef855bfd549493f6da71fd93b7  gcc/config/arm/aarch-common.h
  0fcc6a97fcf14fe1517964a09016261f  gcc/config/arm/aarch-cost-tables.h
! 533acf219f4a4bdfb2048b56e22391b7  gcc/config/arm/aout.h
! 229926e0b373df8e18285ef482f7c867  gcc/config/arm/arm-builtins.cc
  9dd7793ad1cabff379e14aed638e7920  gcc/config/arm/arm-builtins.h
! ce2af5f28c0fb79a346e7f94fc284913  gcc/config/arm/arm-c.cc
! 1300db56f8583f75fbaddf89d82020cb  gcc/config/arm/arm-cpus.in
  03109585e11f4428b7b8f5ab035aee71  gcc/config/arm/arm-d.cc
  75c5136295e2dec2fecf9161a8fa122b  gcc/config/arm/arm-d.h
  e0596bbcf922c8720b56f7bf19416d21  gcc/config/arm/arm-fixed.md
  7eb17427c861cbcd72d8b3b090aa6428  gcc/config/arm/arm-flags.h
! e142e166e7cd04ae80f0ab8164936571  gcc/config/arm/arm-generic.md
  c3db7a7dfc5f086a04da4c1151d755d5  gcc/config/arm/arm-ldmstm.ml
  a7ae9132c9bec5a1cb9d4d193eb9fb9f  gcc/config/arm/arm-mlib.h
  46b06532a5609675535edd3c09991537  gcc/config/arm/arm-modes.def
--- 3621,3639 ----
  63b9c725f3edde7fed6ffc49e0227b2e  gcc/config/arm/README-interworking
  c6495aa81de32f973141a776003c7fec  gcc/config/arm/aarch-bti-insert.cc
  2a910650029579bceccf08fc2394245b  gcc/config/arm/aarch-common-protos.h
! 4642b68ce62d734c7e0791f174de8467  gcc/config/arm/aarch-common.cc
  f9afd2ef855bfd549493f6da71fd93b7  gcc/config/arm/aarch-common.h
  0fcc6a97fcf14fe1517964a09016261f  gcc/config/arm/aarch-cost-tables.h
! cbe08e188cf39566da9323f36b3f6171  gcc/config/arm/aout.h
! 21ce8fc8466aee09b6bf705a93ef374a  gcc/config/arm/arm-builtins.cc
  9dd7793ad1cabff379e14aed638e7920  gcc/config/arm/arm-builtins.h
! 3e423413153b7bb9138b3afe2518a5ea  gcc/config/arm/arm-c.cc
! 6e08b5c2d7693f0347ce27416ed7fe69  gcc/config/arm/arm-cpus.in
  03109585e11f4428b7b8f5ab035aee71  gcc/config/arm/arm-d.cc
  75c5136295e2dec2fecf9161a8fa122b  gcc/config/arm/arm-d.h
  e0596bbcf922c8720b56f7bf19416d21  gcc/config/arm/arm-fixed.md
  7eb17427c861cbcd72d8b3b090aa6428  gcc/config/arm/arm-flags.h
! a0d6247441e5490d3381c59ed8c5b4f4  gcc/config/arm/arm-generic.md
  c3db7a7dfc5f086a04da4c1151d755d5  gcc/config/arm/arm-ldmstm.ml
  a7ae9132c9bec5a1cb9d4d193eb9fb9f  gcc/config/arm/arm-mlib.h
  46b06532a5609675535edd3c09991537  gcc/config/arm/arm-modes.def
*************** cf6db86b33aad410441232cb5e3f30b7  gcc/co
*** 3646,3662 ****
  682a014f9e1f141dfb4c3d481e890008  gcc/config/arm/arm-mve-builtins.cc
  c7d2396379cbe9f18b9ac7f95b2376f9  gcc/config/arm/arm-mve-builtins.def
  657d3ecd350c0aab459e5d706a2466b8  gcc/config/arm/arm-mve-builtins.h
! 3324fea779a9e54d498ce895ae9ca8d0  gcc/config/arm/arm-opts.h
  7172fa6a91c05d4711e3fe34ec3c7d7c  gcc/config/arm/arm-passes.def
! ebac787f4084f83c29a4c53ba6a696c3  gcc/config/arm/arm-protos.h
  eafc8a2abc331243ea846fab22b8aec4  gcc/config/arm/arm-simd-builtin-types.def
! 485d7b0baab6c9abc2c56a9f6c467afb  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
! a16ca2ab73b09afe4481044ebcec2010  gcc/config/arm/arm-tune.md
! 383fd8da0c618aec418c955a29b6f477  gcc/config/arm/arm.cc
! 0ada24c6acb631d40bb857f80959936a  gcc/config/arm/arm.h
! 11e0d112671b369f4d182ac9d5c6066b  gcc/config/arm/arm.md
! a7974fb16c914604eacaf43120b8769f  gcc/config/arm/arm.opt
  d96083967a30e6eb0f75d624af2d831a  gcc/config/arm/arm.opt.urls
  ccbf8aa9582c7ea8db0ed6a70d1dd691  gcc/config/arm/arm1020e.md
  e8da624def348c2c40197e1b1ad6f812  gcc/config/arm/arm1026ejs.md
--- 3646,3662 ----
  682a014f9e1f141dfb4c3d481e890008  gcc/config/arm/arm-mve-builtins.cc
  c7d2396379cbe9f18b9ac7f95b2376f9  gcc/config/arm/arm-mve-builtins.def
  657d3ecd350c0aab459e5d706a2466b8  gcc/config/arm/arm-mve-builtins.h
! 203f354ac1bdd79cf0e13cf808e1a632  gcc/config/arm/arm-opts.h
  7172fa6a91c05d4711e3fe34ec3c7d7c  gcc/config/arm/arm-passes.def
! 34b90148fda7eba1eb0ff2a4bc6203d5  gcc/config/arm/arm-protos.h
  eafc8a2abc331243ea846fab22b8aec4  gcc/config/arm/arm-simd-builtin-types.def
! 5d895a88bb2048a83e3ccc08d50f3151  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
! 1f1a55560eb97e283125003609418bce  gcc/config/arm/arm-tune.md
! 4f974ae26108aba9f8f5367a47c54969  gcc/config/arm/arm.cc
! 4b4c240869c2413c542f051e20fc26d1  gcc/config/arm/arm.h
! 5f7e052e197e5f93418cf111af042afe  gcc/config/arm/arm.md
! 6438602120f5212434b003b5018064ec  gcc/config/arm/arm.opt
  d96083967a30e6eb0f75d624af2d831a  gcc/config/arm/arm.opt.urls
  ccbf8aa9582c7ea8db0ed6a70d1dd691  gcc/config/arm/arm1020e.md
  e8da624def348c2c40197e1b1ad6f812  gcc/config/arm/arm1026ejs.md
*************** cb269e14a0ffcaf48937ea37a588d123  gcc/co
*** 3677,3683 ****
  130a8fbe50847f964b84dcc079274131  gcc/config/arm/arm_vfp_builtins.def
  ae20ce20f59a062f74bc3e38bfb8e776  gcc/config/arm/bpabi.h
  bbacfe695f3abec9a6aa46cee26c1db4  gcc/config/arm/common.md
! 1e5fd9611ba9a759a35660d0e4c4b3f7  gcc/config/arm/constraints.md
  583626dca1b07ab1d185bd33be9c755e  gcc/config/arm/cortex-a15-neon.md
  e3f39f090dffb6441661f2735ff625c7  gcc/config/arm/cortex-a15.md
  2e920cabf1d4fa68e020ec3becbec753  gcc/config/arm/cortex-a17-neon.md
--- 3677,3683 ----
  130a8fbe50847f964b84dcc079274131  gcc/config/arm/arm_vfp_builtins.def
  ae20ce20f59a062f74bc3e38bfb8e776  gcc/config/arm/bpabi.h
  bbacfe695f3abec9a6aa46cee26c1db4  gcc/config/arm/common.md
! 27f03ed6fafa20872db0373c5d3555e2  gcc/config/arm/constraints.md
  583626dca1b07ab1d185bd33be9c755e  gcc/config/arm/cortex-a15-neon.md
  e3f39f090dffb6441661f2735ff625c7  gcc/config/arm/cortex-a15.md
  2e920cabf1d4fa68e020ec3becbec753  gcc/config/arm/cortex-a17-neon.md
*************** d3258824a869cbf8507cc20b8354d63a  gcc/co
*** 3707,3721 ****
  7ce753afcddfce0345d95ad953e5a4b2  gcc/config/arm/fmp626.md
  2c6206b20ea2631cadbdfaa2019002d1  gcc/config/arm/freebsd.h
  d46e30ed2d47159006a0c4a6dd3bf6ef  gcc/config/arm/fuchsia-elf.h
! 0632ce6b37113785b331e73807d5e0bd  gcc/config/arm/iterators.md
! 78c13c6d4c125cd3779c516e81bcb1ee  gcc/config/arm/iwmmxt.md
! 8a220d94d24f542dbfc8bcf597747268  gcc/config/arm/iwmmxt2.md
  63f3c7dd672505a59cbe1c24092c9b34  gcc/config/arm/ldmstm.md
  656971fbf7d46fe2b4389af456f0833b  gcc/config/arm/ldrdstrd.md
  62b22793d212e34e0864abdd03c8fe68  gcc/config/arm/linux-eabi.h
  b1bb4aedc65a975961957373495f8b3a  gcc/config/arm/linux-elf.h
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
- d790ecc09ebef93e83ed249e4941fda4  gcc/config/arm/marvell-f-iwmmxt.md
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
  2ceb00fd47c9ae2553581737206a0c2f  gcc/config/arm/mve.md
--- 3707,3718 ----
  7ce753afcddfce0345d95ad953e5a4b2  gcc/config/arm/fmp626.md
  2c6206b20ea2631cadbdfaa2019002d1  gcc/config/arm/freebsd.h
  d46e30ed2d47159006a0c4a6dd3bf6ef  gcc/config/arm/fuchsia-elf.h
! 383f71ba0cd5e9596176e6fa40ec4a8f  gcc/config/arm/iterators.md
  63f3c7dd672505a59cbe1c24092c9b34  gcc/config/arm/ldmstm.md
  656971fbf7d46fe2b4389af456f0833b  gcc/config/arm/ldrdstrd.md
  62b22793d212e34e0864abdd03c8fe68  gcc/config/arm/linux-eabi.h
  b1bb4aedc65a975961957373495f8b3a  gcc/config/arm/linux-elf.h
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
  2ceb00fd47c9ae2553581737206a0c2f  gcc/config/arm/mve.md
*************** d790ecc09ebef93e83ed249e4941fda4  gcc/co
*** 3723,3735 ****
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
  8f026aba2fb3043f536516c1ed3776c7  gcc/config/arm/parsecpu.awk
! 16b1cf453920910923274f7a62e5d3bb  gcc/config/arm/predicates.md
  1f3ea8d6e519c40935905506e989956d  gcc/config/arm/rtems.h
  708681c9ad5a879b29922f565c5b60e5  gcc/config/arm/semi.h
  ed31ef487dcad82d59af7752f594a2cf  gcc/config/arm/symbian.h
  afd8337aeda074e9471bdd42d621ac6d  gcc/config/arm/sync.md
  eceb87bcbce63516aae12e907038c15b  gcc/config/arm/t-aprofile
! 5ee5aaf300deeab0c40f2c0cac17287d  gcc/config/arm/t-arm
  ba79dde999c5f8437b1f88f061dba127  gcc/config/arm/t-arm-elf
  4dc427c456af5e56b1ac39bda8969af6  gcc/config/arm/t-bpabi
  e92e481ff0f501bfc2b92b0e571c867b  gcc/config/arm/t-fuchsia
--- 3720,3732 ----
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
  8f026aba2fb3043f536516c1ed3776c7  gcc/config/arm/parsecpu.awk
! 134342ef2be8d21823594ff1dd4221f9  gcc/config/arm/predicates.md
  1f3ea8d6e519c40935905506e989956d  gcc/config/arm/rtems.h
  708681c9ad5a879b29922f565c5b60e5  gcc/config/arm/semi.h
  ed31ef487dcad82d59af7752f594a2cf  gcc/config/arm/symbian.h
  afd8337aeda074e9471bdd42d621ac6d  gcc/config/arm/sync.md
  eceb87bcbce63516aae12e907038c15b  gcc/config/arm/t-aprofile
! 378895d1a598885888ee95a98f182111  gcc/config/arm/t-arm
  ba79dde999c5f8437b1f88f061dba127  gcc/config/arm/t-arm-elf
  4dc427c456af5e56b1ac39bda8969af6  gcc/config/arm/t-bpabi
  e92e481ff0f501bfc2b92b0e571c867b  gcc/config/arm/t-fuchsia
*************** dc8e1ff924dd1f2699f60837b792825a  gcc/co
*** 3742,3755 ****
  b6434dfdcd32f4ab54f4e1e867cca4d4  gcc/config/arm/t-symbian
  1484dd700dca665c8ec9c7b42f260359  gcc/config/arm/t-vxworks
  84d24ab216855ebac94722b5968426ab  gcc/config/arm/thumb1.md
! 504553bf6ec36f1cc61ecf49e4866f0d  gcc/config/arm/thumb2.md
! b39ae9b1d0fd52783888ae034fa27218  gcc/config/arm/types.md
  22e6583951db6a19df7c215758f2ffbf  gcc/config/arm/uclinux-eabi.h
  764ee6f9b6836a3b69036da6a49da57e  gcc/config/arm/uclinux-elf.h
  85ec3386517177a4f52dfe3a6b7424c9  gcc/config/arm/uclinuxfdpiceabi.h
  c15086ec95d044fe59c3f12aa73190d1  gcc/config/arm/unknown-elf.h
! 9c959e58e72273924c71fe16e787590d  gcc/config/arm/unspecs.md
! 73bd6e0ed5faced721e41f90a5d22e64  gcc/config/arm/vec-common.md
  cd17766ff1d7c30a7763b20fd4eef83a  gcc/config/arm/vfp.md
  97faf501b2f484ffffb0776805ec048c  gcc/config/arm/vfp11.md
  7103226c96e3a24663955d93879e07b5  gcc/config/arm/vxworks.h
--- 3739,3752 ----
  b6434dfdcd32f4ab54f4e1e867cca4d4  gcc/config/arm/t-symbian
  1484dd700dca665c8ec9c7b42f260359  gcc/config/arm/t-vxworks
  84d24ab216855ebac94722b5968426ab  gcc/config/arm/thumb1.md
! 03d6418be346af0c0f2c9bf32787ef02  gcc/config/arm/thumb2.md
! 1b2a050934935f92fdd15721b5d736ec  gcc/config/arm/types.md
  22e6583951db6a19df7c215758f2ffbf  gcc/config/arm/uclinux-eabi.h
  764ee6f9b6836a3b69036da6a49da57e  gcc/config/arm/uclinux-elf.h
  85ec3386517177a4f52dfe3a6b7424c9  gcc/config/arm/uclinuxfdpiceabi.h
  c15086ec95d044fe59c3f12aa73190d1  gcc/config/arm/unknown-elf.h
! 0003dd5fc0a8a7f4e5730085a8c036e4  gcc/config/arm/unspecs.md
! c95ea043c6e3a7098253d4762681aa5d  gcc/config/arm/vec-common.md
  cd17766ff1d7c30a7763b20fd4eef83a  gcc/config/arm/vfp.md
  97faf501b2f484ffffb0776805ec048c  gcc/config/arm/vfp11.md
  7103226c96e3a24663955d93879e07b5  gcc/config/arm/vxworks.h
*************** f43b68e01b2d61fffb5336ef45fa1e7f  gcc/co
*** 3766,3776 ****
  4d906223c63dc375c9525827a70b6a95  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
! 2dc1345b11b865b9969cbb71e749f862  gcc/config/avr/avr-passes.cc
  0f30b0a73f6c1a84b2ba73050f568645  gcc/config/avr/avr-passes.def
  5e1a1c5c73b0e9dbabe637fa8700bf6e  gcc/config/avr/avr-protos.h
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
! 42d978d2c17da8893ddecf6e3a4b0b59  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
  206ed5e2c2e66a228c6a44c9ddec9dff  gcc/config/avr/avr.md
  076d1efacbf67abfb55af3f4a6d35b43  gcc/config/avr/avr.opt
--- 3763,3773 ----
  4d906223c63dc375c9525827a70b6a95  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
! 7ca2138284a804389351e8f73b78ce54  gcc/config/avr/avr-passes.cc
  0f30b0a73f6c1a84b2ba73050f568645  gcc/config/avr/avr-passes.def
  5e1a1c5c73b0e9dbabe637fa8700bf6e  gcc/config/avr/avr-protos.h
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
! 78caecca99df5a6a9281a59cbb1f4940  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
  206ed5e2c2e66a228c6a44c9ddec9dff  gcc/config/avr/avr.md
  076d1efacbf67abfb55af3f4a6d35b43  gcc/config/avr/avr.opt
*************** c9ff75ab151759fe329687b82352f34b  gcc/co
*** 3791,3797 ****
  8936068e99e1a52f6c98d17c9b83df34  gcc/config/bfin/bfin-modes.def
  1eabce9edbddf4a80ba52e9b6b5fc6f3  gcc/config/bfin/bfin-opts.h
  cfe2bf7471fe9cb6d151fbeb919330d2  gcc/config/bfin/bfin-protos.h
! f619ad67a6ebaab8bd624e9dd4f331c2  gcc/config/bfin/bfin.cc
  962eaa37f4faa425f050c048e42cb991  gcc/config/bfin/bfin.h
  f489763f8e5a7f88f2a8f5bb135b723d  gcc/config/bfin/bfin.md
  c6cd65b0ab67c5768f013d79632f8052  gcc/config/bfin/bfin.opt
--- 3788,3794 ----
  8936068e99e1a52f6c98d17c9b83df34  gcc/config/bfin/bfin-modes.def
  1eabce9edbddf4a80ba52e9b6b5fc6f3  gcc/config/bfin/bfin-opts.h
  cfe2bf7471fe9cb6d151fbeb919330d2  gcc/config/bfin/bfin-protos.h
! f58af4c8479e0b2da43a851003b17a84  gcc/config/bfin/bfin.cc
  962eaa37f4faa425f050c048e42cb991  gcc/config/bfin/bfin.h
  f489763f8e5a7f88f2a8f5bb135b723d  gcc/config/bfin/bfin.md
  c6cd65b0ab67c5768f013d79632f8052  gcc/config/bfin/bfin.opt
*************** ad18246e4f84f80e236ae641d17726af  gcc/co
*** 3835,3841 ****
  335fabdbef31e3ffd5840adc16f3e127  gcc/config/c6x/c6x-sched.md.in
  c30431427fb0a44fad713fd21a91863d  gcc/config/c6x/c6x-tables.opt
  b536f834b2933bc77c0d771ff150df59  gcc/config/c6x/c6x-tables.opt.urls
! 3173d3dfbee6ec80a2d2a179ed199bfb  gcc/config/c6x/c6x.cc
  5b932bcbc60eb3f1ded7fc34f305d850  gcc/config/c6x/c6x.h
  61064f33aa69b68eeb1b39bdfba53cbc  gcc/config/c6x/c6x.md
  e5bf8a6edeb915072216f3de28271bd8  gcc/config/c6x/c6x.opt
--- 3832,3838 ----
  335fabdbef31e3ffd5840adc16f3e127  gcc/config/c6x/c6x-sched.md.in
  c30431427fb0a44fad713fd21a91863d  gcc/config/c6x/c6x-tables.opt
  b536f834b2933bc77c0d771ff150df59  gcc/config/c6x/c6x-tables.opt.urls
! c93f2ec23358744560217bd1d29f154e  gcc/config/c6x/c6x.cc
  5b932bcbc60eb3f1ded7fc34f305d850  gcc/config/c6x/c6x.h
  61064f33aa69b68eeb1b39bdfba53cbc  gcc/config/c6x/c6x.md
  e5bf8a6edeb915072216f3de28271bd8  gcc/config/c6x/c6x.opt
*************** aa43c35c0ae5db419161044c2dd507a8  gcc/co
*** 3857,3865 ****
  c8b88ac6c665fd095189745df437cf09  gcc/config/cris/cris-modes.def
  9e4259629bc50331463e6d4b3dd2abcd  gcc/config/cris/cris-passes.def
  8df4296499456e2e0541e3686a4574e2  gcc/config/cris/cris-protos.h
! 00722ed1eb61536a1500313d1b88ddea  gcc/config/cris/cris.cc
  6e63163a3a0583da3f0cde44fbd537c1  gcc/config/cris/cris.h
! 777437c05e0d5c5098624f713e52639b  gcc/config/cris/cris.md
  0dc2ffb20f6fe00475b86380239022e5  gcc/config/cris/cris.opt
  50946b44376ed14014403951a60a6de6  gcc/config/cris/cris.opt.urls
  3ca310d45dcfeb840e4527e07bf9925c  gcc/config/cris/elf.opt
--- 3854,3862 ----
  c8b88ac6c665fd095189745df437cf09  gcc/config/cris/cris-modes.def
  9e4259629bc50331463e6d4b3dd2abcd  gcc/config/cris/cris-passes.def
  8df4296499456e2e0541e3686a4574e2  gcc/config/cris/cris-protos.h
! 8f05959de1ffa7f1fc927c231870ba88  gcc/config/cris/cris.cc
  6e63163a3a0583da3f0cde44fbd537c1  gcc/config/cris/cris.h
! 51de895e261d869e46e1c2e2179f2294  gcc/config/cris/cris.md
  0dc2ffb20f6fe00475b86380239022e5  gcc/config/cris/cris.opt
  50946b44376ed14014403951a60a6de6  gcc/config/cris/cris.opt.urls
  3ca310d45dcfeb840e4527e07bf9925c  gcc/config/cris/elf.opt
*************** b7c9f60c6322862466d2e753d04385e3  gcc/co
*** 3873,3879 ****
  1ed7ff18fc2781b9ed743aeea9fed8dc  gcc/config/csky/csky-linux-elf.h
  e6669d57ebd0f18245040b982a741f22  gcc/config/csky/csky-modes.def
  4ae2b931fa26b2e93a823c7535e1d5ac  gcc/config/csky/csky-protos.h
! 0be3d32d7318976ad0320936bf02128f  gcc/config/csky/csky.cc
  1066c7817dd8d4a7ecc2bbe3b35529f7  gcc/config/csky/csky.h
  ea8649fb89342796285f199c5e07568d  gcc/config/csky/csky.md
  23b0297f4918f983a81b94097281273f  gcc/config/csky/csky.opt
--- 3870,3876 ----
  1ed7ff18fc2781b9ed743aeea9fed8dc  gcc/config/csky/csky-linux-elf.h
  e6669d57ebd0f18245040b982a741f22  gcc/config/csky/csky-modes.def
  4ae2b931fa26b2e93a823c7535e1d5ac  gcc/config/csky/csky-protos.h
! 8d54e4372b21558b89d608698ba72566  gcc/config/csky/csky.cc
  1066c7817dd8d4a7ecc2bbe3b35529f7  gcc/config/csky/csky.h
  ea8649fb89342796285f199c5e07568d  gcc/config/csky/csky.md
  23b0297f4918f983a81b94097281273f  gcc/config/csky/csky.opt
*************** ad8db21c57cea738b7569b3a397f7034  gcc/co
*** 3931,3943 ****
  918b8e94f764750eb5ecc6a461644e76  gcc/config/epiphany/epiphany_intrinsics.h
  b100c32a316867d7483ec48a85ca7024  gcc/config/epiphany/mode-switch-use.cc
  4fd90ed9d239babe05688d8b7cc22b61  gcc/config/epiphany/predicates.md
! 7bf11313092085fcabef4e44aaeeaa28  gcc/config/epiphany/resolve-sw-modes.cc
  901a869259200b9994e7b5c794ba6ab3  gcc/config/epiphany/rtems.h
  06996f96e2b70379eb4d27faf5d3bf0a  gcc/config/epiphany/t-epiphany
  082c28265b512a8daab31e7e4ff1acf3  gcc/config/flat.h
  415766d540ca9434f97c5e2a1b9849d5  gcc/config/fr30/constraints.md
  4354ff40d0869ca4a871c040b5a321bd  gcc/config/fr30/fr30-protos.h
! 4e943a3bf40aa7b271590e6be529a7bf  gcc/config/fr30/fr30.cc
  80a1bd8132914b82d9d916f10cf7b0e9  gcc/config/fr30/fr30.h
  5872a50078894c460d7fb8686afc9a1f  gcc/config/fr30/fr30.md
  d9e8431f0652287f8958cac770fc5aa5  gcc/config/fr30/fr30.opt
--- 3928,3940 ----
  918b8e94f764750eb5ecc6a461644e76  gcc/config/epiphany/epiphany_intrinsics.h
  b100c32a316867d7483ec48a85ca7024  gcc/config/epiphany/mode-switch-use.cc
  4fd90ed9d239babe05688d8b7cc22b61  gcc/config/epiphany/predicates.md
! 284021ece8b68459c537ddb6662292bd  gcc/config/epiphany/resolve-sw-modes.cc
  901a869259200b9994e7b5c794ba6ab3  gcc/config/epiphany/rtems.h
  06996f96e2b70379eb4d27faf5d3bf0a  gcc/config/epiphany/t-epiphany
  082c28265b512a8daab31e7e4ff1acf3  gcc/config/flat.h
  415766d540ca9434f97c5e2a1b9849d5  gcc/config/fr30/constraints.md
  4354ff40d0869ca4a871c040b5a321bd  gcc/config/fr30/fr30-protos.h
! dca6709d3a396190ea201b2e032881af  gcc/config/fr30/fr30.cc
  80a1bd8132914b82d9d916f10cf7b0e9  gcc/config/fr30/fr30.h
  5872a50078894c460d7fb8686afc9a1f  gcc/config/fr30/fr30.md
  d9e8431f0652287f8958cac770fc5aa5  gcc/config/fr30/fr30.opt
*************** b4bfc5fa6c82a78a53970e852b99aded  gcc/co
*** 3956,3964 ****
  504aefe4992dc8ded4a3876f8bae845e  gcc/config/frv/frv-modes.def
  031bc27687a6c91afb87e0dd064637d3  gcc/config/frv/frv-opts.h
  783561124f3aba86ff86d0b9fbdf8ec9  gcc/config/frv/frv-protos.h
! 4229f643e80992a0e76c503594b7c47d  gcc/config/frv/frv.cc
  8216c5e1f565ba24f33985dec6e8c5c7  gcc/config/frv/frv.h
! 029630a9fd4b9c3604a481b7daee2598  gcc/config/frv/frv.md
  554e7de53e31a91662105c72f48c518f  gcc/config/frv/frv.opt
  ef8faf84b26737662fc7790f117b55bc  gcc/config/frv/frv.opt.urls
  7e598f3d0d1ad9d35f9a121f698bbe17  gcc/config/frv/linux.h
--- 3953,3961 ----
  504aefe4992dc8ded4a3876f8bae845e  gcc/config/frv/frv-modes.def
  031bc27687a6c91afb87e0dd064637d3  gcc/config/frv/frv-opts.h
  783561124f3aba86ff86d0b9fbdf8ec9  gcc/config/frv/frv-protos.h
! d4c5b10d1adb3467a0e77c0e06bf912f  gcc/config/frv/frv.cc
  8216c5e1f565ba24f33985dec6e8c5c7  gcc/config/frv/frv.h
! b409233d167bb83bfd1a049b856901b7  gcc/config/frv/frv.md
  554e7de53e31a91662105c72f48c518f  gcc/config/frv/frv.opt
  ef8faf84b26737662fc7790f117b55bc  gcc/config/frv/frv.opt.urls
  7e598f3d0d1ad9d35f9a121f698bbe17  gcc/config/frv/linux.h
*************** dc9cd2299212581b55dc79c754b1f032  gcc/co
*** 3992,3998 ****
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
  25e18c4eee940de72eb16aff9b3dba27  gcc/config/gcn/gcn-valu.md
! aa79eca971c9031f1f324c86bca237f5  gcc/config/gcn/gcn.cc
  c588bbc37daa440397eb034026bd06f5  gcc/config/gcn/gcn.h
  02941219664b5bf4a7b3308e467c4c65  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
--- 3989,3995 ----
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
  25e18c4eee940de72eb16aff9b3dba27  gcc/config/gcn/gcn-valu.md
! 06f8208861e6f3ef91e002b7e986016e  gcc/config/gcn/gcn.cc
  c588bbc37daa440397eb034026bd06f5  gcc/config/gcn/gcn.h
  02941219664b5bf4a7b3308e467c4c65  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
*************** d3fb594d11281112ff8d8f304a000c4e  gcc/co
*** 4184,4193 ****
  b1d3b888c9cd80df50837a2c205587f2  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! d107f5e5a50d63132e88d2f92a6a05f3  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! a5086796596eb262eebe02e357566970  gcc/config/i386/i386-features.cc
! fb530c14c39bd893098ee7672f916548  gcc/config/i386/i386-features.h
  6eb6541c33da88d0910200287b50cdff  gcc/config/i386/i386-isa.def
  795643c7d23acf02568d7fa7acad0138  gcc/config/i386/i386-modes.def
  a97f792ecc42136eee12cf1271ed8254  gcc/config/i386/i386-options.cc
--- 4181,4190 ----
  b1d3b888c9cd80df50837a2c205587f2  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! a1dfdb55f640d8ab83744394b890ee36  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! a2d9d361545bc99dfd0850cfdf4008c1  gcc/config/i386/i386-features.cc
! 1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
  6eb6541c33da88d0910200287b50cdff  gcc/config/i386/i386-isa.def
  795643c7d23acf02568d7fa7acad0138  gcc/config/i386/i386-modes.def
  a97f792ecc42136eee12cf1271ed8254  gcc/config/i386/i386-options.cc
*************** a97f792ecc42136eee12cf1271ed8254  gcc/co
*** 4198,4204 ****
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 223913cf535b646f8238ea58457783b8  gcc/config/i386/i386.cc
  e3623d578e96daf8701066579cfb6dd7  gcc/config/i386/i386.h
  16210ad84699ffa38621d9d560fd063f  gcc/config/i386/i386.md
  ea8b7d9e98fea8671919d0f7fad86757  gcc/config/i386/i386.opt
--- 4195,4201 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! dad57426fb9648de613243577895ec79  gcc/config/i386/i386.cc
  e3623d578e96daf8701066579cfb6dd7  gcc/config/i386/i386.h
  16210ad84699ffa38621d9d560fd063f  gcc/config/i386/i386.md
  ea8b7d9e98fea8671919d0f7fad86757  gcc/config/i386/i386.opt
*************** a1aa2760dafd21db8bfbe79f8c4bcfa1  gcc/co
*** 4342,4348 ****
  4df0e9ba2dfafa2d5109b39cf13cbd19  gcc/config/ia64/ia64-modes.def
  f3c2c84ac99eb84969bb9952ee3bcb7f  gcc/config/ia64/ia64-opts.h
  7d7403d445b6f38f01052779ab1aa51f  gcc/config/ia64/ia64-protos.h
! f95256ef643781b06514de24b4796d67  gcc/config/ia64/ia64.cc
  cd2d7209d26cd7cd5a37a4a0d74960c8  gcc/config/ia64/ia64.h
  e7a3136b64591d1141a08e1e05a8b378  gcc/config/ia64/ia64.md
  867fd3016d695a0a0b9e3a80dffccbff  gcc/config/ia64/ia64.opt
--- 4339,4345 ----
  4df0e9ba2dfafa2d5109b39cf13cbd19  gcc/config/ia64/ia64-modes.def
  f3c2c84ac99eb84969bb9952ee3bcb7f  gcc/config/ia64/ia64-opts.h
  7d7403d445b6f38f01052779ab1aa51f  gcc/config/ia64/ia64-protos.h
! e1ac0fde2b8353b52eedeb152d799e11  gcc/config/ia64/ia64.cc
  cd2d7209d26cd7cd5a37a4a0d74960c8  gcc/config/ia64/ia64.h
  e7a3136b64591d1141a08e1e05a8b378  gcc/config/ia64/ia64.md
  867fd3016d695a0a0b9e3a80dffccbff  gcc/config/ia64/ia64.opt
*************** d3ad067b1fa15bbce42fd3cc4499966e  gcc/co
*** 4434,4440 ****
  688cd325dbeb853413435f029e712cb2  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! f0a4c6e5a7c0cbc0621c38506eb5fabf  gcc/config/loongarch/loongarch.cc
  cac7a4f19361731647870d2210078a9e  gcc/config/loongarch/loongarch.h
  144c058839db085ef1f40f5de915226d  gcc/config/loongarch/loongarch.md
  bcc951e237d5501fc2acd6ef3141724c  gcc/config/loongarch/loongarch.opt
--- 4431,4437 ----
  688cd325dbeb853413435f029e712cb2  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! 95b1d7dc526a359b4045e24d14d4206f  gcc/config/loongarch/loongarch.cc
  cac7a4f19361731647870d2210078a9e  gcc/config/loongarch/loongarch.h
  144c058839db085ef1f40f5de915226d  gcc/config/loongarch/loongarch.md
  bcc951e237d5501fc2acd6ef3141724c  gcc/config/loongarch/loongarch.opt
*************** a4f73e01dbf31a10c3ea1b723c70d9cb  gcc/co
*** 4477,4485 ****
  381f7ae32956c45ae1f8aac2c4111c8d  gcc/config/m32r/little.h
  1a764b5c8c74e3114f0b426347532524  gcc/config/m32r/m32r-opts.h
  2df0c03d006b179f844ba00be1de673f  gcc/config/m32r/m32r-protos.h
! 4778cb545babb95dd2705345ae086e78  gcc/config/m32r/m32r.cc
  804754da591a3688e89a687f1dd6067a  gcc/config/m32r/m32r.h
! ca2ef8d7fd1b50c4a4978efa611f7e98  gcc/config/m32r/m32r.md
  f15b71db5e403cb0edd0836e7fd15b15  gcc/config/m32r/m32r.opt
  1b619e144313c0fbf5062c63561ad744  gcc/config/m32r/m32r.opt.urls
  fbc84e3917cc27d064793bd1d5d9c5e9  gcc/config/m32r/predicates.md
--- 4474,4482 ----
  381f7ae32956c45ae1f8aac2c4111c8d  gcc/config/m32r/little.h
  1a764b5c8c74e3114f0b426347532524  gcc/config/m32r/m32r-opts.h
  2df0c03d006b179f844ba00be1de673f  gcc/config/m32r/m32r-protos.h
! 66018a531b6e2a05a2d3d745b014cfbc  gcc/config/m32r/m32r.cc
  804754da591a3688e89a687f1dd6067a  gcc/config/m32r/m32r.h
! a1993567fe235f33026bd6ed92971b1f  gcc/config/m32r/m32r.md
  f15b71db5e403cb0edd0836e7fd15b15  gcc/config/m32r/m32r.opt
  1b619e144313c0fbf5062c63561ad744  gcc/config/m32r/m32r.opt.urls
  fbc84e3917cc27d064793bd1d5d9c5e9  gcc/config/m32r/predicates.md
*************** fd5c21f63f7562ef85f6d3cd072acc59  gcc/co
*** 4500,4508 ****
  6cf083651ed03428260b0f2e365a0e2b  gcc/config/m68k/m68k-protos.h
  e237c8634d1f5c3ea463cbfea4dc55e6  gcc/config/m68k/m68k-tables.opt
  76abf9d767893fa61fddacca5cea079e  gcc/config/m68k/m68k-tables.opt.urls
! 32b45053a1f55f8d27927a031e15c40d  gcc/config/m68k/m68k.cc
  fb041be1d836d497907055646a167985  gcc/config/m68k/m68k.h
! c2fa3140ba9e1fc36972f82ae7f7c146  gcc/config/m68k/m68k.md
  1a76a5cfb488f53d1c15e12fd9d5cc7b  gcc/config/m68k/m68k.opt
  075827f8519c6c5079c5b39aaa1f8d09  gcc/config/m68k/m68k.opt.urls
  cda670c892463bcaa4f341cfef04ad73  gcc/config/m68k/m68kelf.h
--- 4497,4505 ----
  6cf083651ed03428260b0f2e365a0e2b  gcc/config/m68k/m68k-protos.h
  e237c8634d1f5c3ea463cbfea4dc55e6  gcc/config/m68k/m68k-tables.opt
  76abf9d767893fa61fddacca5cea079e  gcc/config/m68k/m68k-tables.opt.urls
! 5104f436bd7cfa14669224efef2624e3  gcc/config/m68k/m68k.cc
  fb041be1d836d497907055646a167985  gcc/config/m68k/m68k.h
! 38f76441c0d9b51f0d9eeb7e8c916e59  gcc/config/m68k/m68k.md
  1a76a5cfb488f53d1c15e12fd9d5cc7b  gcc/config/m68k/m68k.opt
  075827f8519c6c5079c5b39aaa1f8d09  gcc/config/m68k/m68k.opt.urls
  cda670c892463bcaa4f341cfef04ad73  gcc/config/m68k/m68kelf.h
*************** d2676839c4d7a7bcd706a386c029aea2  gcc/co
*** 4540,4546 ****
  cd06662d679aac52aa61b8507723384a  gcc/config/microblaze/linux.h
  9bc1818e3b430b758bafdf04bac27f5b  gcc/config/microblaze/microblaze-c.cc
  c1cdfa70252d5e45a9df69ddc7a1ddcb  gcc/config/microblaze/microblaze-protos.h
! c10b23d21e0ba84769dd455a1393a6d7  gcc/config/microblaze/microblaze.cc
  0a4fb603eb9a1c6e31bb8fa7e38b16d1  gcc/config/microblaze/microblaze.h
  b3a2d37f3594f70e239fba70728cc641  gcc/config/microblaze/microblaze.md
  3da1e85fbc11c0a5b746cb77b96a06f3  gcc/config/microblaze/microblaze.opt
--- 4537,4543 ----
  cd06662d679aac52aa61b8507723384a  gcc/config/microblaze/linux.h
  9bc1818e3b430b758bafdf04bac27f5b  gcc/config/microblaze/microblaze-c.cc
  c1cdfa70252d5e45a9df69ddc7a1ddcb  gcc/config/microblaze/microblaze-protos.h
! fb4fce2ce2666749d7629dcae411e92d  gcc/config/microblaze/microblaze.cc
  0a4fb603eb9a1c6e31bb8fa7e38b16d1  gcc/config/microblaze/microblaze.h
  b3a2d37f3594f70e239fba70728cc641  gcc/config/microblaze/microblaze.md
  3da1e85fbc11c0a5b746cb77b96a06f3  gcc/config/microblaze/microblaze.opt
*************** f973e381561e255314508a55abacf3fa  gcc/co
*** 4620,4626 ****
  beaf066ed06870bef361adf40e122f78  gcc/config/mips/mips-ps-3d.md
  453ffe6fe7bd722fe86fcbd20ad8c571  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
! aece97ba6f9c88c3a61b43d2e9b0e17b  gcc/config/mips/mips.cc
  88dd001644c78b094085e14e139cfa6c  gcc/config/mips/mips.h
  e60b3aa2a8b65b4efe7979085ee6e9ad  gcc/config/mips/mips.md
  fe191aedf5f44f1529c770fa027b02bf  gcc/config/mips/mips.opt
--- 4617,4623 ----
  beaf066ed06870bef361adf40e122f78  gcc/config/mips/mips-ps-3d.md
  453ffe6fe7bd722fe86fcbd20ad8c571  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
! ada8015fb5b7a28ae8e6000f7cff5ba5  gcc/config/mips/mips.cc
  88dd001644c78b094085e14e139cfa6c  gcc/config/mips/mips.h
  e60b3aa2a8b65b4efe7979085ee6e9ad  gcc/config/mips/mips.md
  fe191aedf5f44f1529c770fa027b02bf  gcc/config/mips/mips.opt
*************** ef36db0d824c1fce287aecb1ac5cb1e1  gcc/co
*** 4781,4803 ****
  90d1151ce76e074965b7dd19b41dee77  gcc/config/newlib-stdint.h
  1d229323b064da931d6ff210f6032910  gcc/config/nvptx/gen-copyright.sh
  6d78d2b28f8642186a82b3e9097dfab1  gcc/config/nvptx/gen-h.sh
! 5c4eb992f8cc08467bb557015c8edd61  gcc/config/nvptx/gen-multilib-matches-tests
  2f6253172cebc299090eb3ff21bce59d  gcc/config/nvptx/gen-multilib-matches.sh
  a675b50ac99c3589fbc9347a2c8b267f  gcc/config/nvptx/gen-omp-device-properties.sh
  4fa4386427965e8b1d155fd9e24a7b2e  gcc/config/nvptx/gen-opt.sh
  30ef320ec8a8c6a2c2cb2c7249e847d4  gcc/config/nvptx/mkoffload.cc
  5bdd02ea89901317102b35ecc453fb67  gcc/config/nvptx/nvptx-c.cc
! 1625a257c06503b0e90277a2b1f6bb35  gcc/config/nvptx/nvptx-gen.h
! e3fa2b71ca4e2b274332797169d9cc6b  gcc/config/nvptx/nvptx-gen.opt
  bbb2a2cf5c79743f967571a1b148fa76  gcc/config/nvptx/nvptx-gen.opt.urls
  83dfca9e2eb78c0e3ab66a3ff9681ad3  gcc/config/nvptx/nvptx-modes.def
! 50f24986303ef2c5a2007408005d7c05  gcc/config/nvptx/nvptx-opts.h
  1f3aa1665145f0388933dc9ee8296ad2  gcc/config/nvptx/nvptx-protos.h
! 4e3e09c3aa0f7484ff7ec5e5138fb4bf  gcc/config/nvptx/nvptx-sm.def
! 8b90c0d2ed6f3be9bd4b29e48c10952e  gcc/config/nvptx/nvptx.cc
! 531b64adb9fcd853596d40ff52c855bd  gcc/config/nvptx/nvptx.h
  787ea1be2367cf809e1f013766e965cd  gcc/config/nvptx/nvptx.md
! 58c376bb6ed1d0b00c3dfd224327d295  gcc/config/nvptx/nvptx.opt
  53bbd40023718a97e82988becbb44969  gcc/config/nvptx/nvptx.opt.urls
  d83f4112ba6c9557b88879d66412590e  gcc/config/nvptx/offload.h
  e5b7e572a77f7a504a29fda1e6e163d9  gcc/config/nvptx/t-nvptx
--- 4778,4800 ----
  90d1151ce76e074965b7dd19b41dee77  gcc/config/newlib-stdint.h
  1d229323b064da931d6ff210f6032910  gcc/config/nvptx/gen-copyright.sh
  6d78d2b28f8642186a82b3e9097dfab1  gcc/config/nvptx/gen-h.sh
! ddd6087651a73d039e839dcd0722283c  gcc/config/nvptx/gen-multilib-matches-tests
  2f6253172cebc299090eb3ff21bce59d  gcc/config/nvptx/gen-multilib-matches.sh
  a675b50ac99c3589fbc9347a2c8b267f  gcc/config/nvptx/gen-omp-device-properties.sh
  4fa4386427965e8b1d155fd9e24a7b2e  gcc/config/nvptx/gen-opt.sh
  30ef320ec8a8c6a2c2cb2c7249e847d4  gcc/config/nvptx/mkoffload.cc
  5bdd02ea89901317102b35ecc453fb67  gcc/config/nvptx/nvptx-c.cc
! c3a62cd55d11c3d62d77946f40fa616a  gcc/config/nvptx/nvptx-gen.h
! 562c1684f8b31591ceaad426aade9a27  gcc/config/nvptx/nvptx-gen.opt
  bbb2a2cf5c79743f967571a1b148fa76  gcc/config/nvptx/nvptx-gen.opt.urls
  83dfca9e2eb78c0e3ab66a3ff9681ad3  gcc/config/nvptx/nvptx-modes.def
! dee36f7421044be0b935f6af7f99d925  gcc/config/nvptx/nvptx-opts.h
  1f3aa1665145f0388933dc9ee8296ad2  gcc/config/nvptx/nvptx-protos.h
! baa310414bc4fbed87b67a42c0a547cc  gcc/config/nvptx/nvptx-sm.def
! 8d25561ae53c04d6293c5269092249bf  gcc/config/nvptx/nvptx.cc
! d0e846d8e5d86b55f946852f2529639f  gcc/config/nvptx/nvptx.h
  787ea1be2367cf809e1f013766e965cd  gcc/config/nvptx/nvptx.md
! 20cbac6e3f6e6deeb540b78ec54a413a  gcc/config/nvptx/nvptx.opt
  53bbd40023718a97e82988becbb44969  gcc/config/nvptx/nvptx.opt.urls
  d83f4112ba6c9557b88879d66412590e  gcc/config/nvptx/offload.h
  e5b7e572a77f7a504a29fda1e6e163d9  gcc/config/nvptx/t-nvptx
*************** f2528020fcdc72755829904c1e2bd9cd  gcc/co
*** 4816,4822 ****
  8975a99baca4214035d5805cff0cbf4c  gcc/config/or1k/linux.h
  8749d9b447ea37bc29800c0bf265c6e2  gcc/config/or1k/or1k-opts.h
  97baa752f8b46ebaabe66d92886e19a2  gcc/config/or1k/or1k-protos.h
! 71933f5ebf1d159bc2d354fa61d64560  gcc/config/or1k/or1k.cc
  fcbfb3ff3577f95c15cf20ae1c95b269  gcc/config/or1k/or1k.h
  f5e7694d32cf1092a0353e9cf60d09d4  gcc/config/or1k/or1k.md
  3f0f02c02d2295376f66ab0666242364  gcc/config/or1k/or1k.opt
--- 4813,4819 ----
  8975a99baca4214035d5805cff0cbf4c  gcc/config/or1k/linux.h
  8749d9b447ea37bc29800c0bf265c6e2  gcc/config/or1k/or1k-opts.h
  97baa752f8b46ebaabe66d92886e19a2  gcc/config/or1k/or1k-protos.h
! ba4527959028a093cad8694a308a8a98  gcc/config/or1k/or1k.cc
  fcbfb3ff3577f95c15cf20ae1c95b269  gcc/config/or1k/or1k.h
  f5e7694d32cf1092a0353e9cf60d09d4  gcc/config/or1k/or1k.md
  3f0f02c02d2295376f66ab0666242364  gcc/config/or1k/or1k.opt
*************** c7d4fb30a2fe78bcdb23db8d74da3746  gcc/co
*** 4849,4855 ****
  ede4cffb79f5496c4063328b9d126f26  gcc/config/pa/pa-openbsd.h
  cd1b48d66fffc5f91a26b160085fbd1e  gcc/config/pa/pa-opts.h
  596c088c93babeea4848ba2aed2eb6b0  gcc/config/pa/pa-protos.h
! e331e7449b7ec4ba3834db246f482600  gcc/config/pa/pa.cc
  f1b444334b18e47c3fd2604c6594c45d  gcc/config/pa/pa.h
  5ad34ac7732965ac669deb50e30e698d  gcc/config/pa/pa.md
  3fe76eeefa8fabdfab333fb43efecaa8  gcc/config/pa/pa.opt
--- 4846,4852 ----
  ede4cffb79f5496c4063328b9d126f26  gcc/config/pa/pa-openbsd.h
  cd1b48d66fffc5f91a26b160085fbd1e  gcc/config/pa/pa-opts.h
  596c088c93babeea4848ba2aed2eb6b0  gcc/config/pa/pa-protos.h
! 87b5ccca0556ed085f25a446d6ab4051  gcc/config/pa/pa.cc
  f1b444334b18e47c3fd2604c6594c45d  gcc/config/pa/pa.h
  5ad34ac7732965ac669deb50e30e698d  gcc/config/pa/pa.md
  3fe76eeefa8fabdfab333fb43efecaa8  gcc/config/pa/pa.opt
*************** a47c1d9626258e961f58aaa938dff7c0  gcc/co
*** 4888,4901 ****
  3806bf704354931780e8f243f2ac4b5b  gcc/config/pru/pru-passes.def
  600befe49f45ad64d985dc8011379856  gcc/config/pru/pru-pragma.cc
  bd2f18deee7e7457f0e33c0ef25eda80  gcc/config/pru/pru-protos.h
! d7756e2e4a0e124c9cec2515cc7c90e4  gcc/config/pru/pru.cc
  ea166a4ea21e8f1dc577c24b5a24d65c  gcc/config/pru/pru.h
  147f9818d81f5ecaa02b09824ca89f65  gcc/config/pru/pru.md
  d6da8f84e5835bd14f146fc765bcb39d  gcc/config/pru/pru.opt
  cd13b51383c99c08d86250b61fed3805  gcc/config/pru/pru.opt.urls
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a5e691ce14017f2a89283ed510bb78fd  gcc/config/riscv/arch-canonicalize
! 16012b91acb33dc648282832bd8ef1b5  gcc/config/riscv/autovec-opt.md
  4032274539da6915927b3fb611848f38  gcc/config/riscv/autovec.md
  a76fc69ac639b44a9d8c4ec7520c0e75  gcc/config/riscv/bitmanip.md
  0a28e5e046394c81a6a87e3ee05c1df9  gcc/config/riscv/constraints.md
--- 4885,4898 ----
  3806bf704354931780e8f243f2ac4b5b  gcc/config/pru/pru-passes.def
  600befe49f45ad64d985dc8011379856  gcc/config/pru/pru-pragma.cc
  bd2f18deee7e7457f0e33c0ef25eda80  gcc/config/pru/pru-protos.h
! 31d45a1306a4a7355fdbff5baa47684f  gcc/config/pru/pru.cc
  ea166a4ea21e8f1dc577c24b5a24d65c  gcc/config/pru/pru.h
  147f9818d81f5ecaa02b09824ca89f65  gcc/config/pru/pru.md
  d6da8f84e5835bd14f146fc765bcb39d  gcc/config/pru/pru.opt
  cd13b51383c99c08d86250b61fed3805  gcc/config/pru/pru.opt.urls
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a5e691ce14017f2a89283ed510bb78fd  gcc/config/riscv/arch-canonicalize
! 43b890ca35154f45c415b5830719600a  gcc/config/riscv/autovec-opt.md
  4032274539da6915927b3fb611848f38  gcc/config/riscv/autovec.md
  a76fc69ac639b44a9d8c4ec7520c0e75  gcc/config/riscv/bitmanip.md
  0a28e5e046394c81a6a87e3ee05c1df9  gcc/config/riscv/constraints.md
*************** d404c19d5b1a2aca0a73917bb692bd96  gcc/co
*** 4904,4909 ****
--- 4901,4908 ----
  a8964e5c7fad78fa42fc5b8f0dc2e91b  gcc/config/riscv/crypto.md
  70cc6640001ff23ac9b647ea784ffb2b  gcc/config/riscv/elf.h
  9a5e3c714ef42f079425c3c0af8184dc  gcc/config/riscv/freebsd.h
+ 8b83b20385b0cc79dbd5378c1df1bb6a  gcc/config/riscv/gen-riscv-ext-opt.cc
+ 05875760265091a14073c94ceb2b4592  gcc/config/riscv/gen-riscv-ext-texi.cc
  fdf40414be0404faa2f689ccff02d68d  gcc/config/riscv/generic-ooo.md
  a124ceec225b4a292b25b31a9a635a5e  gcc/config/riscv/generic-vector-ooo.md
  b7e955ddfed9efbb0296ef639c095e2a  gcc/config/riscv/generic.md
*************** a3d3fa9142d4e2ed34ead146941c574a  gcc/co
*** 4917,4962 ****
  524361cff2d291f40d597f932bdcb3d0  gcc/config/riscv/predicates.md
  d7a63bbbf6653fc311084e8bb09d713b  gcc/config/riscv/riscv-avlprop.cc
  3b5651b95f6a076ccd28e73bae600e52  gcc/config/riscv/riscv-builtins.cc
! f85cbab1d6c91f626b6e4c56c31f8eb3  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
  f039a446b908189e7bac54e9eed4aa0e  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  b467d35485b39b25863e918609a322d0  gcc/config/riscv/riscv-ftypes.def
  b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
! 17bdf7a6151e24ef0620d05b563759d1  gcc/config/riscv/riscv-opts.h
  2c59654f5f7fe2689efd370c0441b6bd  gcc/config/riscv/riscv-passes.def
  02bd5d07b4bddc7504151f3f1e2aee01  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  8599f55379a8c8fc0b569c7401645a66  gcc/config/riscv/riscv-selftests.cc
! 4c94b064f758f7bdf05e99a02b8e15ed  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
  5934e743da72bdc74e1d53f049b127fc  gcc/config/riscv/riscv-string.cc
! 83d157e0773f265cbf4c3c1da7f147e9  gcc/config/riscv/riscv-subset.h
  be3e0da2403121c429e21501de9c9b5f  gcc/config/riscv/riscv-target-attr.cc
  4cbbf5da024adfc46f4d953b73b5e9b3  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
! c5d0fc7f3c761408e16bbc7f6f2aa300  gcc/config/riscv/riscv-vect-permconst.cc
  8bb68ed754e01cc6cbd31b250968d7f6  gcc/config/riscv/riscv-vector-builtins-bases.cc
  689f453a4cdf7fa3e64a7f4bfba8f7dd  gcc/config/riscv/riscv-vector-builtins-bases.h
  bdc5f6caf56fd0411faf705e9c32ccd4  gcc/config/riscv/riscv-vector-builtins-functions.def
  0227723636a8ad9cf968084248b5aa7b  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  7e178dc137007d4ca1aaaaf29940c12f  gcc/config/riscv/riscv-vector-builtins-shapes.h
  83165bddb05b2721bc426bd1fe3ec4c0  gcc/config/riscv/riscv-vector-builtins-types.def
! 54b6fa3d472102d0e97af63d437cf5dd  gcc/config/riscv/riscv-vector-builtins.cc
  74c291180c302842c646af24c77d184c  gcc/config/riscv/riscv-vector-builtins.def
  f75c79d146d75e5489bb9983fcdd05f6  gcc/config/riscv/riscv-vector-builtins.h
  7a7cc1051558e6d9890d9fc402d76691  gcc/config/riscv/riscv-vector-costs.cc
  bd7a0d0d03ad4788f6cf7579df11a66e  gcc/config/riscv/riscv-vector-costs.h
  f51037a9e437f8e9ce7215b2da5ad4e2  gcc/config/riscv/riscv-vector-switch.def
! 9a0be0e3c4d4b0eec09eef7dee2a028a  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! cd2389592a4623623274e8541e006f52  gcc/config/riscv/riscv.cc
  1153302a8d65cedebba8e1a3f67931b2  gcc/config/riscv/riscv.h
  03c4b28769423854beeddf4f8fc50582  gcc/config/riscv/riscv.md
! 976a4e1262545091aeff1fdadb127c0d  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
  a8044652cefd826404f261518f9e2321  gcc/config/riscv/riscv_crypto.h
--- 4916,4968 ----
  524361cff2d291f40d597f932bdcb3d0  gcc/config/riscv/predicates.md
  d7a63bbbf6653fc311084e8bb09d713b  gcc/config/riscv/riscv-avlprop.cc
  3b5651b95f6a076ccd28e73bae600e52  gcc/config/riscv/riscv-builtins.cc
! 815f99489b9dbc6b6a08ca988978b261  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
  f039a446b908189e7bac54e9eed4aa0e  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
+ a8a293d3f8f01367abc68e7556a51898  gcc/config/riscv/riscv-ext-sifive.def
+ 85fb34f0d0de09dc83b4df6f525d78f9  gcc/config/riscv/riscv-ext-thead.def
+ 5551f756c3aae6dce60511f7f52efa5c  gcc/config/riscv/riscv-ext-ventana.def
+ 885aec0bfffaa704ac0566a62fa5e613  gcc/config/riscv/riscv-ext.def
+ abebc96ebce10e6cdf4f183d4fe9253f  gcc/config/riscv/riscv-ext.opt
+ 8463b74f5d66e1a7f0d58a7ae087d8ad  gcc/config/riscv/riscv-ext.opt.urls
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  b467d35485b39b25863e918609a322d0  gcc/config/riscv/riscv-ftypes.def
  b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
! d92f21798d5d0f0004b88f9020133f13  gcc/config/riscv/riscv-opts.h
  2c59654f5f7fe2689efd370c0441b6bd  gcc/config/riscv/riscv-passes.def
  02bd5d07b4bddc7504151f3f1e2aee01  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  8599f55379a8c8fc0b569c7401645a66  gcc/config/riscv/riscv-selftests.cc
! da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
  5934e743da72bdc74e1d53f049b127fc  gcc/config/riscv/riscv-string.cc
! f2f90e0d4af72ad1c79aba2821be11b4  gcc/config/riscv/riscv-subset.h
  be3e0da2403121c429e21501de9c9b5f  gcc/config/riscv/riscv-target-attr.cc
  4cbbf5da024adfc46f4d953b73b5e9b3  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
! c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
  8bb68ed754e01cc6cbd31b250968d7f6  gcc/config/riscv/riscv-vector-builtins-bases.cc
  689f453a4cdf7fa3e64a7f4bfba8f7dd  gcc/config/riscv/riscv-vector-builtins-bases.h
  bdc5f6caf56fd0411faf705e9c32ccd4  gcc/config/riscv/riscv-vector-builtins-functions.def
  0227723636a8ad9cf968084248b5aa7b  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  7e178dc137007d4ca1aaaaf29940c12f  gcc/config/riscv/riscv-vector-builtins-shapes.h
  83165bddb05b2721bc426bd1fe3ec4c0  gcc/config/riscv/riscv-vector-builtins-types.def
! e4137796901da09141309284b35af93c  gcc/config/riscv/riscv-vector-builtins.cc
  74c291180c302842c646af24c77d184c  gcc/config/riscv/riscv-vector-builtins.def
  f75c79d146d75e5489bb9983fcdd05f6  gcc/config/riscv/riscv-vector-builtins.h
  7a7cc1051558e6d9890d9fc402d76691  gcc/config/riscv/riscv-vector-costs.cc
  bd7a0d0d03ad4788f6cf7579df11a66e  gcc/config/riscv/riscv-vector-costs.h
  f51037a9e437f8e9ce7215b2da5ad4e2  gcc/config/riscv/riscv-vector-switch.def
! 3c65f952c8116cc22f135cab9b639d28  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 3d7af594a68891f22005410aa1f5b10f  gcc/config/riscv/riscv.cc
  1153302a8d65cedebba8e1a3f67931b2  gcc/config/riscv/riscv.h
  03c4b28769423854beeddf4f8fc50582  gcc/config/riscv/riscv.md
! 1295f122f0bd70a8d7f55e0607e77ab4  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
  a8044652cefd826404f261518f9e2321  gcc/config/riscv/riscv_crypto.h
*************** faca69fa18f3f779cd3ee4d6a53e6193  gcc/co
*** 4978,4984 ****
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
! 7bb03c123ce859ee7eba92f52b5205d3  gcc/config/riscv/t-riscv
  51c5ea17e60737c695a38285dfce555d  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
  0478f4e79601d91fb8ad8f210b304a7b  gcc/config/riscv/t-withmultilib-generator
--- 4984,4990 ----
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
! 6164b18abce85da16da3bb7cd02bedee  gcc/config/riscv/t-riscv
  51c5ea17e60737c695a38285dfce555d  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
  0478f4e79601d91fb8ad8f210b304a7b  gcc/config/riscv/t-withmultilib-generator
*************** bcf728ad2379630774fd5bb529d4ee86  gcc/co
*** 4989,4995 ****
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
! 2ec1c8b2689f478526f7c8d1e873d766  gcc/config/riscv/vector-iterators.md
  2aac5fc6721c093a0f679d0e14d196e1  gcc/config/riscv/vector.md
  4ffde0be9b9a0efe78c98b4407d00397  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
--- 4995,5001 ----
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
! dd17e61a3fc5d99d2e421388d0bb6728  gcc/config/riscv/vector-iterators.md
  2aac5fc6721c093a0f679d0e14d196e1  gcc/config/riscv/vector.md
  4ffde0be9b9a0efe78c98b4407d00397  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
*************** b9122124f44b801543f1fce424708a79  gcc/co
*** 5002,5008 ****
  5ce0f6e2936b6ca2e06f1f5c3b8aa23e  gcc/config/rl78/rl78-protos.h
  8722eeae58af024df4dc732c38cfe74f  gcc/config/rl78/rl78-real.md
  68d65b724892355f5c1e816036764eee  gcc/config/rl78/rl78-virt.md
! 1e38a765fa78c3f4a4bf5b8d0addee57  gcc/config/rl78/rl78.cc
  7c0ba4382744bcd815998bfe5a3c115e  gcc/config/rl78/rl78.h
  53ff11e448f40417f1bcc8c6e41a8d40  gcc/config/rl78/rl78.md
  c65492c90efd2ee7148894f4913c2f9c  gcc/config/rl78/rl78.opt
--- 5008,5014 ----
  5ce0f6e2936b6ca2e06f1f5c3b8aa23e  gcc/config/rl78/rl78-protos.h
  8722eeae58af024df4dc732c38cfe74f  gcc/config/rl78/rl78-real.md
  68d65b724892355f5c1e816036764eee  gcc/config/rl78/rl78-virt.md
! 3510ac3ebaf4930242c519ac54cd02eb  gcc/config/rl78/rl78.cc
  7c0ba4382744bcd815998bfe5a3c115e  gcc/config/rl78/rl78.h
  53ff11e448f40417f1bcc8c6e41a8d40  gcc/config/rl78/rl78.md
  c65492c90efd2ee7148894f4913c2f9c  gcc/config/rl78/rl78.opt
*************** dce39de8bb20b88ffeb8b2073101dcfe  gcc/co
*** 5119,5125 ****
  5621b2aa0be1c71c3955c4e3bad6cf49  gcc/config/rs6000/rs6000-string.cc
  062e9e612338d86d0d47a3e1131384fa  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! b12290304c608ee478673c8dece8548e  gcc/config/rs6000/rs6000.cc
  1d91827dae3ab7a332473805ac3cf40c  gcc/config/rs6000/rs6000.h
  ad1b62754d030b34f5ff67d2991b43b1  gcc/config/rs6000/rs6000.md
  77c1c38e6705e421b8838bf19f938cef  gcc/config/rs6000/rs6000.opt
--- 5125,5131 ----
  5621b2aa0be1c71c3955c4e3bad6cf49  gcc/config/rs6000/rs6000-string.cc
  062e9e612338d86d0d47a3e1131384fa  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! a73b51e5388b6105a8a47c93eff5cce6  gcc/config/rs6000/rs6000.cc
  1d91827dae3ab7a332473805ac3cf40c  gcc/config/rs6000/rs6000.h
  ad1b62754d030b34f5ff67d2991b43b1  gcc/config/rs6000/rs6000.md
  77c1c38e6705e421b8838bf19f938cef  gcc/config/rs6000/rs6000.opt
*************** d7112093049d4abbc421609d032b7358  gcc/co
*** 5218,5224 ****
  6fdfe66fdde3f81b83dc16c27ac7df3f  gcc/config/s390/s390-opts.h
  87bca0c72260bdf7b32cbe797e607999  gcc/config/s390/s390-passes.def
  94c7aecc0d353c9aa984b4bcea01590b  gcc/config/s390/s390-protos.h
! 75525747a5d69b03b677bbd985184c99  gcc/config/s390/s390.cc
  f162b44703353c72956061efcbe580d7  gcc/config/s390/s390.h
  b42cac4e5bd67eda61880170ca30e9a1  gcc/config/s390/s390.md
  fa4475320c7a3767bf9accfa736efcc6  gcc/config/s390/s390.opt
--- 5224,5230 ----
  6fdfe66fdde3f81b83dc16c27ac7df3f  gcc/config/s390/s390-opts.h
  87bca0c72260bdf7b32cbe797e607999  gcc/config/s390/s390-passes.def
  94c7aecc0d353c9aa984b4bcea01590b  gcc/config/s390/s390-protos.h
! ab019f5d4ad70d039eb4fee4a76acc9f  gcc/config/s390/s390.cc
  f162b44703353c72956061efcbe580d7  gcc/config/s390/s390.h
  b42cac4e5bd67eda61880170ca30e9a1  gcc/config/s390/s390.md
  fa4475320c7a3767bf9accfa736efcc6  gcc/config/s390/s390.opt
*************** dfb9fde7c7559a50905b02c01b6d6ee8  gcc/co
*** 5233,5239 ****
  bc0fb519f0c53f7b5e44aadede6fbfad  gcc/config/s390/tpf.opt
  34c54b547202715f11db388829243402  gcc/config/s390/tpf.opt.urls
  d225211a59c66716b9cad3d9a2f13af4  gcc/config/s390/vecintrin.h
! 3aa76d8e6405963faa51d0151f8e3a34  gcc/config/s390/vector.md
  8f88205b80cb5c8a16a0f55c1bbc53ab  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
  f9d87cd50e032287752597f9c084e3f5  gcc/config/sh/constraints.md
--- 5239,5245 ----
  bc0fb519f0c53f7b5e44aadede6fbfad  gcc/config/s390/tpf.opt
  34c54b547202715f11db388829243402  gcc/config/s390/tpf.opt.urls
  d225211a59c66716b9cad3d9a2f13af4  gcc/config/s390/vecintrin.h
! 3ae77d7fd4bbc29f646a0c46184867c8  gcc/config/s390/vector.md
  8f88205b80cb5c8a16a0f55c1bbc53ab  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
  f9d87cd50e032287752597f9c084e3f5  gcc/config/sh/constraints.md
*************** f88c001b1bae674e16a4440ff9eba0b6  gcc/co
*** 5264,5270 ****
  5253bb82afce8c40e61ed02d889b6f33  gcc/config/sh/sh4.md
  fe27a32de15ba8624d20289e40225ecd  gcc/config/sh/sh4a.md
  a50935c18ad173891a79be98c807a7ec  gcc/config/sh/sh_optimize_sett_clrt.cc
! 80445eee0cf04ca8e7ebea39cd797737  gcc/config/sh/sh_treg_combine.cc
  542715bd128f3da1fc2217d4b84d4ced  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
  5561a4532b44f8176f955ae87b996363  gcc/config/sh/superh.opt.urls
--- 5270,5276 ----
  5253bb82afce8c40e61ed02d889b6f33  gcc/config/sh/sh4.md
  fe27a32de15ba8624d20289e40225ecd  gcc/config/sh/sh4a.md
  a50935c18ad173891a79be98c807a7ec  gcc/config/sh/sh_optimize_sett_clrt.cc
! b253dc51b72f8af140329492b3ce71ba  gcc/config/sh/sh_treg_combine.cc
  542715bd128f3da1fc2217d4b84d4ced  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
  5561a4532b44f8176f955ae87b996363  gcc/config/sh/superh.opt.urls
*************** e8ca4f5ac0c8f9928a51a9a82bf0480b  gcc/co
*** 5319,5325 ****
  e963c6f088ae67780aab309ebb8f2403  gcc/config/sparc/sparc-opts.h
  9c2d82a06c849db08db3ef02d820ed3b  gcc/config/sparc/sparc-passes.def
  8e7da647ebac15f0fb906b5d8eabbcae  gcc/config/sparc/sparc-protos.h
! 587e339feba2aacc1d58848678fda4d7  gcc/config/sparc/sparc.cc
  7b50625b5647706a8b3078662269f0b6  gcc/config/sparc/sparc.h
  ca5d61801e838fb883889cacf84b57b8  gcc/config/sparc/sparc.md
  6f932c6d3989e90e2e77ce2f623e6e98  gcc/config/sparc/sparc.opt
--- 5325,5331 ----
  e963c6f088ae67780aab309ebb8f2403  gcc/config/sparc/sparc-opts.h
  9c2d82a06c849db08db3ef02d820ed3b  gcc/config/sparc/sparc-passes.def
  8e7da647ebac15f0fb906b5d8eabbcae  gcc/config/sparc/sparc-protos.h
! 7f4f47217438bd78895fb1e403843cec  gcc/config/sparc/sparc.cc
  7b50625b5647706a8b3078662269f0b6  gcc/config/sparc/sparc.h
  ca5d61801e838fb883889cacf84b57b8  gcc/config/sparc/sparc.md
  6f932c6d3989e90e2e77ce2f623e6e98  gcc/config/sparc/sparc.opt
*************** fae3f6a9928b5e77047c16385fb6eaa2  gcc/co
*** 5349,5355 ****
  45a3624f7368cee7df854ce0aefc5ec7  gcc/config/stormy16/predicates.md
  1b17fcb0c5f894e4f9aaa818df62fe9e  gcc/config/stormy16/stormy-abi
  cf8f1ec6b22f77619d0748b31128a406  gcc/config/stormy16/stormy16-protos.h
! 9923e811f86c0571e0f08d84754804e2  gcc/config/stormy16/stormy16.cc
  434e53667b82e4d41b23c5c07f57efb5  gcc/config/stormy16/stormy16.h
  aad4e1f2824f42f41ba193319785aa8f  gcc/config/stormy16/stormy16.md
  b06d94d851e104bc65bc09aa483e1d6f  gcc/config/stormy16/stormy16.opt
--- 5355,5361 ----
  45a3624f7368cee7df854ce0aefc5ec7  gcc/config/stormy16/predicates.md
  1b17fcb0c5f894e4f9aaa818df62fe9e  gcc/config/stormy16/stormy-abi
  cf8f1ec6b22f77619d0748b31128a406  gcc/config/stormy16/stormy16-protos.h
! aec465d0b6b56ca144afa19b3026946c  gcc/config/stormy16/stormy16.cc
  434e53667b82e4d41b23c5c07f57efb5  gcc/config/stormy16/stormy16.h
  aad4e1f2824f42f41ba193319785aa8f  gcc/config/stormy16/stormy16.md
  b06d94d851e104bc65bc09aa483e1d6f  gcc/config/stormy16/stormy16.opt
*************** f3a2992c8e85b13e50b261e26924d83f  gcc/co
*** 5482,5488 ****
  87fc5c87547999f715031b4ff99fb67b  gcc/config/xtensa/xtensa-dynconfig.cc
  c7be35a23fd70ac184dd9072319304c7  gcc/config/xtensa/xtensa-opts.h
  e59f31891252abdd41eedc784b25ed6b  gcc/config/xtensa/xtensa-protos.h
! debcbe0ab4271c29f9e7f149f11b27ff  gcc/config/xtensa/xtensa.cc
  5cb04061b3da377a69382a940d1039cf  gcc/config/xtensa/xtensa.h
  6c41f581d014120fecf4738375010780  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
--- 5488,5494 ----
  87fc5c87547999f715031b4ff99fb67b  gcc/config/xtensa/xtensa-dynconfig.cc
  c7be35a23fd70ac184dd9072319304c7  gcc/config/xtensa/xtensa-opts.h
  e59f31891252abdd41eedc784b25ed6b  gcc/config/xtensa/xtensa-protos.h
! 504e81f5a1c3f60de998db24e2e6e748  gcc/config/xtensa/xtensa.cc
  5cb04061b3da377a69382a940d1039cf  gcc/config/xtensa/xtensa.h
  6c41f581d014120fecf4738375010780  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5498,5504 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 31fcabe56eef97f8c127a2c5979f79a1  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5504,5510 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 8f5914726b10d7242a4541cb456c3825  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp
*** 5537,5543 ****
  b09d7ab3506bc7d8aeef0ddfbca588a9  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
! 41859d8bfc4d47833b075577add8363c  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  f749639c06fb1a8e259bd762fd131b3f  gcc/cp/constexpr.cc
  d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
--- 5543,5549 ----
  b09d7ab3506bc7d8aeef0ddfbca588a9  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
! 167833da56621df8026f51eb243c344a  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  f749639c06fb1a8e259bd762fd131b3f  gcc/cp/constexpr.cc
  d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
*************** d132f7f4c080ce3048977e23e33b9b1c  gcc/cp
*** 5545,5551 ****
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
  87259690960df0d717f15cbeadc3eea1  gcc/cp/coroutines.cc
  50f398cce18f76ec8d119ddd9d133f78  gcc/cp/coroutines.h
! e74b2ddf1eacc2950a54441a502c96fd  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  a46a06074cd68181251e3541b4689021  gcc/cp/cp-objcp-common.cc
--- 5551,5557 ----
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
  87259690960df0d717f15cbeadc3eea1  gcc/cp/coroutines.cc
  50f398cce18f76ec8d119ddd9d133f78  gcc/cp/coroutines.h
! 541cd71d326520d2f83ccd03638aaa8b  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  a46a06074cd68181251e3541b4689021  gcc/cp/cp-objcp-common.cc
*************** e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp
*** 5558,5566 ****
  28a2733b7abed60b2b102105bb7cebaf  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! b527af0ab311117213e40060ee8c0021  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! ed25471eb9a7b0ed8426ac5beaf6af03  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
  fb321e18e88028e7fd051da3ec4f5b6e  gcc/cp/error.cc
  86f47b28d673601022d0205cdd718f9d  gcc/cp/except.cc
--- 5564,5572 ----
  28a2733b7abed60b2b102105bb7cebaf  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! cc9928575f28fafacef718c5c80775db  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! 4c2e12905b64532da506807db1677050  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
  fb321e18e88028e7fd051da3ec4f5b6e  gcc/cp/error.cc
  86f47b28d673601022d0205cdd718f9d  gcc/cp/except.cc
*************** aaf76a9b03fd0532d2904aef004fd66a  gcc/cp
*** 5577,5591 ****
  936bd061907a7a899c3285cf17b17674  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
! 2a25642ff43728ad2b4093c3713d76cc  gcc/cp/method.cc
! 754102b3f1076aa0dfea6fb726a77b7d  gcc/cp/module.cc
! 5b75562244f5bc757874aecc8ef5a309  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
! e307cd2481b4d87a27cab40dea7c3afb  gcc/cp/optimize.cc
  3ef702d4f34b8fcb5f764ceed2514988  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! 6902e462a11e0c76b51f0a4dda7d8db8  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  0ead9094e2e0b9fd6034c5cb83e232a8  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
--- 5583,5597 ----
  936bd061907a7a899c3285cf17b17674  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
! ae7940cd68d15195e055dd97ffe3cce9  gcc/cp/method.cc
! db2455cf9076963e3597e72fa3ef069c  gcc/cp/module.cc
! 4b320facb74b0245d0f0959fe26e2e71  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
! 813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  3ef702d4f34b8fcb5f764ceed2514988  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! ae60ecc480641515e422efd4efc1a861  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  0ead9094e2e0b9fd6034c5cb83e232a8  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
*************** b58bf61fbfed45af179b7104e72a9486  gcc/cp
*** 5594,5600 ****
  2425db76c32085977eff047c982cebab  gcc/cp/std-name-hint.h
  e3798db73e0b3e892e772acbe569a5b8  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! f457e087ef008c16399521a9c1735f71  gcc/cp/typeck.cc
  1fea2b59dbf93b59626d7546b3c1f738  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
--- 5600,5606 ----
  2425db76c32085977eff047c982cebab  gcc/cp/std-name-hint.h
  e3798db73e0b3e892e772acbe569a5b8  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! a317127b240ff859aac823ff16758d88  gcc/cp/typeck.cc
  1fea2b59dbf93b59626d7546b3c1f738  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
*************** e0a7cab8692eb3cbd4b00c4494e48d70  gcc/di
*** 5886,5892 ****
  b14c12c33aee36a4d29601627a1a67da  gcc/diagnostic-core.h
  be405b20597be971120eee5709db8c4a  gcc/diagnostic-diagram.h
  a24233a009f0c9d29e034e6ba63082de  gcc/diagnostic-event-id.h
! a8b9600d40f3d24d0da0014591732104  gcc/diagnostic-format-html.cc
  6641ef1cb8f529ccd664b0be9825f5a0  gcc/diagnostic-format-html.h
  d306b1c2d243e470e6dace9e9b9feb76  gcc/diagnostic-format-json.cc
  61f95df5bdbef545f0ad3dd04e2d5ac3  gcc/diagnostic-format-sarif.cc
--- 5892,5898 ----
  b14c12c33aee36a4d29601627a1a67da  gcc/diagnostic-core.h
  be405b20597be971120eee5709db8c4a  gcc/diagnostic-diagram.h
  a24233a009f0c9d29e034e6ba63082de  gcc/diagnostic-event-id.h
! 20f3c8d8f271e0a1b76f95a0f35dd184  gcc/diagnostic-format-html.cc
  6641ef1cb8f529ccd664b0be9825f5a0  gcc/diagnostic-format-html.h
  d306b1c2d243e470e6dace9e9b9feb76  gcc/diagnostic-format-json.cc
  61f95df5bdbef545f0ad3dd04e2d5ac3  gcc/diagnostic-format-sarif.cc
*************** acdfc663791e4321372e79932070d05d  gcc/do
*** 5928,5934 ****
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 15084ba4b102d01d817a8bdecd664140  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
--- 5934,5940 ----
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 65eb0469dc7d3765cfcb472f4fdab1e8  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
*************** a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/do
*** 5938,5944 ****
  6662694db9603d95a8c280ab3b6479ea  gcc/doc/gcov.texi
  cc49c44389e2d6e1bc60b761b5602112  gcc/doc/generic.texi
  6dd13335166acce8e899b838ecbd04bd  gcc/doc/gimple.texi
! 959d4037cfed9db8dc130d25a00023ed  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
  e146722b4ab52551483390772327c93f  gcc/doc/gty.texi
  27e2895f33fff82c6e13b5b9e7b8df6b  gcc/doc/headerdirs.texi
--- 5944,5950 ----
  6662694db9603d95a8c280ab3b6479ea  gcc/doc/gcov.texi
  cc49c44389e2d6e1bc60b761b5602112  gcc/doc/generic.texi
  6dd13335166acce8e899b838ecbd04bd  gcc/doc/gimple.texi
! d86921b1235f4213b89ef1d12d25a41a  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
  e146722b4ab52551483390772327c93f  gcc/doc/gty.texi
  27e2895f33fff82c6e13b5b9e7b8df6b  gcc/doc/headerdirs.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 5952,5958 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  9452a1b0e4db9a14ba8f8806961ae80b  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 96a956d6c2497c2bc24abab9803526dd  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 5958,5964 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  9452a1b0e4db9a14ba8f8806961ae80b  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 2e67ae057927275c2e9b59ad1587e6f8  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** a1f65f3aec3cc5d5b6505fb976d4c216  gcc/do
*** 5987,5993 ****
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
! 67bc6abc7b2807e12a964e03fe0349ac  gcc/doc/md.texi
  8836b7001f069e8dead6a4643108258b  gcc/doc/objc.texi
  9673b2a6dd62d5ac08afb00421e98cdb  gcc/doc/optinfo.texi
  0ae5c8ef7a8ce01c113543a03df7e0df  gcc/doc/options.texi
--- 5993,5999 ----
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
! 10b51d23b748cb98074db7edf9725f42  gcc/doc/md.texi
  8836b7001f069e8dead6a4643108258b  gcc/doc/objc.texi
  9673b2a6dd62d5ac08afb00421e98cdb  gcc/doc/optinfo.texi
  0ae5c8ef7a8ce01c113543a03df7e0df  gcc/doc/options.texi
*************** c98feb0a43876ed3ef2fca3c8448e8f8  gcc/do
*** 5995,6003 ****
  2cd0efa7c8a7f870d4a0c0b2eed69798  gcc/doc/plugins.texi
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! 5f7cd3dc8576212cd00abaea506b5375  gcc/doc/sourcebuild.texi
  14e3ed780980c4fff09173b869e850ed  gcc/doc/standards.texi
  fd3bf27e33907464460ab9208cdd2240  gcc/doc/tm.texi
  06d0869eb2bec892f989f31bcd7da233  gcc/doc/tm.texi.in
--- 6001,6010 ----
  2cd0efa7c8a7f870d4a0c0b2eed69798  gcc/doc/plugins.texi
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
+ dddeee21c6a9b60cd853f27a5db81c4f  gcc/doc/riscv-ext.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! 5f122f3cdde0b1e39391fca5a35ca6e3  gcc/doc/sourcebuild.texi
  14e3ed780980c4fff09173b869e850ed  gcc/doc/standards.texi
  fd3bf27e33907464460ab9208cdd2240  gcc/doc/tm.texi
  06d0869eb2bec892f989f31bcd7da233  gcc/doc/tm.texi.in
*************** c2aaa943f52a93ac601eb2571747ce3f  gcc/do
*** 6012,6018 ****
  8f4782b8e70ef348f013d1ae50051f97  gcc/domwalk.h
  6ae0851ed68d2cc21f533a4af7284561  gcc/double-int.cc
  36e421802c745ad35ea5d36bb0f28dce  gcc/double-int.h
! 7b5eb9e4eed4806160ff0f72ad03915f  gcc/dse.cc
  af0971ba9c5420512d37fa9e39c93077  gcc/dump-context.h
  5ccd6da562821d5e9409303de179ca23  gcc/dumpfile.cc
  8670da1568e881564969be1aa91c7260  gcc/dumpfile.h
--- 6019,6025 ----
  8f4782b8e70ef348f013d1ae50051f97  gcc/domwalk.h
  6ae0851ed68d2cc21f533a4af7284561  gcc/double-int.cc
  36e421802c745ad35ea5d36bb0f28dce  gcc/double-int.h
! 702d5294f135996079afd0c8fbff9e40  gcc/dse.cc
  af0971ba9c5420512d37fa9e39c93077  gcc/dump-context.h
  5ccd6da562821d5e9409303de179ca23  gcc/dumpfile.cc
  8670da1568e881564969be1aa91c7260  gcc/dumpfile.h
*************** e518c37d94908385da07142b92ea8cdb  gcc/dw
*** 6023,6048 ****
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
  baaae59ceda4df837a6f62ffb0f29ee7  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
! f66ca867874a951d1208d335f597c04f  gcc/dwarf2out.cc
  7ff70632352b65c214e02360ed6d6aae  gcc/dwarf2out.h
  fdd976759ee89958c91a4010e53c0f02  gcc/early-remat.cc
  e0339faf7da1ffc9030bc3a53b41cc1c  gcc/edit-context.cc
  237d0c79a98880d977007c3345019bf8  gcc/edit-context.h
! 017560279e1e8f8d5c27b792341b7961  gcc/emit-rtl.cc
  958b8dfdb92b879b9cbab057e540c587  gcc/emit-rtl.h
  22fb4d062235835cdf34b4077884887d  gcc/errors.cc
  7109c06aed199f804c8906e6febd8c9f  gcc/errors.h
  e67bf1a2587fc7f7361e841145ff4cfb  gcc/escaped_string.h
  0f7edc740a7778567090fd93180c02f0  gcc/et-forest.cc
  3e59fa3e669b46ddeef671a16cf79841  gcc/et-forest.h
! 63082748b542a40b34a655c669f3215d  gcc/except.cc
  9c6b987629f8664ff2e311b59a7b90cd  gcc/except.h
  29b821359071c4aa7e30220d5cb2d580  gcc/exec-tool.in
  92c5c2d83c0f493838752cabc5c5cb40  gcc/explow.cc
  b5fa845ff578d70e8ceae655d6affc51  gcc/explow.h
! 53e6f2a3611c2bbb776cbe624811431d  gcc/expmed.cc
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
! bc438860c6c9b2d1d32fad8eb6040ccd  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
  81dcf70fa4896526691f574757c41ad2  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
--- 6030,6055 ----
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
  baaae59ceda4df837a6f62ffb0f29ee7  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
! cb14c74668b169646e138781d6e82f93  gcc/dwarf2out.cc
  7ff70632352b65c214e02360ed6d6aae  gcc/dwarf2out.h
  fdd976759ee89958c91a4010e53c0f02  gcc/early-remat.cc
  e0339faf7da1ffc9030bc3a53b41cc1c  gcc/edit-context.cc
  237d0c79a98880d977007c3345019bf8  gcc/edit-context.h
! 2c38bdd0fc19714dd7e1b6705484c5b5  gcc/emit-rtl.cc
  958b8dfdb92b879b9cbab057e540c587  gcc/emit-rtl.h
  22fb4d062235835cdf34b4077884887d  gcc/errors.cc
  7109c06aed199f804c8906e6febd8c9f  gcc/errors.h
  e67bf1a2587fc7f7361e841145ff4cfb  gcc/escaped_string.h
  0f7edc740a7778567090fd93180c02f0  gcc/et-forest.cc
  3e59fa3e669b46ddeef671a16cf79841  gcc/et-forest.h
! 03148e811fc71488faa55587eee9e692  gcc/except.cc
  9c6b987629f8664ff2e311b59a7b90cd  gcc/except.h
  29b821359071c4aa7e30220d5cb2d580  gcc/exec-tool.in
  92c5c2d83c0f493838752cabc5c5cb40  gcc/explow.cc
  b5fa845ff578d70e8ceae655d6affc51  gcc/explow.h
! bf1d67a256320e50cdaccef288bcb1b9  gcc/expmed.cc
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
! be57bc61b2fcfe917394983b3537e3c4  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
  81dcf70fa4896526691f574757c41ad2  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
*************** e7580325e4512cd9f5c2d665b528fa8f  gcc/fi
*** 6058,6067 ****
  e8c5838138a5e07e5716964a8284e9a1  gcc/flags.h
  a798cdca802a57ffa3473ab610b37c86  gcc/fold-const-call.cc
  182559f127e8416b9e9abcffb267d5fc  gcc/fold-const-call.h
! 1ab71911154b1105730df248fcbb5ce7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! e0a0cdc3a6b109d1c97e0743ae65e9e0  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6065,6074 ----
  e8c5838138a5e07e5716964a8284e9a1  gcc/flags.h
  a798cdca802a57ffa3473ab610b37c86  gcc/fold-const-call.cc
  182559f127e8416b9e9abcffb267d5fc  gcc/fold-const-call.h
! 231ca43a15347c4b57b64ed5be4a7c8e  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 9eb28b00695aed1ee517f94e0a83fe7a  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** d85e2f2fc3ee4721563bd47719063fb6  gcc/fo
*** 6105,6111 ****
  5eb64efcc949ffd1b8a68b073277aead  gcc/fortran/decl.cc
  c33e2c4c7527bec8a125dd093dc59f2a  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
! 6d20731255b02e4f2f921333bee171f3  gcc/fortran/dump-parse-tree.cc
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
  70011758e3ef07529a2602cae826d6be  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
--- 6112,6118 ----
  5eb64efcc949ffd1b8a68b073277aead  gcc/fortran/decl.cc
  c33e2c4c7527bec8a125dd093dc59f2a  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
! b6cce6988f87edda182aec1b6c3cd291  gcc/fortran/dump-parse-tree.cc
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
  70011758e3ef07529a2602cae826d6be  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
*************** bd08c55098f00394b9922e6163c27b92  gcc/fo
*** 6116,6124 ****
  d29bb6813221f46b4cde9df77292c412  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  5b932ef150fbb2f40ad9da6a623f8cfe  gcc/fortran/interface.cc
! 9e9287904be19f52fa94c40d2683cfe8  gcc/fortran/intrinsic.cc
  70dd32ae163321b5491726a011e7b091  gcc/fortran/intrinsic.h
! 9652060587347896bf4e055031c0beab  gcc/fortran/intrinsic.texi
  4a7f5923c18268b245556ded8e9ba554  gcc/fortran/invoke.texi
  a6ef46c79cebcc9bf1786f457fc01c4e  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
--- 6123,6131 ----
  d29bb6813221f46b4cde9df77292c412  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  5b932ef150fbb2f40ad9da6a623f8cfe  gcc/fortran/interface.cc
! bfd85e26b6baa268be01f175a7ffb800  gcc/fortran/intrinsic.cc
  70dd32ae163321b5491726a011e7b091  gcc/fortran/intrinsic.h
! 9d797fdefac716538b6bc5b3fe81dfa1  gcc/fortran/intrinsic.texi
  4a7f5923c18268b245556ded8e9ba554  gcc/fortran/invoke.texi
  a6ef46c79cebcc9bf1786f457fc01c4e  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
*************** e1af2a4e4b63d9970c78a257f54cd3b2  gcc/fo
*** 6140,6149 ****
  481905febb41a25db05b80d06034bc70  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
  1cf1562d97db565ece685237001c2e59  gcc/fortran/primary.cc
! 7fc2fd902b48117f13bad728f15d6cf0  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
! 5cf8b6765becb264ea43ca1b370e393a  gcc/fortran/simplify.cc
  3255bc920c3609e58d8a01f6464313e8  gcc/fortran/st.cc
  7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
--- 6147,6156 ----
  481905febb41a25db05b80d06034bc70  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
  1cf1562d97db565ece685237001c2e59  gcc/fortran/primary.cc
! 062a6b3178d3ac0121e8d26b61d58185  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
! 38e5c1a2f4745b159c28560743e51f55  gcc/fortran/simplify.cc
  3255bc920c3609e58d8a01f6464313e8  gcc/fortran/st.cc
  7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
*************** d555f911945a83db335013815934e941  gcc/fo
*** 6155,6163 ****
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  d8e305ea46f72c347ae93f0ab9d8337a  gcc/fortran/trans-decl.cc
  0e477af087e7941701ef7d15e3bdae1e  gcc/fortran/trans-expr.cc
! f64d06b1e52d45504c386a430738dccf  gcc/fortran/trans-intrinsic.cc
  9cf7c294c06fdaea67dcd2b9ff2cf5ad  gcc/fortran/trans-io.cc
! 0ea370a601d81713b8f4041c3d21cedf  gcc/fortran/trans-openmp.cc
  0396764dfdf16466c5e59e1744c93a42  gcc/fortran/trans-stmt.cc
  9caf8a2f93e6cf5e2a567a3aa18f957c  gcc/fortran/trans-stmt.h
  3910394d74aab50fba42ab60b9b75ad3  gcc/fortran/trans-types.cc
--- 6162,6170 ----
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  d8e305ea46f72c347ae93f0ab9d8337a  gcc/fortran/trans-decl.cc
  0e477af087e7941701ef7d15e3bdae1e  gcc/fortran/trans-expr.cc
! 619298ebdb7722b23738a67610a81830  gcc/fortran/trans-intrinsic.cc
  9cf7c294c06fdaea67dcd2b9ff2cf5ad  gcc/fortran/trans-io.cc
! 710d1b981b11b3456d5e23839efa4675  gcc/fortran/trans-openmp.cc
  0396764dfdf16466c5e59e1744c93a42  gcc/fortran/trans-stmt.cc
  9caf8a2f93e6cf5e2a567a3aa18f957c  gcc/fortran/trans-stmt.h
  3910394d74aab50fba42ab60b9b75ad3  gcc/fortran/trans-types.cc
*************** f574663ce227d0be2e77015c008d708b  gcc/fp
*** 6170,6176 ****
  7d49ef8f960daad31201f864eb1933d9  gcc/function-abi.cc
  12d3c07e3c878f7237f904820da28c93  gcc/function-abi.h
  6e9698e4411a03357b6e2b60bc91c827  gcc/function-tests.cc
! 25ebd6ca078bb3bcb357a9009a5a0ec1  gcc/function.cc
  f177e1c4e707bec79d4d662838428852  gcc/function.h
  3c08c56c1de3b165b954ab5c185284c5  gcc/fwprop.cc
  261433f3124bfa2a1421c42d657e0560  gcc/gcc-ar.cc
--- 6177,6183 ----
  7d49ef8f960daad31201f864eb1933d9  gcc/function-abi.cc
  12d3c07e3c878f7237f904820da28c93  gcc/function-abi.h
  6e9698e4411a03357b6e2b60bc91c827  gcc/function-tests.cc
! 389fbe3fbd033ac11caeb4c52d344a91  gcc/function.cc
  f177e1c4e707bec79d4d662838428852  gcc/function.h
  3c08c56c1de3b165b954ab5c185284c5  gcc/fwprop.cc
  261433f3124bfa2a1421c42d657e0560  gcc/gcc-ar.cc
*************** b9ae583911b0dfc11e96e21548fad63d  gcc/gc
*** 6193,6199 ****
  75b76f17591eaadacbf2760164205f52  gcc/gcov.cc
  2a8393570ec2f0f06d815562e3e84f78  gcc/gcse-common.cc
  592e70d614695b5fba65cd68c9112587  gcc/gcse-common.h
! 7078a71e12a0dab8d83016b3f1948bf4  gcc/gcse.cc
  e5a3a3a1ad466d441c8c2f6c2ac6c208  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
  73e9039221d34e77933a5626ce0294a5  gcc/gdbhooks.py
--- 6200,6206 ----
  75b76f17591eaadacbf2760164205f52  gcc/gcov.cc
  2a8393570ec2f0f06d815562e3e84f78  gcc/gcse-common.cc
  592e70d614695b5fba65cd68c9112587  gcc/gcse-common.h
! f71783194d63d3c2bcbe8eb098359232  gcc/gcse.cc
  e5a3a3a1ad466d441c8c2f6c2ac6c208  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
  73e9039221d34e77933a5626ce0294a5  gcc/gdbhooks.py
*************** d23c1b55e0de2e6e8884410e882b1b87  gcc/ge
*** 6235,6241 ****
  7ef07a14a26d6ca95f84a510ac497b42  gcc/genrecog.cc
  b3871ec7bfbae048743120701fe55ae0  gcc/gensupport.cc
  b2448ada2a0bff917b804ee48360ab03  gcc/gensupport.h
! 575cd36582b31d032be413d7eb1b6a95  gcc/gentarget-def.cc
  d285de23bd302c6655bc95327336a8ec  gcc/genversion.cc
  c0aa0732013643fc9d7c8fc68bb85d6d  gcc/ggc-common.cc
  56234852a29fc6118c202cd256865b62  gcc/ggc-internal.h
--- 6242,6248 ----
  7ef07a14a26d6ca95f84a510ac497b42  gcc/genrecog.cc
  b3871ec7bfbae048743120701fe55ae0  gcc/gensupport.cc
  b2448ada2a0bff917b804ee48360ab03  gcc/gensupport.h
! c577de233dc1e3d8f4a45bce5107a20c  gcc/gentarget-def.cc
  d285de23bd302c6655bc95327336a8ec  gcc/genversion.cc
  c0aa0732013643fc9d7c8fc68bb85d6d  gcc/ggc-common.cc
  56234852a29fc6118c202cd256865b62  gcc/ggc-internal.h
*************** da09d1e31d3994eb3d6958074d7b7ce5  gcc/gi
*** 6250,6257 ****
  613cd84d6a9d33c8a47ce0b484fe65cc  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! af2f7042f07ed2c4e9574947bf734ed9  gcc/gimple-fold.cc
! 185d4ab557138640727d9a9c05260d7e  gcc/gimple-fold.h
  98652c967ce7f8dda9a1c398caa0996a  gcc/gimple-harden-conditionals.cc
  34959112cc04df5744be2b160e2f9d80  gcc/gimple-harden-control-flow.cc
  46c40ebab120d543476a2e46ac063bba  gcc/gimple-if-to-switch.cc
--- 6257,6264 ----
  613cd84d6a9d33c8a47ce0b484fe65cc  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! 6d8705e22a261973531ad62cf6514ed9  gcc/gimple-fold.cc
! 563448545720cf30f89d6c372ef0033b  gcc/gimple-fold.h
  98652c967ce7f8dda9a1c398caa0996a  gcc/gimple-harden-conditionals.cc
  34959112cc04df5744be2b160e2f9d80  gcc/gimple-harden-control-flow.cc
  46c40ebab120d543476a2e46ac063bba  gcc/gimple-if-to-switch.cc
*************** fc5706ae421aa8f2f9bba7fe2c637237  gcc/gi
*** 6317,6323 ****
  19e41ad97511268bfc78109e4dbf8065  gcc/gimple-warn-recursion.cc
  1c27797b28d9b5ff89ecc329a5cad7a8  gcc/gimple.cc
  2b31c9448b3ca4914742ffde943425c0  gcc/gimple.def
! 45503ce6e3f25d368673d334a7c46936  gcc/gimple.h
  140b5c45a362b9c0c981b683560d4ef8  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
  8c53ac4f655bf4ed40f3c2f5775f0ba6  gcc/gimplify.cc
--- 6324,6330 ----
  19e41ad97511268bfc78109e4dbf8065  gcc/gimple-warn-recursion.cc
  1c27797b28d9b5ff89ecc329a5cad7a8  gcc/gimple.cc
  2b31c9448b3ca4914742ffde943425c0  gcc/gimple.def
! 386cda8e463d97e1cd38f923b48af906  gcc/gimple.h
  140b5c45a362b9c0c981b683560d4ef8  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
  8c53ac4f655bf4ed40f3c2f5775f0ba6  gcc/gimplify.cc
*************** c81003797329cf68441e2bed5e76c252  gcc/ho
*** 6442,6466 ****
  260dd898f6b9809f71a292b793d67324  gcc/hw-doloop.h
  4769eb51982f8ccb12764424698b464f  gcc/hwint.cc
  8826410aae6a5efbb3d335e5e3dceed4  gcc/hwint.h
! cbda0b9f91d4fe712bb30c630b42ef64  gcc/ifcvt.cc
  1d252ebba03aa858df6822a8b59e1d4e  gcc/ifcvt.h
  55413f67957a351f7ca1b0a8a2f69a7c  gcc/inchash.cc
  f380ce65b15eedb6d55a9848beb1ec3b  gcc/inchash.h
  a82ca6f10995888441918acc568477fc  gcc/incpath.cc
  078efe9e89bf7fcd6a66cd085de2d676  gcc/incpath.h
! ab23cbe770ec47ef81d84e5377063f0f  gcc/init-regs.cc
  b3d2e0a4fdb1acc7d7c1d1222ec7077d  gcc/input.cc
  61ec39febc0596c9836bf3c2bd87907c  gcc/input.h
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
  769443add1b7187045688cd8b1129647  gcc/int-vector-builder.h
! b0418c0b5b0600719b633f4afcd328ea  gcc/internal-fn.cc
  0eb0c9844fd70032778f6dc9c246eafd  gcc/internal-fn.def
  329c266487376ce133d0e9e580fc7a58  gcc/internal-fn.h
  bcb802c64e78f80e8e46c799c7e449ad  gcc/intl.cc
  deb111e00b2b07aa631595045bce5003  gcc/intl.h
  47a65e558aff89879902e88b055c7b12  gcc/ipa-comdats.cc
! 83301dfe7ea8ece23eded9072136d0f7  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  4b65c0ccf8c98e3a0e1526acb4ebd3a4  gcc/ipa-devirt.cc
  2956ae29acd688fd2229744edabdc027  gcc/ipa-fnsummary.cc
--- 6449,6473 ----
  260dd898f6b9809f71a292b793d67324  gcc/hw-doloop.h
  4769eb51982f8ccb12764424698b464f  gcc/hwint.cc
  8826410aae6a5efbb3d335e5e3dceed4  gcc/hwint.h
! 31ea39f949f703c2507dda13a2e0aad2  gcc/ifcvt.cc
  1d252ebba03aa858df6822a8b59e1d4e  gcc/ifcvt.h
  55413f67957a351f7ca1b0a8a2f69a7c  gcc/inchash.cc
  f380ce65b15eedb6d55a9848beb1ec3b  gcc/inchash.h
  a82ca6f10995888441918acc568477fc  gcc/incpath.cc
  078efe9e89bf7fcd6a66cd085de2d676  gcc/incpath.h
! 9d517f2c2919033bb8c4d62108dd6973  gcc/init-regs.cc
  b3d2e0a4fdb1acc7d7c1d1222ec7077d  gcc/input.cc
  61ec39febc0596c9836bf3c2bd87907c  gcc/input.h
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
  769443add1b7187045688cd8b1129647  gcc/int-vector-builder.h
! 897902cdd9de6a150cc7b44cc31db9a9  gcc/internal-fn.cc
  0eb0c9844fd70032778f6dc9c246eafd  gcc/internal-fn.def
  329c266487376ce133d0e9e580fc7a58  gcc/internal-fn.h
  bcb802c64e78f80e8e46c799c7e449ad  gcc/intl.cc
  deb111e00b2b07aa631595045bce5003  gcc/intl.h
  47a65e558aff89879902e88b055c7b12  gcc/ipa-comdats.cc
! 698e3e9010521e8f3924bff81b6d6cd7  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  4b65c0ccf8c98e3a0e1526acb4ebd3a4  gcc/ipa-devirt.cc
  2956ae29acd688fd2229744edabdc027  gcc/ipa-fnsummary.cc
*************** ee6c4ff9a86c5d0a68fa41c8da2b5c6f  gcc/ip
*** 6494,6500 ****
  0562ce724bce5cf2fea47f2f0c2e0007  gcc/ipa-reference.cc
  d4930f12a999a28238b013539b631f2f  gcc/ipa-reference.h
  db3094a0c46c1db21262added5d20318  gcc/ipa-split.cc
! 9bd3fd72a1f4a6c2b89af16b25800070  gcc/ipa-sra.cc
  59810ca6d9f512fe2332a63f844610db  gcc/ipa-strub.cc
  7441ae66ef417a1eed323b8c98c8e589  gcc/ipa-strub.h
  15fb2e7205c9068dc163478055d814aa  gcc/ipa-utils.cc
--- 6501,6507 ----
  0562ce724bce5cf2fea47f2f0c2e0007  gcc/ipa-reference.cc
  d4930f12a999a28238b013539b631f2f  gcc/ipa-reference.h
  db3094a0c46c1db21262added5d20318  gcc/ipa-split.cc
! 259429efa536a126922a043252fe06dd  gcc/ipa-sra.cc
  59810ca6d9f512fe2332a63f844610db  gcc/ipa-strub.cc
  7441ae66ef417a1eed323b8c98c8e589  gcc/ipa-strub.h
  15fb2e7205c9068dc163478055d814aa  gcc/ipa-utils.cc
*************** c293da53973fb7a7f436f875b73a9753  gcc/ir
*** 6505,6514 ****
  b31fd788662b22cb8047b65a9502b4fa  gcc/ira-color.cc
  a6162cabbfeb130d9e619b6dc2676776  gcc/ira-conflicts.cc
  3191757bb3b47c4b71e2e3b2be1b60e4  gcc/ira-costs.cc
! 8f521d3747eb310bfdf4ffac2035cae9  gcc/ira-emit.cc
  43cca7ef68de29884afbceb8e3fa19bb  gcc/ira-int.h
  947f563def1cc07c1f6d1def7fbdf142  gcc/ira-lives.cc
! 358d566ebe4b1bbc1b0d99a8d0092d8a  gcc/ira.cc
  e02a7a08ca9acaac686d9cb897ac121b  gcc/ira.h
  101bad313081e351312c8d42e0b24b31  gcc/is-a.h
  4e832d29f0e621d177da3fa9c3e11b69  gcc/iterator-utils.h
--- 6512,6521 ----
  b31fd788662b22cb8047b65a9502b4fa  gcc/ira-color.cc
  a6162cabbfeb130d9e619b6dc2676776  gcc/ira-conflicts.cc
  3191757bb3b47c4b71e2e3b2be1b60e4  gcc/ira-costs.cc
! ed94ab1f6976f64c8d20b7b65da14438  gcc/ira-emit.cc
  43cca7ef68de29884afbceb8e3fa19bb  gcc/ira-int.h
  947f563def1cc07c1f6d1def7fbdf142  gcc/ira-lives.cc
! beaf75ec60bb1985c10c2c6c1f98ebd6  gcc/ira.cc
  e02a7a08ca9acaac686d9cb897ac121b  gcc/ira.h
  101bad313081e351312c8d42e0b24b31  gcc/is-a.h
  4e832d29f0e621d177da3fa9c3e11b69  gcc/iterator-utils.h
*************** d6e135b167cb1f68e1851b553aa7cd51  gcc/li
*** 6627,6647 ****
  7bf480c85a74d6690a5657de1434aef1  gcc/lockfile.cc
  03fdf33413400a8644c324d657debba0  gcc/lockfile.h
  803748f717a53dfe6c94971f937b0156  gcc/logical-location.h
! ef7626e8221c409d195fdcfa019fb4cd  gcc/loop-doloop.cc
  154eba32ec80f6804e8861149e26652c  gcc/loop-init.cc
  6e39bd9aab94c794b8cc992d0cadd9ae  gcc/loop-invariant.cc
  d09474ac29ae534bc531b2fc2c2bd909  gcc/loop-iv.cc
! f9c64428e6259946f3584ad7aa661998  gcc/loop-unroll.cc
  7f27c43d3045c876fd1f60e2dbdb8bb0  gcc/loop-unroll.h
! ed475e0212369987bb572e7eabb4b4d7  gcc/lower-subreg.cc
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! a6bf1ef46c92902beb3ec28006d6a9ff  gcc/lra-constraints.cc
  90be6ca8eebfbeae80589ba7a895bf60  gcc/lra-eliminations.cc
  d5aab2fda62b4b8a67dcd1bfeff169f5  gcc/lra-int.h
  9b39c90253128330d1b238b030a40fce  gcc/lra-lives.cc
! f8f8f93a11e3960a35e56fdfffdf4889  gcc/lra-remat.cc
  d5cf2fbf4d35e8e1f64d1638b2993c85  gcc/lra-spills.cc
  e5fef2ffe59f5bb8bf855af92be9ce6a  gcc/lra.cc
  f34f18b0bf45561aad0763e10bc1ecb1  gcc/lra.h
--- 6634,6654 ----
  7bf480c85a74d6690a5657de1434aef1  gcc/lockfile.cc
  03fdf33413400a8644c324d657debba0  gcc/lockfile.h
  803748f717a53dfe6c94971f937b0156  gcc/logical-location.h
! 0816d05453d7e9ce04f5d1bd97b7872b  gcc/loop-doloop.cc
  154eba32ec80f6804e8861149e26652c  gcc/loop-init.cc
  6e39bd9aab94c794b8cc992d0cadd9ae  gcc/loop-invariant.cc
  d09474ac29ae534bc531b2fc2c2bd909  gcc/loop-iv.cc
! 715bf773948bc1c41f88670584c75ec4  gcc/loop-unroll.cc
  7f27c43d3045c876fd1f60e2dbdb8bb0  gcc/loop-unroll.h
! b54054c495232a416b1cdea9032d1d9f  gcc/lower-subreg.cc
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! 54e62c1c9cb8ac20e26344c0abc15f9c  gcc/lra-constraints.cc
  90be6ca8eebfbeae80589ba7a895bf60  gcc/lra-eliminations.cc
  d5aab2fda62b4b8a67dcd1bfeff169f5  gcc/lra-int.h
  9b39c90253128330d1b238b030a40fce  gcc/lra-lives.cc
! f98dc87a80f661782eacaf50d123997d  gcc/lra-remat.cc
  d5cf2fbf4d35e8e1f64d1638b2993c85  gcc/lra-spills.cc
  e5fef2ffe59f5bb8bf855af92be9ce6a  gcc/lra.cc
  f34f18b0bf45561aad0763e10bc1ecb1  gcc/lra.h
*************** f34f18b0bf45561aad0763e10bc1ecb1  gcc/lr
*** 6655,6661 ****
  f2a9985147f87fd566d4ae2dd8fceabc  gcc/lto-section-names.h
  92ad85d667fb88ca0d727d1081d5a438  gcc/lto-section-out.cc
  022eda68922792984b6370af859619e4  gcc/lto-streamer-in.cc
! 6949f7b0408d00da6a8fb188c3d5dcd9  gcc/lto-streamer-out.cc
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  89440b8d71857e40c8fa12dd9aa25491  gcc/lto-streamer.h
  e94a0111912c76e65824bb88bf99f44c  gcc/lto-wrapper.cc
--- 6662,6668 ----
  f2a9985147f87fd566d4ae2dd8fceabc  gcc/lto-section-names.h
  92ad85d667fb88ca0d727d1081d5a438  gcc/lto-section-out.cc
  022eda68922792984b6370af859619e4  gcc/lto-streamer-in.cc
! 054a9b36fe2ded148a1b5a48f0045193  gcc/lto-streamer-out.cc
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  89440b8d71857e40c8fa12dd9aa25491  gcc/lto-streamer.h
  e94a0111912c76e65824bb88bf99f44c  gcc/lto-wrapper.cc
*************** e44c0bf9cc0411d7bd57c6585eb6d0e4  gcc/lt
*** 6683,6689 ****
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! 6d9a8566cdf0d737aefa5b0fd8ce8682  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6690,6696 ----
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! de93a9cbed2bdc69c17f18891cdbd422  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** d02bb7b852c2149c474702f929b72f2d  gcc/m2
*** 7277,7283 ****
  b78b0219cda3cd36f38421786dc862e7  gcc/m2/lang.opt.urls
  36221d63a7a556b1dbbd7b2aa1ddd8fa  gcc/m2/m2-tree.def
  a93d546f180b351bb03d87a0bb03ef2f  gcc/m2/m2-tree.h
! ff4f0e458361e5c529411e0c50f22344  gcc/m2/m2.flex
  5a746491ae3bf9c7f8e19619535343e5  gcc/m2/mc-boot-ch/GBuiltins.cc
  1b007418233e66da62b4f51a04213000  gcc/m2/mc-boot-ch/GM2LINK.c
  83bd33f22f5e24ca4ef0bf03e371711f  gcc/m2/mc-boot-ch/GSYSTEM.c
--- 7284,7290 ----
  b78b0219cda3cd36f38421786dc862e7  gcc/m2/lang.opt.urls
  36221d63a7a556b1dbbd7b2aa1ddd8fa  gcc/m2/m2-tree.def
  a93d546f180b351bb03d87a0bb03ef2f  gcc/m2/m2-tree.h
! 2731299d727fa2c03f42276fc7e7c611  gcc/m2/m2.flex
  5a746491ae3bf9c7f8e19619535343e5  gcc/m2/mc-boot-ch/GBuiltins.cc
  1b007418233e66da62b4f51a04213000  gcc/m2/mc-boot-ch/GM2LINK.c
  83bd33f22f5e24ca4ef0bf03e371711f  gcc/m2/mc-boot-ch/GSYSTEM.c
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7626,7632 ****
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  db2ee1a68662c8370d59f7e4f6cf917b  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! 14b793da0f08024f228f394009a72743  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
--- 7633,7639 ----
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  db2ee1a68662c8370d59f7e4f6cf917b  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! 1c7f72caf770418dfd6f1fffa1baa93d  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
*************** a19998c2fc81af5121b51092d91b256b  gcc/me
*** 7635,7641 ****
  ebbe3379528e7b9db85647b877e5b0bb  gcc/memory-block.h
  b82061b2c90528a47ea29b04cf44de77  gcc/mkconfig.sh
  a9772a5a6b37efbf620593d1ecb9a9a2  gcc/mode-classes.def
! 7c54f78fff03db22e0e87662bf5c2ebb  gcc/mode-switching.cc
  05dd9bcbee4ec681bdb25810f43cfb53  gcc/modulo-sched.cc
  9c6a28ae7944e5f796f3439aa2df1d22  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
--- 7642,7648 ----
  ebbe3379528e7b9db85647b877e5b0bb  gcc/memory-block.h
  b82061b2c90528a47ea29b04cf44de77  gcc/mkconfig.sh
  a9772a5a6b37efbf620593d1ecb9a9a2  gcc/mode-classes.def
! 1ac97ddc1ff27aeab691ccffead79f6f  gcc/mode-switching.cc
  05dd9bcbee4ec681bdb25810f43cfb53  gcc/modulo-sched.cc
  9c6a28ae7944e5f796f3439aa2df1d22  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
*************** b5fc1a94542b80b1683d2bee465e42be  gcc/op
*** 7695,7703 ****
  28bb97827aab6913c7fa55727bd8cea0  gcc/optabs-query.h
  796aae3e1b58b2fba9ea35dae89dbcd2  gcc/optabs-tree.cc
  295bbec8fcdeeac30d6f914e52d4adc4  gcc/optabs-tree.h
! 6c91dcd704f35b58dcd74d442e295139  gcc/optabs.cc
! 70d148f0c420cc77d698f1d603fd9671  gcc/optabs.def
! 30d9b07650a135e2e68bbac98a0e0295  gcc/optabs.h
  d272f0cd2742999e36feb3973232a1dc  gcc/optc-gen.awk
  91c3b3785b12feb3fa4912e114cdd5a0  gcc/optc-save-gen.awk
  21519acd3156dd76a5986d7456365dc4  gcc/opth-gen.awk
--- 7702,7710 ----
  28bb97827aab6913c7fa55727bd8cea0  gcc/optabs-query.h
  796aae3e1b58b2fba9ea35dae89dbcd2  gcc/optabs-tree.cc
  295bbec8fcdeeac30d6f914e52d4adc4  gcc/optabs-tree.h
! c9fef63de59454b93afa15203c1e321c  gcc/optabs.cc
! 42f80e18dbe87fb8f376473c842899b2  gcc/optabs.def
! fe27687b66727b0800e152caad7a6829  gcc/optabs.h
  d272f0cd2742999e36feb3973232a1dc  gcc/optc-gen.awk
  91c3b3785b12feb3fa4912e114cdd5a0  gcc/optc-save-gen.awk
  21519acd3156dd76a5986d7456365dc4  gcc/opth-gen.awk
*************** e3f908061f2b051f55381b513a49022b  gcc/pa
*** 7727,7733 ****
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! f8d394833639f17d5d7573006c0a5dd8  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  ad3ed4d3a0135fbf9610627185805a14  gcc/po/be.po
  f06a600ee92348bc59755f3b4e3508bd  gcc/po/da.po
--- 7734,7740 ----
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! aada76b74d192a74a0f06c0b61d666c0  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  ad3ed4d3a0135fbf9610627185805a14  gcc/po/be.po
  f06a600ee92348bc59755f3b4e3508bd  gcc/po/da.po
*************** e97a8754688d7e55785fc0c15f5fae20  gcc/po
*** 7745,7755 ****
  8b02cf1040a718f8a94520e44a5d64ee  gcc/po/nl.po
  283eb799328c71583ee2d31139dc75e1  gcc/po/ru.po
  49c6f25b92dbcac486191d02ed2ff475  gcc/po/sr.po
! 17f3680529ff95aa2f97eba8f6a2026e  gcc/po/sv.po
  54ded6be61153742ab246036bba96cb4  gcc/po/tr.po
  b4c32ff4e5ca9301187557f4169661ac  gcc/po/uk.po
  70f1d6d8472dae5eb46823c0a1022832  gcc/po/vi.po
! 3851d36ef407c3ab13cb9fb1f2383a3e  gcc/po/zh_CN.po
  b738479ec22d37eb065644041600a079  gcc/po/zh_TW.po
  449bc0bffc750333208eec740b03a2c4  gcc/pointer-query.cc
  9e3a1ed4de088e9a46c7b6839471d431  gcc/pointer-query.h
--- 7752,7762 ----
  8b02cf1040a718f8a94520e44a5d64ee  gcc/po/nl.po
  283eb799328c71583ee2d31139dc75e1  gcc/po/ru.po
  49c6f25b92dbcac486191d02ed2ff475  gcc/po/sr.po
! 2dbe70e9733db8ccc56e287d4d44fdd4  gcc/po/sv.po
  54ded6be61153742ab246036bba96cb4  gcc/po/tr.po
  b4c32ff4e5ca9301187557f4169661ac  gcc/po/uk.po
  70f1d6d8472dae5eb46823c0a1022832  gcc/po/vi.po
! 5417b6136960b041ba20098b4f72b944  gcc/po/zh_CN.po
  b738479ec22d37eb065644041600a079  gcc/po/zh_TW.po
  449bc0bffc750333208eec740b03a2c4  gcc/pointer-query.cc
  9e3a1ed4de088e9a46c7b6839471d431  gcc/pointer-query.h
*************** e8c35569a14575916739eaf1432f7c19  gcc/pr
*** 7777,7787 ****
  baf3f698b3459c32f628569084b80d9c  gcc/profile-count.h
  be294583d74c167da1819e51e9001b52  gcc/profile.cc
  d30f617ac9705fc7dc5d14e744fe4ff0  gcc/profile.h
! 2869a390ab1988f2c3c7f610e74f7025  gcc/range-op-float.cc
! 5ee20dec11c42aba14ee0af712f68d8c  gcc/range-op-mixed.h
! dfaf9316130095b40359ce1d144199d4  gcc/range-op-ptr.cc
! 34099741f49c36f778c51a938ec15418  gcc/range-op.cc
! 714eb115a8f52ea19851d148580bab3c  gcc/range-op.h
  e1edfa2841ce0f9e30db7b34a3a5a6d7  gcc/range.cc
  e1ebdb36533cc50099a4b487e7c70c49  gcc/range.h
  fbf6cd31aa699eaf7943473f49a25df6  gcc/read-md.cc
--- 7784,7794 ----
  baf3f698b3459c32f628569084b80d9c  gcc/profile-count.h
  be294583d74c167da1819e51e9001b52  gcc/profile.cc
  d30f617ac9705fc7dc5d14e744fe4ff0  gcc/profile.h
! cd6310734ad3891bc0e87e42637f183e  gcc/range-op-float.cc
! d6a9aa6c86860ab130f496f372c3c113  gcc/range-op-mixed.h
! 1ec27428c1d18680765a21ac815ffb7e  gcc/range-op-ptr.cc
! 1330ef79e221ce00965378964ff32327  gcc/range-op.cc
! cd3f902ddf6d735eb53ecce834808827  gcc/range-op.h
  e1edfa2841ce0f9e30db7b34a3a5a6d7  gcc/range.cc
  e1ebdb36533cc50099a4b487e7c70c49  gcc/range.h
  fbf6cd31aa699eaf7943473f49a25df6  gcc/read-md.cc
*************** cfd72298c4b4412115571bb0330d1cb4  gcc/re
*** 7795,7803 ****
  ec455f45b6b3263f840fb385563308d7  gcc/realmpfr.h
  449f854c654a1e9f1d268858607c576e  gcc/recog.cc
  d6625bf8e7676e7c0d45da5ca515ab06  gcc/recog.h
! 29f0358d26dd3f8be1417f9a16c71806  gcc/ree.cc
  40ff12eae68d7c45fee63cfa20a67634  gcc/reg-notes.def
! aa0ee68df72d26f412ede3144ff99d42  gcc/reg-stack.cc
  326cfd57c1bbde18df46f04749c95d4c  gcc/regcprop.cc
  a15f939ddd4de2fc2a6dc44a5344d39f  gcc/regcprop.h
  fcafe43f1a7955c6e00e7b1301dae7ad  gcc/regenerate-attr-urls.py
--- 7802,7810 ----
  ec455f45b6b3263f840fb385563308d7  gcc/realmpfr.h
  449f854c654a1e9f1d268858607c576e  gcc/recog.cc
  d6625bf8e7676e7c0d45da5ca515ab06  gcc/recog.h
! d88ebbb33fb2dcd60634dd11046fb909  gcc/ree.cc
  40ff12eae68d7c45fee63cfa20a67634  gcc/reg-notes.def
! d9a5b27b6a11b7f53410e3e8959a2d6b  gcc/reg-stack.cc
  326cfd57c1bbde18df46f04749c95d4c  gcc/regcprop.cc
  a15f939ddd4de2fc2a6dc44a5344d39f  gcc/regcprop.h
  fcafe43f1a7955c6e00e7b1301dae7ad  gcc/regenerate-attr-urls.py
*************** cc2f2f430f74c1a27d90af76f5ba9968  gcc/re
*** 7810,7816 ****
  5b59a47effade972ba7fb7828523040e  gcc/regstat.cc
  0a526dff109f2a3a516b7da8c5c62880  gcc/reload.cc
  07d9f7e7e50f81b7ad3ba330db03ac74  gcc/reload.h
! 0aeada5c5ec7263e68f2ebdeebb80434  gcc/reload1.cc
  5f98bc970b6b57607551ccefdca5ef67  gcc/reorg.cc
  94c50f93bf70c1392a5a5101e39945e3  gcc/resource.cc
  8fa0648a64843c58c93433f33ae94d2b  gcc/resource.h
--- 7817,7823 ----
  5b59a47effade972ba7fb7828523040e  gcc/regstat.cc
  0a526dff109f2a3a516b7da8c5c62880  gcc/reload.cc
  07d9f7e7e50f81b7ad3ba330db03ac74  gcc/reload.h
! 063d7a5cd58736bb92049563552e6b27  gcc/reload1.cc
  5f98bc970b6b57607551ccefdca5ef67  gcc/reorg.cc
  94c50f93bf70c1392a5a5101e39945e3  gcc/resource.cc
  8fa0648a64843c58c93433f33ae94d2b  gcc/resource.h
*************** add2ef65d80adc09236eaff62179a1fe  gcc/rt
*** 7841,7847 ****
  f39c55472711c984059aff01fd972f31  gcc/rtl-tests.cc
  1105088521e8de72d332faeda31306c7  gcc/rtl.cc
  41ece3c6a40e9a14609645318016e228  gcc/rtl.def
! 2c14563ff94dd58ad735870e9cde040e  gcc/rtl.h
  4ee5bf7f59df8ad15a444be0bc71cb4e  gcc/rtlanal.cc
  e38f02dbd2d0d8c027ccae4b785f3fb2  gcc/rtlanal.h
  f829c444b36f34672cb4a7b019c4513b  gcc/rtlhash.cc
--- 7848,7854 ----
  f39c55472711c984059aff01fd972f31  gcc/rtl-tests.cc
  1105088521e8de72d332faeda31306c7  gcc/rtl.cc
  41ece3c6a40e9a14609645318016e228  gcc/rtl.def
! e390dda8ed56a23de938d5081f0a8da3  gcc/rtl.h
  4ee5bf7f59df8ad15a444be0bc71cb4e  gcc/rtlanal.cc
  e38f02dbd2d0d8c027ccae4b785f3fb2  gcc/rtlanal.h
  f829c444b36f34672cb4a7b019c4513b  gcc/rtlhash.cc
*************** fb344dad78b286c2b8b8160a6e94c227  gcc/sc
*** 8353,8359 ****
  f3f91b05871a5c5bcd83669050a57d5b  gcc/sched-rgn.cc
  d5883fe67035b957b076e12093fdb2a8  gcc/sel-sched-dump.cc
  b69c0a60b87460456bf02111f39310dd  gcc/sel-sched-dump.h
! 4ac31ca7bb0654fbae926ad8ffa23008  gcc/sel-sched-ir.cc
  8352df111cb1e4c8fe8cbf4b30002511  gcc/sel-sched-ir.h
  3c55426387224f4699c9d51fdbd5b547  gcc/sel-sched.cc
  22faf0ae842883b3a08f6e9137ac2315  gcc/sel-sched.h
--- 8360,8366 ----
  f3f91b05871a5c5bcd83669050a57d5b  gcc/sched-rgn.cc
  d5883fe67035b957b076e12093fdb2a8  gcc/sel-sched-dump.cc
  b69c0a60b87460456bf02111f39310dd  gcc/sel-sched-dump.h
! 388e20a0745ec589f1e7bfd09ceef6f2  gcc/sel-sched-ir.cc
  8352df111cb1e4c8fe8cbf4b30002511  gcc/sel-sched-ir.h
  3c55426387224f4699c9d51fdbd5b547  gcc/sel-sched.cc
  22faf0ae842883b3a08f6e9137ac2315  gcc/sel-sched.h
*************** ab96230d11b93b85d4d1b85cc5d494ab  gcc/se
*** 8375,8381 ****
  71b83bf173726493d9fee558216a2e02  gcc/sese.cc
  62e0bec4b0ac9f8e027af35a2c2e2330  gcc/sese.h
  9123313dafdd85df1e747e738274ee2c  gcc/shortest-paths.h
! cf0f1ba732134068141dc67a09cd47ce  gcc/shrink-wrap.cc
  125f9b6a6cf86e28e0a76470fb3c1f11  gcc/shrink-wrap.h
  50d9999185408bcae454174489317b68  gcc/signop.h
  c3069c84ca5c36bf2bde3a7644ce7130  gcc/simple-diagnostic-path.cc
--- 8382,8388 ----
  71b83bf173726493d9fee558216a2e02  gcc/sese.cc
  62e0bec4b0ac9f8e027af35a2c2e2330  gcc/sese.h
  9123313dafdd85df1e747e738274ee2c  gcc/shortest-paths.h
! 2b3e8f7222148471de23e5a550500206  gcc/shrink-wrap.cc
  125f9b6a6cf86e28e0a76470fb3c1f11  gcc/shrink-wrap.h
  50d9999185408bcae454174489317b68  gcc/signop.h
  c3069c84ca5c36bf2bde3a7644ce7130  gcc/simple-diagnostic-path.cc
*************** d52852ab0122f14cd4f7658db8b9c6df  gcc/sy
*** 8421,8427 ****
  5dcfbac7f32752af3034f02319af81d7  gcc/symtab-clones.h
  f849345d69b622ff9e7b96095bc2c34e  gcc/symtab-thunks.cc
  c9829745147a0b8ec026a3c5029fe2ff  gcc/symtab-thunks.h
! 8a1aae39e11b136fc986f57ee29cbe43  gcc/symtab.cc
  b3a965e425e6cf7888319667faf58da9  gcc/sync-builtins.def
  b1497a03867668af210c32280876fdd7  gcc/system.h
  480d916fe042a150001ad88e88521c08  gcc/target-def.h
--- 8428,8434 ----
  5dcfbac7f32752af3034f02319af81d7  gcc/symtab-clones.h
  f849345d69b622ff9e7b96095bc2c34e  gcc/symtab-thunks.cc
  c9829745147a0b8ec026a3c5029fe2ff  gcc/symtab-thunks.h
! aa2f440763246662044c0f16f1c5e858  gcc/symtab.cc
  b3a965e425e6cf7888319667faf58da9  gcc/sync-builtins.def
  b1497a03867668af210c32280876fdd7  gcc/system.h
  480d916fe042a150001ad88e88521c08  gcc/target-def.h
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8434,8440 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! cc69408b69707db692333b34dec57f92  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8441,8447 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 2ba6da70ca16b9ebfbaeb9d2ea27ac58  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** eaa6db1ea7ec94af6a5743a71b3c75b4  gcc/te
*** 13482,13487 ****
--- 13489,13495 ----
  fd2495c48b560caf7d762a464c77b115  gcc/testsuite/c-c++-common/pr118205.c
  7f267008b2230604a2b8a18847bf6734  gcc/testsuite/c-c++-common/pr118430.c
  0c3f46dedcdae63c945f3862b8e0e0ed  gcc/testsuite/c-c++-common/pr118442.c
+ b9a8aec047c2f12c7f72664dd60db31d  gcc/testsuite/c-c++-common/pr118868-1.c
  9f9f311706b25a7ff3dc8c24217e450d  gcc/testsuite/c-c++-common/pr119120.c
  22363cf3b52c3325225501562eae57e5  gcc/testsuite/c-c++-common/pr119483-1.c
  e3fe3563b6876205af64f1ab4c219eb3  gcc/testsuite/c-c++-common/pr119483-2.c
*************** db2bfc8380fd1e62f000b54dfdcfd976  gcc/te
*** 14387,14395 ****
  f456a5ff39ab3b5cd7b09f407dbc7751  gcc/testsuite/cobol.dg/dg.exp
  a1fc188c12430e21de6bc4300334ed8a  gcc/testsuite/cobol.dg/error-1.cob
  25cc9f40c748ffa5428ace6fdad21f50  gcc/testsuite/cobol.dg/fail.cob
! d34be5aa4f7d69580259b32b0b88455e  gcc/testsuite/cobol.dg/group1/check_88.cob
  db28dfa30d559599116ed73bed8ba2c7  gcc/testsuite/cobol.dg/group1/comp5.cob
! bcbdc000c605fe532303b809531919b8  gcc/testsuite/cobol.dg/group1/declarative_1.cob
  a30a2548a358ec40d49dfe00d4ec3eb0  gcc/testsuite/cobol.dg/group1/display.cob
  4fd2be220262c4a4f7449e21264280fc  gcc/testsuite/cobol.dg/group1/display2.cob
  ff3d9ce537b0e962e3ff423385891362  gcc/testsuite/cobol.dg/group1/escape.cob
--- 14395,14403 ----
  f456a5ff39ab3b5cd7b09f407dbc7751  gcc/testsuite/cobol.dg/dg.exp
  a1fc188c12430e21de6bc4300334ed8a  gcc/testsuite/cobol.dg/error-1.cob
  25cc9f40c748ffa5428ace6fdad21f50  gcc/testsuite/cobol.dg/fail.cob
! 6dbf2bea1d77e1b1a1d788500e5b387e  gcc/testsuite/cobol.dg/group1/check_88.cob
  db28dfa30d559599116ed73bed8ba2c7  gcc/testsuite/cobol.dg/group1/comp5.cob
! 8b649e919b79f028012b621f1eb03473  gcc/testsuite/cobol.dg/group1/declarative_1.cob
  a30a2548a358ec40d49dfe00d4ec3eb0  gcc/testsuite/cobol.dg/group1/display.cob
  4fd2be220262c4a4f7449e21264280fc  gcc/testsuite/cobol.dg/group1/display2.cob
  ff3d9ce537b0e962e3ff423385891362  gcc/testsuite/cobol.dg/group1/escape.cob
*************** d05ac6fedd74d96b8e1466d0110a8fdb  gcc/te
*** 14420,14427 ****
  474497d0d9932a1aab0b9170a17813c6  gcc/testsuite/cobol.dg/group2/ADD_CORRESPONDING.cob
  767d019c56f84421d2032de38d5d7a66  gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.cob
  8fd96e62b5175b3043acd696faa33b48  gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.out
! 308a00db2b24d1c4748c016e221cfaed  gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob
! 0e8abc3ff0162b7f5b0a39a7c5184573  gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out
  8f0656d61e90ca0e664146f324d6a710  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob
  2b1582f66ad9f780abf8a240d7a2362c  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.out
  3f46e56a7a70b93a9ec8f0338c27535c  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob
--- 14428,14435 ----
  474497d0d9932a1aab0b9170a17813c6  gcc/testsuite/cobol.dg/group2/ADD_CORRESPONDING.cob
  767d019c56f84421d2032de38d5d7a66  gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.cob
  8fd96e62b5175b3043acd696faa33b48  gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.out
! 41b22c71a81bf978936f067a5e86fbca  gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob
! d027fc8d21ca1611a90d0c14e0d761bb  gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out
  8f0656d61e90ca0e664146f324d6a710  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob
  2b1582f66ad9f780abf8a240d7a2362c  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.out
  3f46e56a7a70b93a9ec8f0338c27535c  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob
*************** ead1f36f491fbcf2f8c5934348162ae0  gcc/te
*** 14711,14735 ****
  99d55c0be2cdb43ce848d5f01632f68c  gcc/testsuite/cobol.dg/group2/INSPECT_BACKWARD_simple_TALLYING.out
  058646f1f1ece86ff1566d76196dc06f  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_NULL.cob
  2fc81b1d02d22ad7740fa1e18f09d394  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constant.cob
! 099cea5849a1b7640f87859d868396ff  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob
! 7aa39c6d21d122277fdeefb41ced037a  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out
! c1c517bbaa6c584a3d715ade80aa18c9  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob
  28b183457c03adb078fa91f4a8150fed  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.out
! df690f4f23ad3fed0c1621643cf6b2ac  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob
  08556188ad41151849881b9a6f0d0a33  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.out
! 0bfaf296c2fb11b4afa65e0c7798f951  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob
  fdfb3dc2b9735cbe887d03147369a3cc  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.out
! d8504c87ddee0f9c464f5b49fa044eb3  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob
  91f5a07cc9b72ec1c09a50a81ae0ffdb  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.out
! a00d39f1507b4945dfc43e5b73057885  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob
  2c1d3bb5db82a97ce5d7540ffc67dcbe  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.out
  52092c9aff24e2f54a8e4535e369a069  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-r.cob
  246ed1e6a601496d05efb276f9fdf5da  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-r.out
  a428833cf91a3ada64cd8637a547c4a9  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5.cob
  dcc2eb016f705df7ad97ebdf85854454  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5.out
! c94f25f72ca7e9b19b3096c24f8c5df6  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob
  ff08d1a4483a22fd540f344cadcbfb52  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.out
! ee2382fa9d2d416428791140d3099b7d  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob
  a7910735e17060f2f8ce3d93ff13ca14  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.out
  b66f419a027d04379a43e95d166d37b6  gcc/testsuite/cobol.dg/group2/INSPECT_No_repeat_conversion_check.cob
  9be81b0bf1b87e4506eb4052e7db6289  gcc/testsuite/cobol.dg/group2/INSPECT_REPLACING_LEADING_ZEROS_BY_SPACES.cob
--- 14719,14743 ----
  99d55c0be2cdb43ce848d5f01632f68c  gcc/testsuite/cobol.dg/group2/INSPECT_BACKWARD_simple_TALLYING.out
  058646f1f1ece86ff1566d76196dc06f  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_NULL.cob
  2fc81b1d02d22ad7740fa1e18f09d394  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constant.cob
! 3fd332a73a25809c1f32be0852877123  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob
! 86271bbfced1dbb2e3d79743fcaf01e8  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out
! 26fa67a6b7f3967cff667cf39d1f7616  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob
  28b183457c03adb078fa91f4a8150fed  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.out
! 191d37ef27c96c54a7cb610c0f5dcaab  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob
  08556188ad41151849881b9a6f0d0a33  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.out
! 8c7b0420f09784a736295cd3754220ea  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob
  fdfb3dc2b9735cbe887d03147369a3cc  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.out
! 1287680db8ff8bfa6ea856a56b56dc5d  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob
  91f5a07cc9b72ec1c09a50a81ae0ffdb  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.out
! 7fbe3d9b657916ef795b247fa838f671  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob
  2c1d3bb5db82a97ce5d7540ffc67dcbe  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.out
  52092c9aff24e2f54a8e4535e369a069  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-r.cob
  246ed1e6a601496d05efb276f9fdf5da  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-r.out
  a428833cf91a3ada64cd8637a547c4a9  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5.cob
  dcc2eb016f705df7ad97ebdf85854454  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5.out
! be0eef4c122af745e8e8ca19faed2cd0  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob
  ff08d1a4483a22fd540f344cadcbfb52  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.out
! 8ca7ca3dec39ca2f1419f6a8450425cf  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob
  a7910735e17060f2f8ce3d93ff13ca14  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.out
  b66f419a027d04379a43e95d166d37b6  gcc/testsuite/cobol.dg/group2/INSPECT_No_repeat_conversion_check.cob
  9be81b0bf1b87e4506eb4052e7db6289  gcc/testsuite/cobol.dg/group2/INSPECT_REPLACING_LEADING_ZEROS_BY_SPACES.cob
*************** c94667798e53c8974de0912e64b9f68a  gcc/te
*** 14783,14788 ****
--- 14791,14798 ----
  cf6cb0baac26cccf2005d78a4a1afb78  gcc/testsuite/cobol.dg/group2/MULTIPLY_to_FIX4.out
  94f742027b483c887f7c7d9b88ce3763  gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob
  92cebaacd47235a03b5cdfc283882a86  gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out
+ b0cd20ec9807fca430e620486c4f9568  gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob
+ 3b4538b5070b02cf4ebc653902e53e31  gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out
  860bb03d750b0e6019c8c327424cfe69  gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob
  4138538135757cec647177acf7df8383  gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.out
  74218fe0c6b8b43e4de4bc3003808fd7  gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob
*************** e1aa0c563084dd7030c3c474c45a09dd  gcc/te
*** 15067,15072 ****
--- 15077,15083 ----
  5d32a57ca7aab107c9dd3260fd19e71e  gcc/testsuite/g++.dg/abi/arm_va_list2.h
  b361f75cc1cf98783fc3952644d52df5  gcc/testsuite/g++.dg/abi/base-defaulted1.C
  ab9dbf10518ce1225eef105684f83eba  gcc/testsuite/g++.dg/abi/base-defaulted1a.C
+ c2ccbaf203c367700b9ab4aeb77c0565  gcc/testsuite/g++.dg/abi/base-defaulted2.C
  dfa3e514ddbfea694774f9c287f40215  gcc/testsuite/g++.dg/abi/bitfield1.C
  9966069a163a3254b4d24ab2f38965c2  gcc/testsuite/g++.dg/abi/bitfield10.C
  e5e5ef8164ac7b43c7f20df7cfcd9b99  gcc/testsuite/g++.dg/abi/bitfield11.C
*************** cbcf61ac3695e850097b05502475b900  gcc/te
*** 16060,16069 ****
  8e506a07bfdc2a3026e690db3623924e  gcc/testsuite/g++.dg/coroutines/co-await-syntax-06-main.C
  68773c43aeb0b545b4c8f3607030c59d  gcc/testsuite/g++.dg/coroutines/co-await-syntax-07-varargs.C
  8c6d64e743263e804e271816758eee9d  gcc/testsuite/g++.dg/coroutines/co-await-syntax-08-lambda-auto.C
! d55bcf698a9eac24abcdc2b03f69ae41  gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C
! 25347f0b2c215dd1765382a13da50787  gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C
! ca053d5ed04579f51973e13fbabe5372  gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C
! 42365d3c97f64472b757e666f12fb257  gcc/testsuite/g++.dg/coroutines/co-await-void_type.C
  5def3f379c766ef125c81bd35abefe0a  gcc/testsuite/g++.dg/coroutines/co-return-syntax-01-outside-fn.C
  98e775f5b34dcef6b160d65d69459313  gcc/testsuite/g++.dg/coroutines/co-return-syntax-02-outside-fn.C
  931afa81004c531aeaa7975c306a05e3  gcc/testsuite/g++.dg/coroutines/co-return-syntax-03-auto.C
--- 16071,16080 ----
  8e506a07bfdc2a3026e690db3623924e  gcc/testsuite/g++.dg/coroutines/co-await-syntax-06-main.C
  68773c43aeb0b545b4c8f3607030c59d  gcc/testsuite/g++.dg/coroutines/co-await-syntax-07-varargs.C
  8c6d64e743263e804e271816758eee9d  gcc/testsuite/g++.dg/coroutines/co-await-syntax-08-lambda-auto.C
! eb915b780881f28d03dc9f6800f0db70  gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C
! 4feef272e98391897a3783ded58efcf9  gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C
! 9e62f44891c288ec815b136b67dcab6d  gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C
! 1bb85192f6b7cec9fa1c504a9a49de32  gcc/testsuite/g++.dg/coroutines/co-await-void_type.C
  5def3f379c766ef125c81bd35abefe0a  gcc/testsuite/g++.dg/coroutines/co-return-syntax-01-outside-fn.C
  98e775f5b34dcef6b160d65d69459313  gcc/testsuite/g++.dg/coroutines/co-return-syntax-02-outside-fn.C
  931afa81004c531aeaa7975c306a05e3  gcc/testsuite/g++.dg/coroutines/co-return-syntax-03-auto.C
*************** a8b153bbc8ce941d24c7c0e6ab6c5831  gcc/te
*** 16074,16080 ****
  01b708a2c3de35e1c4714ed8e4223ac4  gcc/testsuite/g++.dg/coroutines/co-return-syntax-08-bad-return.C
  3583594a4a80757f5d4368c8d77a858c  gcc/testsuite/g++.dg/coroutines/co-return-syntax-09-lambda-auto.C
  6707f9fc8aacf660ae1beb8d09e4c119  gcc/testsuite/g++.dg/coroutines/co-return-syntax-10-movable.C
! 85e7e0815826bd828101765c5fd78a66  gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C
  aa517ad92377039530de5c9dc496beda  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-00-needs-expr.C
  0abd63fb6f8e1606f97bfe8ff8a599e2  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-01-outside-fn.C
  8aaabb6f3807b758e6042bc711be4dae  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-02-outside-fn.C
--- 16085,16091 ----
  01b708a2c3de35e1c4714ed8e4223ac4  gcc/testsuite/g++.dg/coroutines/co-return-syntax-08-bad-return.C
  3583594a4a80757f5d4368c8d77a858c  gcc/testsuite/g++.dg/coroutines/co-return-syntax-09-lambda-auto.C
  6707f9fc8aacf660ae1beb8d09e4c119  gcc/testsuite/g++.dg/coroutines/co-return-syntax-10-movable.C
! 41121b0c10ae061c11e86e4cb97731de  gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C
  aa517ad92377039530de5c9dc496beda  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-00-needs-expr.C
  0abd63fb6f8e1606f97bfe8ff8a599e2  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-01-outside-fn.C
  8aaabb6f3807b758e6042bc711be4dae  gcc/testsuite/g++.dg/coroutines/co-yield-syntax-02-outside-fn.C
*************** cb41fef7448625fa4e0c8fd96e24fc4d  gcc/te
*** 16112,16118 ****
  478574fcd282b18447d13478fa0bec3f  gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
  6f5627b19b794cfdd383607165c8ad4e  gcc/testsuite/g++.dg/coroutines/coro1-refs-and-ctors.h
  6487c0454968e62ff493f215450a35cc  gcc/testsuite/g++.dg/coroutines/coro1-ret-int-yield-int.h
- 1c56e1e606c086d4fa5237e15e9d14e2  gcc/testsuite/g++.dg/coroutines/coroutines.exp
  6ece11b45159f25b68242745f908d279  gcc/testsuite/g++.dg/coroutines/maybe-unused-1.C
  de5003b6efc45fbdb82fb3c9a14023b0  gcc/testsuite/g++.dg/coroutines/nodiscard-1.C
  38480902b130e861149d8b8b006e7e6b  gcc/testsuite/g++.dg/coroutines/pr100127.C
--- 16123,16128 ----
*************** b90769c3a7417b0adde5c9f3b39d0437  gcc/te
*** 16179,16185 ****
  844da37d9c2a92221e79e7ca2f78001b  gcc/testsuite/g++.dg/coroutines/pr94528.C
  a3782dccef07620df707f8dac0a7c64a  gcc/testsuite/g++.dg/coroutines/pr94682-preview-this.C
  f94b132c0aae8eaa2355126af9e65707  gcc/testsuite/g++.dg/coroutines/pr94752.C
! c41c0f3460d21e0c4db49f70ce077c29  gcc/testsuite/g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C
  bd516c5865d9e7ccb7376cdd2e004d0f  gcc/testsuite/g++.dg/coroutines/pr94817.C
  80f2ddf6e7fa3b7d98d16dcb37394788  gcc/testsuite/g++.dg/coroutines/pr94829.C
  ef62b6c91b84ae78415b2ba2e4047e03  gcc/testsuite/g++.dg/coroutines/pr94879-folly-1.C
--- 16189,16195 ----
  844da37d9c2a92221e79e7ca2f78001b  gcc/testsuite/g++.dg/coroutines/pr94528.C
  a3782dccef07620df707f8dac0a7c64a  gcc/testsuite/g++.dg/coroutines/pr94682-preview-this.C
  f94b132c0aae8eaa2355126af9e65707  gcc/testsuite/g++.dg/coroutines/pr94752.C
! 241ac4eff23cb81753c57fe65ff101c4  gcc/testsuite/g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C
  bd516c5865d9e7ccb7376cdd2e004d0f  gcc/testsuite/g++.dg/coroutines/pr94817.C
  80f2ddf6e7fa3b7d98d16dcb37394788  gcc/testsuite/g++.dg/coroutines/pr94829.C
  ef62b6c91b84ae78415b2ba2e4047e03  gcc/testsuite/g++.dg/coroutines/pr94879-folly-1.C
*************** e7ca2ef0f0db55f629fcfb4d4227cd60  gcc/te
*** 16226,16234 ****
  0cec125b267a422a079f909dda92cd2c  gcc/testsuite/g++.dg/coroutines/pr99576_1.C
  e0e80f95fcb4e480b7182ba78ffa650c  gcc/testsuite/g++.dg/coroutines/pr99576_2.C
  a52a8d452461422c8ad1bacec0e8c15f  gcc/testsuite/g++.dg/coroutines/pr99710.C
! e7bb995fa07196c08314fc0081a084b5  gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
  231dc0079b4e5761aeb42ad29fc8b10f  gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
! b20128a63d58ad415e364a1cb2b42907  gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
  7c8fc2e11a99ae24431837595e7d9cf4  gcc/testsuite/g++.dg/coroutines/ramp-return.h
  0072292ac35a537d3aa2d5c9d15ee1c4  gcc/testsuite/g++.dg/coroutines/range-for1.C
  7e8de6b0fc60120c38dc4453ebd5fd4e  gcc/testsuite/g++.dg/coroutines/range-for2.C
--- 16236,16244 ----
  0cec125b267a422a079f909dda92cd2c  gcc/testsuite/g++.dg/coroutines/pr99576_1.C
  e0e80f95fcb4e480b7182ba78ffa650c  gcc/testsuite/g++.dg/coroutines/pr99576_2.C
  a52a8d452461422c8ad1bacec0e8c15f  gcc/testsuite/g++.dg/coroutines/pr99710.C
! 556c0a9c0d7998ff4488f25472322dbe  gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
  231dc0079b4e5761aeb42ad29fc8b10f  gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
! 475f4e807ea15512866a23c8f0e20ee0  gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
  7c8fc2e11a99ae24431837595e7d9cf4  gcc/testsuite/g++.dg/coroutines/ramp-return.h
  0072292ac35a537d3aa2d5c9d15ee1c4  gcc/testsuite/g++.dg/coroutines/range-for1.C
  7e8de6b0fc60120c38dc4453ebd5fd4e  gcc/testsuite/g++.dg/coroutines/range-for2.C
*************** c9399095e908bfb2c338755b0557db76  gcc/te
*** 18127,18132 ****
--- 18137,18143 ----
  0b31d0d3f6b2fa94663ed8a6941f2a4f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice30.C
  0c30efad493d2dad3526fe6eae9e0ec9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice31.C
  7e07661dc1ca992b2b4883b3ef8927b7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice32.C
+ fdbab9f4c5a5a78f06954c8b6b7da3cf  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice33.C
  47226bea0ac5dc3c286fd8fe05473a80  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice4.C
  08db2d244c01eaf3577fdfbf5896e831  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C
  013befc905429c5e9dd82dd968dd005e  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice6.C
*************** fddd8f40a7321e1f9eae3f84076aa16d  gcc/te
*** 26289,26294 ****
--- 26300,26307 ----
  2d9f4b9c8b6b22468a70e970295d675b  gcc/testsuite/g++.dg/modules/clone-2_b.C
  f4151476d383dfa58ec57d84af229960  gcc/testsuite/g++.dg/modules/clone-3_a.C
  43bdc6e1ffd552c18c3f46ba0d9b6353  gcc/testsuite/g++.dg/modules/clone-3_b.C
+ 1dbe55cb66e8ff8caec75c9be7f2c9e3  gcc/testsuite/g++.dg/modules/clone-4_a.C
+ 2dcd18d0e8acb35a37c7d8189b2a1450  gcc/testsuite/g++.dg/modules/clone-4_b.C
  a7ee3a8d76bc139c4cf52d3492a2aff4  gcc/testsuite/g++.dg/modules/concept-10_a.H
  2006efa004cac463749325d18b100fdd  gcc/testsuite/g++.dg/modules/concept-10_b.C
  c2514fb24a7f14f1f1edfc9217a858f2  gcc/testsuite/g++.dg/modules/concept-11_a.H
*************** b66a905fae26f7efc4eaf3f3c60a6b65  gcc/te
*** 26976,26982 ****
  e83f9a9aca70673da8258ca0631a2125  gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C
  ad9ef329572dab16f2d3d5613538cd3f  gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C
  95ab3577dee99f3d59838a96f1cbf4fc  gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
! bbb42c3f40f239c2fad38126884d3bfd  gcc/testsuite/g++.dg/modules/modules.exp
  f49c118362c9a45e801940d0725a767d  gcc/testsuite/g++.dg/modules/mutual-friend.ii
  ebce3d8effe71472ad6b1910c0b435f6  gcc/testsuite/g++.dg/modules/namespace-1_a.C
  c34c17e18223f5c84607e68a5f2dd81a  gcc/testsuite/g++.dg/modules/namespace-1_b.C
--- 26989,26995 ----
  e83f9a9aca70673da8258ca0631a2125  gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C
  ad9ef329572dab16f2d3d5613538cd3f  gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C
  95ab3577dee99f3d59838a96f1cbf4fc  gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
! 01ccb2b6298aefa6bdbf400348e85b26  gcc/testsuite/g++.dg/modules/modules.exp
  f49c118362c9a45e801940d0725a767d  gcc/testsuite/g++.dg/modules/mutual-friend.ii
  ebce3d8effe71472ad6b1910c0b435f6  gcc/testsuite/g++.dg/modules/namespace-1_a.C
  c34c17e18223f5c84607e68a5f2dd81a  gcc/testsuite/g++.dg/modules/namespace-1_b.C
*************** c637ff229e67ef7204c508f84142a2dc  gcc/te
*** 27052,27057 ****
--- 27065,27071 ----
  34456a885afd5a670c7b1b36d6100de6  gcc/testsuite/g++.dg/modules/only-1.C
  457cc97eb504e8bcc8d9e91eb9ca090c  gcc/testsuite/g++.dg/modules/only-2.C
  05f020b885cb1696012f8f737d88e9c5  gcc/testsuite/g++.dg/modules/only-3.C
+ 8f1227574f0ef85c681751f390f06b21  gcc/testsuite/g++.dg/modules/openmp-1.C
  f393f31348fe15bf7b4624e5ca1f4f88  gcc/testsuite/g++.dg/modules/operator-1_a.C
  5c06e271381a24e83bfc8cee53a57923  gcc/testsuite/g++.dg/modules/operator-1_b.C
  649426acee362ea5158fa798c70173ca  gcc/testsuite/g++.dg/modules/operator-2_a.C
*************** a77c891669f0a055187ee6fa412c556b  gcc/te
*** 27517,27522 ****
--- 27531,27538 ----
  78ad19733ba75cd1add96ab6253916a2  gcc/testsuite/g++.dg/modules/tpl-friend-18_a.C
  0f347960cdc623a32af4678fbc686f1e  gcc/testsuite/g++.dg/modules/tpl-friend-18_b.C
  f9cb26c60747d2f029b81b085c2cfd0b  gcc/testsuite/g++.dg/modules/tpl-friend-18_c.C
+ dd2b326a8be0ea4de68d4eb25ff13b1f  gcc/testsuite/g++.dg/modules/tpl-friend-19_a.C
+ e3bd50a245519b8174ffa1fb5209898b  gcc/testsuite/g++.dg/modules/tpl-friend-19_b.C
  051a2753ec2e8d615e18875ab2746fa8  gcc/testsuite/g++.dg/modules/tpl-friend-1_a.C
  2d9be0b173bceba0cbfd5a1ee4909f4c  gcc/testsuite/g++.dg/modules/tpl-friend-1_b.C
  d36e0a1f34b1d7f2cacd00844d768335  gcc/testsuite/g++.dg/modules/tpl-friend-2_a.C
*************** dacd41d6dbf618fb881768d6a068d7f1  gcc/te
*** 28199,28204 ****
--- 28215,28221 ----
  2f5723dc00ebdebb54dc9e15de17ee39  gcc/testsuite/g++.dg/opt/pr96354.C
  dcb0e957efba822ddb1534eef4cc12de  gcc/testsuite/g++.dg/opt/pr96722.C
  19a7ef730f644c2da2b365f4a10de104  gcc/testsuite/g++.dg/opt/pr96780.C
+ bcc6f19cf50811cf5bac609fe1c6bb36  gcc/testsuite/g++.dg/opt/pr96780_cpp23.C
  3bf961a4520c48f07218697246838038  gcc/testsuite/g++.dg/opt/pr97315-1.C
  79549a33c6d768c44bac8faf72935e35  gcc/testsuite/g++.dg/opt/pr97767.C
  4ef3daa69807c9e8a0d77dc39f9f81d5  gcc/testsuite/g++.dg/opt/pr98130.C
*************** a991f3b843fb36ef428fd3261f7cd8d6  gcc/te
*** 31360,31365 ****
--- 31377,31383 ----
  c0294c255af8599c061bc4b5b4fc75ca  gcc/testsuite/g++.dg/template/unify10.C
  09af30adee47658569e7245f1283085e  gcc/testsuite/g++.dg/template/unify11.C
  6484985420755de208356ab2d23add2d  gcc/testsuite/g++.dg/template/unify12.C
+ 92da0b63f24f1d3a4d4bde6739afa3e2  gcc/testsuite/g++.dg/template/unify13.C
  4559d27962ac65b887c6f4a3a42dc70f  gcc/testsuite/g++.dg/template/unify2.C
  16808e8b62429d390bc5719fd2009b5c  gcc/testsuite/g++.dg/template/unify3.C
  314446f36deb8f9d24cf095763c83315  gcc/testsuite/g++.dg/template/unify4.C
*************** a96998418d91d4b5dc3f731cea3de4a2  gcc/te
*** 32302,32307 ****
--- 32320,32326 ----
  1865c2c1e91d7842887b0fbc0a5a8cbc  gcc/testsuite/g++.dg/tree-ssa/pr116868.C
  0c911fc6a4e7b6d42fea1d5986454ce2  gcc/testsuite/g++.dg/tree-ssa/pr117123.C
  284302237efd60e1d517c0925cad7644  gcc/testsuite/g++.dg/tree-ssa/pr118924.C
+ ed3340a40acd33f762437309c5501969  gcc/testsuite/g++.dg/tree-ssa/pr119903-1.C
  482a64ed60783060cd1097d55e09aa68  gcc/testsuite/g++.dg/tree-ssa/pr13146.C
  e92faf794746371f0e92e8a68244ff5e  gcc/testsuite/g++.dg/tree-ssa/pr13954.C
  8027add8ad61fc532147eff30549380f  gcc/testsuite/g++.dg/tree-ssa/pr14703.C
*************** b54db3adf6b298085f3c9eaca4c15e9d  gcc/te
*** 33541,33546 ****
--- 33560,33566 ----
  0163a6a329fdf7f5efa7b908b04848a0  gcc/testsuite/g++.dg/warn/friend.C
  ea8f671b2bb3779aa95332d127cb7dc4  gcc/testsuite/g++.dg/warn/huge-val1.C
  450618a497d9ab1567d9bc1ed188ded4  gcc/testsuite/g++.dg/warn/if-empty-1.C
+ aab6d1ccc0cf1b4143d4f8748434fc1d  gcc/testsuite/g++.dg/warn/ignore-virtual-move-assign.C
  8ab4f00d5edff6f6c7baa38049347237  gcc/testsuite/g++.dg/warn/ignored_typedef.C
  d75c242679a546679f0392d6a34e741e  gcc/testsuite/g++.dg/warn/implicit-typename1.C
  f69540cf16bb392d5bf1e5edfc8e067e  gcc/testsuite/g++.dg/warn/implicit-typename2.C
*************** e06e75338accc1d77eb96706931ab719  gcc/te
*** 43724,43730 ****
  b00d36d0215e29686de9f6563afb4e87  gcc/testsuite/gcc.dg/builtin-unreachable-5.c
  805cca243e4ddc4c6a264af39e4c36ab  gcc/testsuite/gcc.dg/builtin-unreachable-6.c
  55f574298f80b352e4b2c682678ec628  gcc/testsuite/gcc.dg/builtin-unreachable-6a.c
! aae01c51ba49859a16f212d42a613073  gcc/testsuite/gcc.dg/builtins-1.c
  de826bd2faea31ca3887af383ff62b8f  gcc/testsuite/gcc.dg/builtins-10.c
  960461c95930d3d3bd3e2a49ed939d49  gcc/testsuite/gcc.dg/builtins-11.c
  5da18cb2c9d6ce408e877d7434076293  gcc/testsuite/gcc.dg/builtins-12.c
--- 43744,43750 ----
  b00d36d0215e29686de9f6563afb4e87  gcc/testsuite/gcc.dg/builtin-unreachable-5.c
  805cca243e4ddc4c6a264af39e4c36ab  gcc/testsuite/gcc.dg/builtin-unreachable-6.c
  55f574298f80b352e4b2c682678ec628  gcc/testsuite/gcc.dg/builtin-unreachable-6a.c
! f009865cc5f42ab2ba4a4ed671729f1a  gcc/testsuite/gcc.dg/builtins-1.c
  de826bd2faea31ca3887af383ff62b8f  gcc/testsuite/gcc.dg/builtins-10.c
  960461c95930d3d3bd3e2a49ed939d49  gcc/testsuite/gcc.dg/builtins-11.c
  5da18cb2c9d6ce408e877d7434076293  gcc/testsuite/gcc.dg/builtins-12.c
*************** fd92418c98ab7a53a0f7ffab5cc23336  gcc/te
*** 43979,43985 ****
  d78f07969ec6b48e627880dcbf2ebbf7  gcc/testsuite/gcc.dg/c23-bool-errors-2.c
  c503e7627ed11952c3dc4dc68f955202  gcc/testsuite/gcc.dg/c23-bool-errors-3.c
  77471931d0204c573a350c351c2e1ce0  gcc/testsuite/gcc.dg/c23-bool-limits-1.c
! 866b47f8f73f8bfdd37396b36c3ea22c  gcc/testsuite/gcc.dg/c23-builtins-1.c
  ea28e7a810518599a40cac7b4aded33e  gcc/testsuite/gcc.dg/c23-complex-1.c
  53dce82967e39c3c6175870d30cb7c8e  gcc/testsuite/gcc.dg/c23-complex-2.c
  b1e2e9397fe2c3008781a60be90c84b0  gcc/testsuite/gcc.dg/c23-complex-3.c
--- 43999,44005 ----
  d78f07969ec6b48e627880dcbf2ebbf7  gcc/testsuite/gcc.dg/c23-bool-errors-2.c
  c503e7627ed11952c3dc4dc68f955202  gcc/testsuite/gcc.dg/c23-bool-errors-3.c
  77471931d0204c573a350c351c2e1ce0  gcc/testsuite/gcc.dg/c23-bool-limits-1.c
! 1375b648ec5198d79a2385508507ead6  gcc/testsuite/gcc.dg/c23-builtins-1.c
  ea28e7a810518599a40cac7b4aded33e  gcc/testsuite/gcc.dg/c23-complex-1.c
  53dce82967e39c3c6175870d30cb7c8e  gcc/testsuite/gcc.dg/c23-complex-2.c
  b1e2e9397fe2c3008781a60be90c84b0  gcc/testsuite/gcc.dg/c23-complex-3.c
*************** dc12526b2575b25bbb0263164484aeb3  gcc/te
*** 47641,47647 ****
  dd0c3d86be7753351dad89d50055a01e  gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
  1010470d2b35619d2f4a98c1e6fa225e  gcc/testsuite/gcc.dg/html-output/html-output.exp
  b8ec5fe4c9b79ab341b7f8254518341f  gcc/testsuite/gcc.dg/html-output/missing-semicolon.c
! e77b07af7581d7409e7b270a789ea26e  gcc/testsuite/gcc.dg/html-output/missing-semicolon.py
  87ba2fabf5289d6525439ba48a5c27f8  gcc/testsuite/gcc.dg/hwasan/hwasan.exp
  f20946bfbddc67e74cf619bd02e31549  gcc/testsuite/gcc.dg/hwasan/nested-functions-0.c
  36c11146134a4d86c84c359d41e52a7c  gcc/testsuite/gcc.dg/hwasan/nested-functions-1.c
--- 47661,47667 ----
  dd0c3d86be7753351dad89d50055a01e  gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
  1010470d2b35619d2f4a98c1e6fa225e  gcc/testsuite/gcc.dg/html-output/html-output.exp
  b8ec5fe4c9b79ab341b7f8254518341f  gcc/testsuite/gcc.dg/html-output/missing-semicolon.c
! 391dd897de95521d86a0046e1c4468fd  gcc/testsuite/gcc.dg/html-output/missing-semicolon.py
  87ba2fabf5289d6525439ba48a5c27f8  gcc/testsuite/gcc.dg/hwasan/hwasan.exp
  f20946bfbddc67e74cf619bd02e31549  gcc/testsuite/gcc.dg/hwasan/nested-functions-0.c
  36c11146134a4d86c84c359d41e52a7c  gcc/testsuite/gcc.dg/hwasan/nested-functions-1.c
*************** d2d98a344c776f2cee643c99d05eb20c  gcc/te
*** 47974,47979 ****
--- 47994,48001 ----
  d8f0256cde05093b9738e8287c58d5c3  gcc/testsuite/gcc.dg/ipa/pr119530.c
  8724c127eb269868ca6c918a72fc36b1  gcc/testsuite/gcc.dg/ipa/pr119803.c
  e39432b4ae7797e55b13f6d2fd29a4a6  gcc/testsuite/gcc.dg/ipa/pr119852.c
+ fc7c9c751d59b444d0ab30c4d9029491  gcc/testsuite/gcc.dg/ipa/pr120044-1.c
+ 538e5a7542c72b7ea4e4375cbebde001  gcc/testsuite/gcc.dg/ipa/pr120044-2.c
  c8295ff7fd7e271d17e7609620f5dfcb  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
  6e1b4f2c5d0c0d768778da8e3b7df828  gcc/testsuite/gcc.dg/ipa/pr48195.c
*************** ab9b438d79da41ae2faa25073b1f68ff  gcc/te
*** 48986,48991 ****
--- 49008,49015 ----
  49685be9087563d411cc61352a593d84  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-2.c
  48a41768247d6b150673cba3b15e815e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
  c5d2a11e1172f48545387ed92bd56a11  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-4.c
+ 2f6d3531c8a7ff10b2169db12c85ac09  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.c
+ 8be2430788dcc1a6ae0a4cc7c30c5873  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py
  6efed2ab62fc17f3db08dc04e528fe7a  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-sarif.c
  ee3ed621610bc5bdf108f395f4789d4e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-sarif.py
  ce81f72fcd363c22f9fce9cd0b0c76b1  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata.c
*************** bbfef80ea240ea4caf713082caf0f5d2  gcc/te
*** 48996,49002 ****
  df5927e5a5b0b123f415b49583084acd  gcc/testsuite/gcc.dg/plugin/diagnostic-test-nesting-text-indented.c
  a7db561cc35fce636b1dca4e7394ba77  gcc/testsuite/gcc.dg/plugin/diagnostic-test-nesting-text-plain.c
  a6a63e4d673f32d534d3afc18a7f8218  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-1.c
! e6292b248e0dad9158fa48032d0b745e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
  5f17663596e733b7a39a6b737dc9ea56  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
  9c2ec1cc8d8b83dbb2bda70a9f54dcf4  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.c
  d69b80e0a539be7739a33736ee0e8aaf  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-5.c
--- 49020,49027 ----
  df5927e5a5b0b123f415b49583084acd  gcc/testsuite/gcc.dg/plugin/diagnostic-test-nesting-text-indented.c
  a7db561cc35fce636b1dca4e7394ba77  gcc/testsuite/gcc.dg/plugin/diagnostic-test-nesting-text-plain.c
  a6a63e4d673f32d534d3afc18a7f8218  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-1.c
! fb9717e6ab3262077d1f36d8db47b895  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
! a404eebba6b7914db64c997a0b4b5ffe  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py
  5f17663596e733b7a39a6b737dc9ea56  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
  9c2ec1cc8d8b83dbb2bda70a9f54dcf4  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.c
  d69b80e0a539be7739a33736ee0e8aaf  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-5.c
*************** de7a6b85ff1667e6ef4b89117e774f2d  gcc/te
*** 49079,49085 ****
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
! 2990433671ef6071145b08b31dbbede4  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
--- 49104,49110 ----
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
! 1c9782a7735c6f969bb5edd7f2b0713c  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
*************** d21d6fbc6fc43c655a90fc622dc9b3c2  gcc/te
*** 49636,49641 ****
--- 49661,49667 ----
  7d6461bbfe4e766b9dcb02e2aec22645  gcc/testsuite/gcc.dg/pr116405.c
  b7d6fb3e14f86c09ea6f178c014109c3  gcc/testsuite/gcc.dg/pr116479.c
  6eaf2c622feb5e0d2e5ca44ab5759351  gcc/testsuite/gcc.dg/pr116481.c
+ 849572df683294a5f3ad6bb81ee17c53  gcc/testsuite/gcc.dg/pr116546.c
  8a82ecc27f5e5be1a3a5e59a3465ebcf  gcc/testsuite/gcc.dg/pr116588.c
  92460a4ebec7f60dcffc9eb68058c6b8  gcc/testsuite/gcc.dg/pr116726.c
  3661cd7a3a7e0ed72337f96146acfa54  gcc/testsuite/gcc.dg/pr116850.c
*************** e33af444b933ae4b76c6fd6ea535e112  gcc/te
*** 49719,49724 ****
--- 49745,49751 ----
  2518844f3bab4851f61e1608c80ae741  gcc/testsuite/gcc.dg/pr120057-1.c
  cb7b5505103ef079e746dd619a21ee86  gcc/testsuite/gcc.dg/pr120057-2.c
  5db833c38de3e5ade44290c729fb748c  gcc/testsuite/gcc.dg/pr120074.c
+ c1520f6dceb2ad219f9c1f006e65ea92  gcc/testsuite/gcc.dg/pr120277.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** aecacbb64d3497c484426d338ffae43d  gcc/te
*** 51088,51094 ****
  aa86169902d2471ece373c0dddd5232b  gcc/testsuite/gcc.dg/pr78241.c
  7bfaca350ee545dbe10363c435dfa736  gcc/testsuite/gcc.dg/pr78333.c
  21d56f799d53b50dacd02048a1b73756  gcc/testsuite/gcc.dg/pr78384.c
! f1947a8efa4c6e3b1a2c6ef79bc5fc2e  gcc/testsuite/gcc.dg/pr78408-1.c
  07834f595669948f323b820ebe44b1e2  gcc/testsuite/gcc.dg/pr78408-2.c
  8674b992e5bdd9a84d819eb0da93b58a  gcc/testsuite/gcc.dg/pr78408-3.c
  6f2d058063e1aeba0dd1950b50cd76e6  gcc/testsuite/gcc.dg/pr78445.c
--- 51115,51121 ----
  aa86169902d2471ece373c0dddd5232b  gcc/testsuite/gcc.dg/pr78241.c
  7bfaca350ee545dbe10363c435dfa736  gcc/testsuite/gcc.dg/pr78333.c
  21d56f799d53b50dacd02048a1b73756  gcc/testsuite/gcc.dg/pr78384.c
! ec6de6dc7e87c891763ef77447eb4094  gcc/testsuite/gcc.dg/pr78408-1.c
  07834f595669948f323b820ebe44b1e2  gcc/testsuite/gcc.dg/pr78408-2.c
  8674b992e5bdd9a84d819eb0da93b58a  gcc/testsuite/gcc.dg/pr78408-3.c
  6f2d058063e1aeba0dd1950b50cd76e6  gcc/testsuite/gcc.dg/pr78445.c
*************** c177f823491b23ed671dd72cae6bdd38  gcc/te
*** 55204,55210 ****
  981ec8a8f9969e2f4fb9ade9b962de95  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c
  5ae2c5d6d98bb28c830c4edfe000bf66  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c
  90512bbeacddcca66fd3984243eb5137  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c
! 8cb7818e3e640f1d01eb6c6cb43f1975  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
  05e95b989cfdf6357a178aa625f98417  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
  c700544c3e68a401546cefbdad359728  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-33.c
  955e41ee303f67ec226ec41283fd05af  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c
--- 55231,55237 ----
  981ec8a8f9969e2f4fb9ade9b962de95  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c
  5ae2c5d6d98bb28c830c4edfe000bf66  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c
  90512bbeacddcca66fd3984243eb5137  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c
! 1243b1220ad3e805f667b23dcb37b04a  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
  05e95b989cfdf6357a178aa625f98417  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
  c700544c3e68a401546cefbdad359728  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-33.c
  955e41ee303f67ec226ec41283fd05af  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c
*************** b098058bf56a706b588ea3466b2d21f0  gcc/te
*** 55728,55733 ****
--- 55755,55761 ----
  d044056d4248cb78637686f3d28272bb  gcc/testsuite/gcc.dg/tree-ssa/pr114009.c
  9c0683e4499be406ba003816f4bd0db5  gcc/testsuite/gcc.dg/tree-ssa/pr114760-1.c
  5d8a744b9f15d7ea3d51feac8d667c77  gcc/testsuite/gcc.dg/tree-ssa/pr114760-2.c
+ 8710d339fbc689e052900f47a175994e  gcc/testsuite/gcc.dg/tree-ssa/pr114864.c
  b5622b094a71be460d5e73c0b93c8d2d  gcc/testsuite/gcc.dg/tree-ssa/pr115128.c
  481a38fdf27aeb98642e5c71321ff2a9  gcc/testsuite/gcc.dg/tree-ssa/pr115191.c
  1282d5c99f3bf13e85e0612b19684a01  gcc/testsuite/gcc.dg/tree-ssa/pr116024-1-fwrapv.c
*************** a2d068c8b5d5ecb7aeb9d6f60f75690b  gcc/te
*** 57046,57051 ****
--- 57074,57080 ----
  a62799429f8c8c8beabf64b3b102d402  gcc/testsuite/gcc.dg/tree-ssa/vrp121.c
  27747820246d9edefc91db9bb938f68f  gcc/testsuite/gcc.dg/tree-ssa/vrp122.c
  fffdbdc5b093f3e6f5bcd7eddb0c788b  gcc/testsuite/gcc.dg/tree-ssa/vrp123.c
+ 393a73f607a36f6b6c5318313255562b  gcc/testsuite/gcc.dg/tree-ssa/vrp124.c
  5c02e78e0a19d3b4ab362211af9c057d  gcc/testsuite/gcc.dg/tree-ssa/vrp13.c
  7e4e2677592121fe637fead20ff82420  gcc/testsuite/gcc.dg/tree-ssa/vrp14.c
  88a28f67649717d0c28edf297d3bc70c  gcc/testsuite/gcc.dg/tree-ssa/vrp15.c
*************** ba8b0dfe81019139ed5b239fb9d22ae0  gcc/te
*** 60925,60930 ****
--- 60954,60961 ----
  f73e7d4ce7c3e327e953b946f2617247  gcc/testsuite/gcc.target/aarch64/aes_1.c
  d1d74e6c3fd8740a204f8a685d723756  gcc/testsuite/gcc.target/aarch64/aes_2.c
  ae9d490ad1228549fa8e44e7c17ec959  gcc/testsuite/gcc.target/aarch64/aes_xor_combine.c
+ ac955eae2263ff93e35a9a51ab29008a  gcc/testsuite/gcc.target/aarch64/and-be.c
+ df8491d7fa143b8700a96bb39ecfea17  gcc/testsuite/gcc.target/aarch64/and-le.c
  b144bbaff9193d702e5e6e91e1c21a7a  gcc/testsuite/gcc.target/aarch64/and_const.c
  5625f9d0aa6dd393a4e54a9d8f0df277  gcc/testsuite/gcc.target/aarch64/and_const2.c
  e4ce46d425f8ea0594bf48b8fec9250a  gcc/testsuite/gcc.target/aarch64/ands_1.c
*************** fd8eaccaf40008c602225ab8f19de8a8  gcc/te
*** 61319,61324 ****
--- 61350,61365 ----
  30e3c44bc534f7de8a54f95076511219  gcc/testsuite/gcc.target/aarch64/fmla_intrinsic_1.c
  a1c65ee205fc9435b83f0955d7d41618  gcc/testsuite/gcc.target/aarch64/fmls.c
  50b074aca322c6ef27dff4382b239263  gcc/testsuite/gcc.target/aarch64/fmls_intrinsic_1.c
+ 687262571a1a236200467b16eceb1c52  gcc/testsuite/gcc.target/aarch64/fmov-1-be.c
+ aff061eacafbdaf6e349cbe277f5bf64  gcc/testsuite/gcc.target/aarch64/fmov-1-le.c
+ d7158a0314465faa26f03807df2f17ae  gcc/testsuite/gcc.target/aarch64/fmov-2-be.c
+ 1780bc2ed9c4427dffcc9b3c129496a7  gcc/testsuite/gcc.target/aarch64/fmov-2-le.c
+ dd020506019bf89a5511e3cfe350b9e5  gcc/testsuite/gcc.target/aarch64/fmov-3-be.c
+ c70f8bcee6928604cec9eee5d5845a3d  gcc/testsuite/gcc.target/aarch64/fmov-3-le.c
+ 4a279f30c36644db5160ed71c99bec8f  gcc/testsuite/gcc.target/aarch64/fmov-4-be.c
+ 150ed79703f567e3bf426a2fc0ea5174  gcc/testsuite/gcc.target/aarch64/fmov-4-le.c
+ 3a24737421bd9ee18c3d06f0f822cf55  gcc/testsuite/gcc.target/aarch64/fmov-5-be.c
+ 25983680f8bb32f72c8c67a2eba60d50  gcc/testsuite/gcc.target/aarch64/fmov-5-le.c
  c4fd6df43c9e9e5b7239b8df0bebf345  gcc/testsuite/gcc.target/aarch64/fmovd-zero-mem.c
  92f126169f4b80f84e3a069a088c9866  gcc/testsuite/gcc.target/aarch64/fmovd-zero-reg.c
  4909e9d6cca81f22114a60c988473146  gcc/testsuite/gcc.target/aarch64/fmovd.c
*************** ed8f53ad845cace075e82259961588c1  gcc/te
*** 69461,69467 ****
  64a2a899a5a2180399e5178ea86adc4e  gcc/testsuite/gcc.target/arm/ivopts-4.c
  07838a70a70c703269fa0783335a34b7  gcc/testsuite/gcc.target/arm/ivopts-5.c
  371c001d833d940cd40d8aa3fee9915d  gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
! c4e0098d92012d398b34de432c7f9cba  gcc/testsuite/gcc.target/arm/ivopts.c
  629878f590b6027b463fdc14a2b3bd9f  gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c
  a38561d69fa262860777d4da466d538e  gcc/testsuite/gcc.target/arm/ldrd-strd-offset.c
  02b9352efc9d3dded38ac3a6281bcdd1  gcc/testsuite/gcc.target/arm/ldrd-strd-pair-1.c
--- 69502,69508 ----
  64a2a899a5a2180399e5178ea86adc4e  gcc/testsuite/gcc.target/arm/ivopts-4.c
  07838a70a70c703269fa0783335a34b7  gcc/testsuite/gcc.target/arm/ivopts-5.c
  371c001d833d940cd40d8aa3fee9915d  gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
! 945ef3f3dcc8a43bf5273258fd73ecdf  gcc/testsuite/gcc.target/arm/ivopts.c
  629878f590b6027b463fdc14a2b3bd9f  gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c
  a38561d69fa262860777d4da466d538e  gcc/testsuite/gcc.target/arm/ldrd-strd-offset.c
  02b9352efc9d3dded38ac3a6281bcdd1  gcc/testsuite/gcc.target/arm/ldrd-strd-pair-1.c
*************** ba5017b591e31d9d25de0072928e8d5a  gcc/te
*** 69510,69517 ****
  3876125217234cd017b0326c39884922  gcc/testsuite/gcc.target/arm/minmax_minus.c
  8ea48995d807d32260c080b94c76fc8c  gcc/testsuite/gcc.target/arm/mla-1.c
  7a61babf21fe0e2b87f08d86f719bd45  gcc/testsuite/gcc.target/arm/mla-2.c
- 6c1de9d08bd48357c00a154b914c5dd4  gcc/testsuite/gcc.target/arm/mmx-1.c
- a5a3e826efb091c50ba961289ca090a2  gcc/testsuite/gcc.target/arm/mmx-2.c
  7b6c60e87b7d1e8cbf47e734df9452a7  gcc/testsuite/gcc.target/arm/mod_2.c
  b7f557cb9078905501be2258a5e0919c  gcc/testsuite/gcc.target/arm/mod_256.c
  c6b1f31177a60b170040e0eddc1787ba  gcc/testsuite/gcc.target/arm/movcond_restrict_it.c
--- 69551,69556 ----
*************** dd89c1faa772f50df78a54a9514f4728  gcc/te
*** 72250,72256 ****
  8b14f6a79d37229ed4d5153fe3389de1  gcc/testsuite/gcc.target/arm/pr61948.c
  5fdae85bb8a321060a991fe154549488  gcc/testsuite/gcc.target/arm/pr63210.c
  090e3a4d2e2fdbab7b1d5b0be5ab12a3  gcc/testsuite/gcc.target/arm/pr63408.c
- fa16e93b765a2fccfc78b8366cc5f187  gcc/testsuite/gcc.target/arm/pr64208.c
  224b028685bb00477b6281c95ad71ca7  gcc/testsuite/gcc.target/arm/pr64453.c
  ba50e02461bee64efbeb4ab6a3ee0cbb  gcc/testsuite/gcc.target/arm/pr64460_1.c
  2bb90e87e1c20dc94ca4d0d10b66f32e  gcc/testsuite/gcc.target/arm/pr64600_1.c
--- 72289,72294 ----
*************** f7764fa4377a6050626f28e9a6bdc097  gcc/te
*** 72298,72304 ****
  d818fe5994fb2978716480bd4e16254f  gcc/testsuite/gcc.target/arm/pr79058.c
  e9273f96fab761cd7ea5079114cf850a  gcc/testsuite/gcc.target/arm/pr79131-1.c
  9af668f971102617e44a1aabe76bd18b  gcc/testsuite/gcc.target/arm/pr79131-2.c
- 3116e99b993df2059971c2fae6d9b6b0  gcc/testsuite/gcc.target/arm/pr79145.c
  19c999613c5cb39b3c8e5a4be43e416a  gcc/testsuite/gcc.target/arm/pr79239.c
  ce7a1ad34bf0c34a97c1804c6020b66b  gcc/testsuite/gcc.target/arm/pr81863.c
  8be1830a6ab834d38ea072aa6d567865  gcc/testsuite/gcc.target/arm/pr82518.c
--- 72336,72341 ----
*************** f166772eb305e39c8ddb1bc5b4fe1592  gcc/te
*** 72336,72344 ****
  ffaef2f11095458b1dee423809dce0fa  gcc/testsuite/gcc.target/arm/pr98931.c
  dfc2cd714cdc3607e121f73074613d5d  gcc/testsuite/gcc.target/arm/pr99592.c
  ea503c77c48a0e40d96c6afcc7523f85  gcc/testsuite/gcc.target/arm/pr99596.c
- 8791a633f5b84ed5331bf9cba1e68e6e  gcc/testsuite/gcc.target/arm/pr99724.c
  38e2ef1e7dbe41d15f1fe7459a11571d  gcc/testsuite/gcc.target/arm/pr99727.c
- 0fbbfb8f043defb1e2b0991415909c85  gcc/testsuite/gcc.target/arm/pr99786.c
  ec5230c6f63b4a45740b6ae0d8e7b39c  gcc/testsuite/gcc.target/arm/pr99977.c
  a2aa1366d4e45f7e19b9247149707b37  gcc/testsuite/gcc.target/arm/pragma_arch_attribute.c
  1cf1f843bbe280fb321fd7e18480fcd9  gcc/testsuite/gcc.target/arm/pragma_arch_attribute_1b.c
--- 72373,72379 ----
*************** f0eb5e8a3b3eb97189a9cf149049fdb4  gcc/te
*** 72696,72702 ****
  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
! 1d12cb60b2e190558301f6543110d6d1  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
--- 72731,72737 ----
  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
*************** bafa333a176943cfc5ba57dcd53348db  gcc/te
*** 79411,79416 ****
--- 79446,79452 ----
  a631b59a82e0094f919cb4604edc35d2  gcc/testsuite/gcc.target/i386/pr103762-1c.c
  f7b20e275fb7245fb9757294a2d72c1f  gcc/testsuite/gcc.target/i386/pr103771-2.c
  94dae865f304453dfde03d14b8ace0cf  gcc/testsuite/gcc.target/i386/pr103771-3.c
+ 1d06b4793e0ec6ac430d52bd3ee6f986  gcc/testsuite/gcc.target/i386/pr103771-4.c
  905c8c3d05e777381083e5dc308f6bbd  gcc/testsuite/gcc.target/i386/pr103771.c
  99c899ad45a3b907e5fe8f05e32242c4  gcc/testsuite/gcc.target/i386/pr103773-2.c
  339445d43abea93de6668ce9bec736ac  gcc/testsuite/gcc.target/i386/pr103773.c
*************** bee23171881c8628b022e11c82af1737  gcc/te
*** 79714,79720 ****
  a9e9b13ffffb6326bdaaf3a4037cac8b  gcc/testsuite/gcc.target/i386/pr110227.c
  7c4e6a1aee658b34e96c1c14c2cbf28b  gcc/testsuite/gcc.target/i386/pr110232.c
  7f0cde3ec2fdeaca91525ac49787aa22  gcc/testsuite/gcc.target/i386/pr110309.c
! b6245dfe719261e91e59f38dfe5a4812  gcc/testsuite/gcc.target/i386/pr110310.c
  4ad7a316776972272f625f2de53164d6  gcc/testsuite/gcc.target/i386/pr110372.c
  68e0d40a0818ba1b85cd95dc7ce0b1e4  gcc/testsuite/gcc.target/i386/pr110438.c
  674aa758380ee7d3317eb3b15cc45aac  gcc/testsuite/gcc.target/i386/pr110452.c
--- 79750,79756 ----
  a9e9b13ffffb6326bdaaf3a4037cac8b  gcc/testsuite/gcc.target/i386/pr110227.c
  7c4e6a1aee658b34e96c1c14c2cbf28b  gcc/testsuite/gcc.target/i386/pr110232.c
  7f0cde3ec2fdeaca91525ac49787aa22  gcc/testsuite/gcc.target/i386/pr110309.c
! 81f55a64cc2d99e58b11a42c46a2a575  gcc/testsuite/gcc.target/i386/pr110310.c
  4ad7a316776972272f625f2de53164d6  gcc/testsuite/gcc.target/i386/pr110372.c
  68e0d40a0818ba1b85cd95dc7ce0b1e4  gcc/testsuite/gcc.target/i386/pr110438.c
  674aa758380ee7d3317eb3b15cc45aac  gcc/testsuite/gcc.target/i386/pr110452.c
*************** f3b080c0020e1742c43ff167c717f0b5  gcc/te
*** 82839,82844 ****
--- 82875,82885 ----
  f2246fb526840289cc94bd7e8b0c994a  gcc/testsuite/gcc.target/i386/vect-double-1a.c
  9e17a1e6928bcaccff7de2228ffe1189  gcc/testsuite/gcc.target/i386/vect-double-2.c
  4c9ce05e33ac7d3784a3f13d53e110ed  gcc/testsuite/gcc.target/i386/vect-double-2a.c
+ 96ca3bdabd9bff8485a81bfe7ace5884  gcc/testsuite/gcc.target/i386/vect-epilogues-1.c
+ 17c2d170d498fc9c2649c0cb8d5bd3b9  gcc/testsuite/gcc.target/i386/vect-epilogues-2.c
+ 21d76cc37d837035f538fac85d36fdf4  gcc/testsuite/gcc.target/i386/vect-epilogues-3.c
+ a6ff603f96682f9f6d8b7309ee1c3088  gcc/testsuite/gcc.target/i386/vect-epilogues-4.c
+ 249b46507d08e98058d76d830dc7822a  gcc/testsuite/gcc.target/i386/vect-epilogues-5.c
  44589af45370ba4865592d1e9e717b40  gcc/testsuite/gcc.target/i386/vect-float16-1.c
  22c6e6a37c837040af7566c0ebd70233  gcc/testsuite/gcc.target/i386/vect-float16-10.c
  412a2e12fa51e461ac9fc29d0bcadfae  gcc/testsuite/gcc.target/i386/vect-float16-11.c
*************** f95e6890f2bc69d7a36990c9bc30b80c  gcc/te
*** 84400,84406 ****
  e280a48499a0d63b7fc3310f475b6258  gcc/testsuite/gcc.target/mips/pr51513-1.c
  5fd51acee72ccc4c46ae6414e0b48a2f  gcc/testsuite/gcc.target/mips/pr51513-2.c
  322792d2ec07c9e621c098f32513e328  gcc/testsuite/gcc.target/mips/pr52125.c
! d526f2ae01ac6cfa2e492c540a0c6f56  gcc/testsuite/gcc.target/mips/pr54240.c
  16bf586e6551b9052ad841307f40acbf  gcc/testsuite/gcc.target/mips/pr55315.c
  03fc0f42e7c40dad6deb69e4b8b5d98f  gcc/testsuite/gcc.target/mips/pr56524.c
  0b360d767e5fb6d71b355df1b16f546e  gcc/testsuite/gcc.target/mips/pr59137.c
--- 84441,84447 ----
  e280a48499a0d63b7fc3310f475b6258  gcc/testsuite/gcc.target/mips/pr51513-1.c
  5fd51acee72ccc4c46ae6414e0b48a2f  gcc/testsuite/gcc.target/mips/pr51513-2.c
  322792d2ec07c9e621c098f32513e328  gcc/testsuite/gcc.target/mips/pr52125.c
! acc32b367ac67398100183d6cf0eccfb  gcc/testsuite/gcc.target/mips/pr54240.c
  16bf586e6551b9052ad841307f40acbf  gcc/testsuite/gcc.target/mips/pr55315.c
  03fc0f42e7c40dad6deb69e4b8b5d98f  gcc/testsuite/gcc.target/mips/pr56524.c
  0b360d767e5fb6d71b355df1b16f546e  gcc/testsuite/gcc.target/mips/pr59137.c
*************** dd4a33d1caf27318327d409066e8853f  gcc/te
*** 84748,84755 ****
  a378f672c1826c23c1560c1af3c74cde  gcc/testsuite/gcc.target/nvptx/march-map=sm_52.c
  0ab192ba0546c180702780a3ba66044b  gcc/testsuite/gcc.target/nvptx/march-map=sm_53.c
  9e08e53476d54bf63a1c5ca677191ea9  gcc/testsuite/gcc.target/nvptx/march-map=sm_60.c
! fd68802dbe55b8545103f9ae1f1c0b23  gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c
! a8ba705dd681c1c1324166ecd4c46fc7  gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c
  e65d0546814f094a5fd5a9dc08ff6a97  gcc/testsuite/gcc.target/nvptx/march-map=sm_70.c
  c2d8a97746e819cbcd1ea76ca595f59f  gcc/testsuite/gcc.target/nvptx/march-map=sm_72.c
  f946b7c1cfe33fcf72971bc3a68c8f6f  gcc/testsuite/gcc.target/nvptx/march-map=sm_75.c
--- 84789,84796 ----
  a378f672c1826c23c1560c1af3c74cde  gcc/testsuite/gcc.target/nvptx/march-map=sm_52.c
  0ab192ba0546c180702780a3ba66044b  gcc/testsuite/gcc.target/nvptx/march-map=sm_53.c
  9e08e53476d54bf63a1c5ca677191ea9  gcc/testsuite/gcc.target/nvptx/march-map=sm_60.c
! 43d10b0199ee0fcbb5ec708a1a873dd4  gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c
! d8ad62f4c3d97fbd06b929a70135a2ff  gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c
  e65d0546814f094a5fd5a9dc08ff6a97  gcc/testsuite/gcc.target/nvptx/march-map=sm_70.c
  c2d8a97746e819cbcd1ea76ca595f59f  gcc/testsuite/gcc.target/nvptx/march-map=sm_72.c
  f946b7c1cfe33fcf72971bc3a68c8f6f  gcc/testsuite/gcc.target/nvptx/march-map=sm_75.c
*************** d5dff4229bf2002ee105ec2e9c8ca63b  gcc/te
*** 84764,84769 ****
--- 84805,84811 ----
  b5d58d84e57c5cfe9d7ce93a40665b7e  gcc/testsuite/gcc.target/nvptx/march=sm_37.c
  cb9d8e8835055f77639301fe42459f14  gcc/testsuite/gcc.target/nvptx/march=sm_52.c
  0601021f45410aa7fa56ed7ea27904ff  gcc/testsuite/gcc.target/nvptx/march=sm_53.c
+ a1d50cdd7bd07553ee378e39a75aa675  gcc/testsuite/gcc.target/nvptx/march=sm_61.c
  ea7e7665df27eebcf186519e2077269b  gcc/testsuite/gcc.target/nvptx/march=sm_70.c
  086af00fb5d74ef9fabd5265379230b1  gcc/testsuite/gcc.target/nvptx/march=sm_75.c
  ef504f274b79cad064bc5f0eab4dccbe  gcc/testsuite/gcc.target/nvptx/march=sm_80.c
*************** afd0dac0c935c0eb1fb80b9fae2b1c4e  gcc/te
*** 84771,84776 ****
--- 84813,84819 ----
  3acbb14b9172e6aa7e2fafacc82dd835  gcc/testsuite/gcc.target/nvptx/mptx=3.1.c
  9ea9acf5f9e1658066ce2f6c50b8b163  gcc/testsuite/gcc.target/nvptx/mptx=4.1.c
  a5dde36e4466d98be79cade6931a198c  gcc/testsuite/gcc.target/nvptx/mptx=4.2.c
+ 0eb02595b9f938776de42a71f317c938  gcc/testsuite/gcc.target/nvptx/mptx=5.0.c
  19131c4c116b5adfafc8c6ddeedf1f6a  gcc/testsuite/gcc.target/nvptx/mptx=6.0.c
  19b6ba4e745ea51faf8b07b0be9a573c  gcc/testsuite/gcc.target/nvptx/mptx=6.3.c
  3456be09c7440492bf6d4c2a16058579  gcc/testsuite/gcc.target/nvptx/mptx=7.0.c
*************** d2849a782af5feeff9a0e140e5dc5935  gcc/te
*** 87843,87855 ****
  c94d482c7ef976b5a86a9679daf9ddc1  gcc/testsuite/gcc.target/riscv/arch-5.c
  c757fc49f54223fc5d30159e042cdbd4  gcc/testsuite/gcc.target/riscv/arch-50.c
  1ce8ea52ed40d6f9cb466d50bdae791f  gcc/testsuite/gcc.target/riscv/arch-51.c
! 6e4c5f77f447a39e20e303c9571d2beb  gcc/testsuite/gcc.target/riscv/arch-52.c
  51b1e1bbfe22714ab695a93974508b0e  gcc/testsuite/gcc.target/riscv/arch-53.c
  bec789a6108435830e82b6fdd221cb51  gcc/testsuite/gcc.target/riscv/arch-54.c
  2cd6ade559b1ab254703146aa7008e18  gcc/testsuite/gcc.target/riscv/arch-6.c
  81519955d6644acb55c78120405494a5  gcc/testsuite/gcc.target/riscv/arch-7.c
  def4ef484e9166f9a01c65a411a9d916  gcc/testsuite/gcc.target/riscv/arch-8.c
  618e0be396e7e79ffa293a23f42b305d  gcc/testsuite/gcc.target/riscv/arch-9.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
--- 87886,87904 ----
  c94d482c7ef976b5a86a9679daf9ddc1  gcc/testsuite/gcc.target/riscv/arch-5.c
  c757fc49f54223fc5d30159e042cdbd4  gcc/testsuite/gcc.target/riscv/arch-50.c
  1ce8ea52ed40d6f9cb466d50bdae791f  gcc/testsuite/gcc.target/riscv/arch-51.c
! b4225e859cdd92f35ddd7b8b8b438a8c  gcc/testsuite/gcc.target/riscv/arch-52.c
  51b1e1bbfe22714ab695a93974508b0e  gcc/testsuite/gcc.target/riscv/arch-53.c
  bec789a6108435830e82b6fdd221cb51  gcc/testsuite/gcc.target/riscv/arch-54.c
+ 8b84caba9ce32304ca1b5db7befd5c29  gcc/testsuite/gcc.target/riscv/arch-55.c
  2cd6ade559b1ab254703146aa7008e18  gcc/testsuite/gcc.target/riscv/arch-6.c
  81519955d6644acb55c78120405494a5  gcc/testsuite/gcc.target/riscv/arch-7.c
  def4ef484e9166f9a01c65a411a9d916  gcc/testsuite/gcc.target/riscv/arch-8.c
  618e0be396e7e79ffa293a23f42b305d  gcc/testsuite/gcc.target/riscv/arch-9.c
+ 8f8880aaeaad3b06025ff64692da84bb  gcc/testsuite/gcc.target/riscv/arch-ss-1.c
+ 7166d1530d97826c40e96444ee4cc67a  gcc/testsuite/gcc.target/riscv/arch-ss-2.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
*************** acc8133b241415ea173b4e1e06147a04  gcc/te
*** 88643,88648 ****
--- 88692,88698 ----
  b62a32eafb5e661786b5ef2b03b30be9  gcc/testsuite/gcc.target/riscv/pr119971.c
  d7b10be51739976c3b0ea4b16c390ba8  gcc/testsuite/gcc.target/riscv/pr120137.c
  a21d4b9178b49fb0fb65552af24e2832  gcc/testsuite/gcc.target/riscv/pr120154.c
+ ea446029e0fd8e2a167fbb85bdedc0cc  gcc/testsuite/gcc.target/riscv/pr120223.c
  37a08389ba95284cc27832767dfc1430  gcc/testsuite/gcc.target/riscv/pr43644.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
  c2ac0b53d6af56f5ec5bded3d252dddc  gcc/testsuite/gcc.target/riscv/pr93202.c
*************** a98d30dc75773026799b3df3f3f8381a  gcc/te
*** 89499,89505 ****
  a0d3c0787f790a47ce268b55b81d62dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/reduc_zvfh_run-10.c
  979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/gcc.target/riscv/rvv/autovec/riscv_vector.h
  0e18415d78f87bdf98f3eb96f98969b3  gcc/testsuite/gcc.target/riscv/rvv/autovec/rotr.c
! 384608a0043ae7afaf1b6f91ef50957c  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_arith.h
  6f530e5176febab88f9aeaf7130a08e2  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_binary_vvv_run.h
  2051a9c90b6c265bff2dcbd75138e2be  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_binary_vvx_run.h
  4b3a9b370d9da4cbc5629a1633cc4b37  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_binary_vx_run.h
--- 89549,89555 ----
  a0d3c0787f790a47ce268b55b81d62dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/reduc_zvfh_run-10.c
  979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/gcc.target/riscv/rvv/autovec/riscv_vector.h
  0e18415d78f87bdf98f3eb96f98969b3  gcc/testsuite/gcc.target/riscv/rvv/autovec/rotr.c
! 61873facbf862f814e763a966d84e059  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_arith.h
  6f530e5176febab88f9aeaf7130a08e2  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_binary_vvv_run.h
  2051a9c90b6c265bff2dcbd75138e2be  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_binary_vvx_run.h
  4b3a9b370d9da4cbc5629a1633cc4b37  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_binary_vx_run.h
*************** ea4a0f67292eac140da7b98ebfbbb996  gcc/te
*** 89696,89701 ****
--- 89746,89757 ----
  8d2172e5b0af3f0d0616e7d039d62293  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-8-u32.c
  7fa244d7d884105714e257f2484df1af  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-8-u64.c
  e11c75c7d929ec099b7abdc9c4d2633a  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-8-u8.c
+ 37c614347045c5aff714178c9baa4071  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u32.c
+ 89d89a00b2c365dbb53dc0c235f01cf9  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u64.c
+ 44cf89d3d7fc89f0ca77d3802320644e  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u32-from-u64.c
+ 3840cfa466d1d1b2eb9d7a61ba9f4d5d  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u16.c
+ 34dff1cb0f6d4b5c6be876c2c3973cf9  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u32.c
+ f9329361b6b63559ee792d41ed919032  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u64.c
  1b44a2d866b68d89a040b6faa7197386  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-1-u16.c
  15f97d4f127070c558f820054edf909e  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-1-u32.c
  542febd1953a09a4274532fed3de60d6  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-1-u64.c
*************** d23bc2f30ad839e092fa19a37476169e  gcc/te
*** 89728,89733 ****
--- 89784,89795 ----
  3292e0db2760f04078fd3d52a43204cc  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-8-u32.c
  78b853138b8501bf2e37db69c859d382  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-8-u64.c
  b37a0d497135974ffebec732a4d99401  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-8-u8.c
+ 0026377b3a4223915044e729ed17201c  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u32.c
+ 8f99956b4058b4b2309fa86bb8f8ea00  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u64.c
+ 4c7dee5ac593db3a531f7f186c1dc6b9  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u32-from-u64.c
+ 2726317dbb794820465016faf4abc0a1  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u16.c
+ 34f663de84f22d80f312f51f6bdafcb2  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u32.c
+ 2726317dbb794820465016faf4abc0a1  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u64.c
  79264f1576d06f3d52e961b13c582e98  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add_imm-1-u16.c
  b02a8fafd268a5d92e2dbd1387780e83  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add_imm-1-u32.c
  d080339353fdfc380f443f5a7048a96d  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add_imm-1-u64.c
*************** f95d4e0ecca41e722099be6b52b3efe7  gcc/te
*** 90890,90954 ****
  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
! 9f3af6349238898358501a90ae3e36f1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! 226df478404500dcdb3b751407c9b69c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
! a3488045da46a2f8238fde3618b82e87  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h
! 35ce94f155eb43df9c396eadf643b263  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c
! 7210488a763556bb37a9ed3d13f4698a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c
! b1cf428dd630424e8cc47b125cc8c8cd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c
! 781ff559d9433553538b67c21a1890a3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c
! 341e613c0953d22653a43ab9ecf03bd4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c
! c961d5f08d566e1403ce1b8636b2d95f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c
! 013eadc2d1061812d12a55676a67c147  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c
! a72efc0a9ec7b09534cd2279bbe8610e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c
! 4bb239bebd4d93dce202996093d1b1d9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i16.c
! 7749561637924ff704d645c15623046e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i32.c
! 615a3888aa3db5d9fb9501d68877484f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i64.c
! c3b7bc0237fa7ab6b993327b614223a4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i8.c
! 3d61f8ecbd814fcc4b16db0fcecc7cd9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u16.c
! 52f55f1605322a1380fa2b52b01083d2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u32.c
! 860514773a7d832ed052f0b1897b174d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u64.c
! a1189155f49152782ce4bd651ae3bb45  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u8.c
! 82388073c3922af1bdf1aae940d5b6b5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i16.c
! e9f5be66a69b63b8c25e77046af34936  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i32.c
! 8fc0cf584614f984aafecbe7b68513a4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i64.c
! 5b9c649b6f2ebc6c7bdfdd7312f531fa  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i8.c
! 18cedd46ce62cb26c3a82ec4927adfc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u16.c
! cbac5ca33f15edf43ad183aeaf367973  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u32.c
! 048366431ec50673bdb17520f8a4f6c7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u64.c
! e7e79abca3770a320d6c1577919cd2db  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u8.c
! 836822279a941b43dc37e5bead2a92f5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i16.c
! f8a94b86d4efa91c57e731e1632f7244  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i32.c
! ebf46616191adcc9937d3dff1e7c0ba7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i64.c
! bacb5f8a5f94a43e3f59221a77c59465  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i8.c
! ad5e5cdc5f647f14b1b86ed79570cb30  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u16.c
! cf7fcb005341c8e2261c1fe47a838f40  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u32.c
! 76e5f0a1ddf6138858972cb6268aea3b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u64.c
! 732d387f6ee7af0b5201999832943da4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u8.c
! 07e00d7dd2f0222727ca9aa15990a9d2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i16.c
! 9d507d2912d6eb90efa1bc6cf1ae7baf  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i32.c
! 8125dc06f5d8c3dcc4e71d2e6ed52f4a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i64.c
! 35a3c593589caa9322b37d14e2af7306  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i8.c
! 23e5dc1f379bd170013efac8a2cd26e6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u16.c
! d753225300a8bad59632e719c6a4caad  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u32.c
! b3119575a222b3b20fa68fab4b47a8b1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u64.c
! 675c7be3766562ae2fc1da3286921e90  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u8.c
! eacff17c15f751755caffcb29f5ada8c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i16.c
! ac6d1793ad88670e041af29ece76bbcb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i32.c
! c95ed0c544afdd6e5bcd14fd1ebd71b4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i64.c
! 1410d286fc120e87b7f3592af44c95a5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i8.c
! 5773637f5ca6ee5d7fa7e3d9c25df2df  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u16.c
! 8221e410dfe57b423f73711148b3e020  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u32.c
! c2c3e145816ea275c6804298cefb8bcf  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u64.c
! 1e92f11f617787fe735098d169fd55bf  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u8.c
! 1dfa1dd19362759bd19dbaf708965cc8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c
! 79e78d088db2ba0b73ab7a0daf2a6223  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c
! d0ff69950639fb858ae3cada5f0b9819  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c
! 3aeafdc385897006fa5b3a47b280490b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c
! a0903d4f6a5d0d23d4a10a493982b994  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c
! 8b0d0abef7040531b482916f3a044364  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c
! f17c4b0ae2f76142d6a1a17df1d6f7fa  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c
! 454a206b513df96d32967b2d33c2d401  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c
  836cc87f131d9d080542fe18ca8f7841  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/vec-avg-run.c
  f1082aad0502554eeebed17813742243  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/vec-avg-rv32gcv.c
  c63c1dda7e0edaae3a19ada81d8d2297  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/vec-avg-rv64gcv.c
--- 90952,91024 ----
  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
! 56a9ce5c5dcfb4fe57c2f6c1fe32df19  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
! 82822ba241edd9fb2945fddf5492d90f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
! eee3a3f1b49c06cedf842c2fb35b2051  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
! affe3a68df8f9f786ef55811254717d8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! e003cbb559836c197833b6f17c3ace01  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 082b528272aa4fab46c58f265a7f5f90  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! f2e377498282c46536d48d1924512c14  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! 036b7e7ac03d1e4f23e69888563cd145  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
! e649caba26e0b9c354bb3a904ba8095a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
! 046366475c2b9b84a9ed31d7d9498614  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
! 188a4cda7b1ff5ef305d85fd08b2fd22  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
! 2e235a15d36e833f721b6099e2014f18  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! 13a10e606c1783fc71b8b3be10a245f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! de72e3c907fff29977cadc265f941af6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! 8f38ce65a8b2d6d3e235b4bd4801cef9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! 3ffe4bfce21c8dc212e81602aecbd859  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
! 86e8a6c2bc92011a5aebd73f8f3afc05  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
! 7fcb44166ae9f26520acf46efc7c27c8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
! 4bbbd9a6bcbd918fdaf1a36fb4c93cf2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
! 0e6a3c963f86e031280efe5d04f87e6a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! 99399fb84fb20842be568308cab7eb12  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! c716d39b84d2789f26af932340082be0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! 417ec6454667dbfbb69c3ac3efa1a2a8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! bf04f1c8adc0e50a385323bc78350542  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
! 674b946bb963de82c123cda93b50d3c0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
! 8cd4f324ee8108fc331e2ee25c951f49  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
! 13d80303f5412dbab02693b7307b5a4c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
! ae139f2eb3bf9773cd34c21cadd73c82  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c
! 43b6da7a59cc95f802f55f1fb694bc58  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c
! f2b278b63484cb5e96ae1fa96653f5d7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c
! d8adc94f0b15f16e776ffc682eb0f439  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c
! 5fa2b14a245b769e3e7e64a31a88f22f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c
! 70d5ed649f6f0b645c6db6ec6ddce5ef  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c
! 2f20d33746cdab4aaabded96b5fb042b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c
! 8cf295cc76a624d7d1989c2a2a9c9f9d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c
! 7819cde47e3eaa3a459f10f6860de49f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c
! d839e62ccf12885a9e6f3470a40674a2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c
! bc9e7f1e4ec6aa361b8958a2010905f6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c
! dcc113d4ba56dc7323a958b014d0b381  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c
! b776cb3832531d8d1621f271e5342135  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c
! bc0d2e0e66f98a704fe96b93bdebd524  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c
! bda2f0454a32b45c25e264a790872ade  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c
! 2693160626093b55bc2b7c6046b4075d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c
! f79813b360305c4178d0b5eee105d217  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c
! 003e4d2685cc92c65098d03202ea3768  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c
! d59cb5031bed6b1e76523a032983af96  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c
! bc3556ff3ac5728c17bd0a16fa879d91  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c
! 33a4c117dd0f736c8ec78a07ff986cd7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c
! 675ed4b5bb2d840c813b89b6466d55e4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! 0ce3469dc3b2d454675a92f9409386c3  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
! f82d1e3332267f884d6990983f9a5c50  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c
! 9f3b8184fd845e5425e43d0e12950ff1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c
! 5e6b1620895fd56e1d1b787b1b328794  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c
! caaf496913168e97eaf6f183c1947c6a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c
! c997257cfa5d9bea648ef7efa7983d37  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c
! ef81b48e5e8a897c210cce3e761266b6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c
! 6872270b4229c383721e1e747891b40e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c
! 16f77494fa58ce0796073cd11ebcf8a9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c
! 63ecf62c70647f5af85690b50449a4a3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i16.c
! e0a029ed9e4f9f4ab4383ebb4a63f046  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i32.c
! 7ec38b653f84c7041b0b862f361c9822  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i64.c
! 243226f9f57a3ed67d4295c3232d1ea7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i8.c
! 4769e8321800efc6a2c6e69fb16ca80f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u16.c
! 10bbd930713d9d02d87a6861d8201dc0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u32.c
! 0e5d7afeb387b9c36c90fcf1d8fd7134  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u64.c
! d8e11260f6cbaa9942a95a889d2d3dcd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u8.c
  836cc87f131d9d080542fe18ca8f7841  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/vec-avg-run.c
  f1082aad0502554eeebed17813742243  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/vec-avg-rv32gcv.c
  c63c1dda7e0edaae3a19ada81d8d2297  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/vec-avg-rv64gcv.c
*************** a8f53ad5180333afb72d569d125c3922  gcc/te
*** 92388,92395 ****
  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
! 1f5131eecd12e88953a40d835aeb0d06  gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
! f5cc2f465f89ee8e872ae9ecdbf6d909  gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h
  3ab4643679c40f024b38869976721fb5  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c
  b5bd745f6b9117ac4e1b1964f07756fb  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c
  7466b8499bd6396823fc38e8b79b1523  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i64.c
--- 92458,92465 ----
  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
! aa86892e51a80a405c2e61ec07d21b2d  gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
! d854d0b00eecc5320b415c7f679377e9  gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h
  3ab4643679c40f024b38869976721fb5  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c
  b5bd745f6b9117ac4e1b1964f07756fb  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c
  7466b8499bd6396823fc38e8b79b1523  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i64.c
*************** f8b3e25b0233aa37e4d2d475097ce9ab  gcc/te
*** 92585,92614 ****
  cfa4478eb688e4fed007145740b155e1  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u32.c
  818c9bcba77a5860dae1511f5c90a8d9  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u64.c
  4debf74203d0c23ae41d16a6f411bc0d  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u8.c
! 0ab7b247b1e8713fbbec35cbe3d2e121  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u16.c
! b72728828dac4cef4eaca4271dd1aaa2  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u32.c
! 314dceaaceb2eb4b0b4e920f2bc9f558  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u64.c
! 02d9e0a9a32648b6ab8c99812bd0d8da  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u8.c
! ee7011b9e0d64d643a823728b72af73b  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u16.c
! 5c7471355cdb3b08930c1996a5f0048e  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u32.c
! e20148aef4a3a54fb427fcb6338aea4a  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u64.c
! 50c4c3fe3a312d6dfe7cfe30cd785d45  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u8.c
! c01b0027d77bf6b48c78b2c1fd008984  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u16.c
! 61594a781e66eb8d792d4c21284579fe  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u32.c
! 0d3f0a41807888f6d4a1366b270f5eed  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u64.c
! a665f0c29b71010828d995ed311bda20  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u8.c
! fdaaa004f608a5837fc9b80df4ef242b  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u16.c
! 55dfbbbbf2b89400cfb6c6b76b975991  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u32.c
! ea19afe2b82e502fb721cad3270a7196  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u64.c
! f0d64b232ae22c032abdef44dcf1749c  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u8.c
! a42d2e570de943574620dcf8f3f64db9  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u16.c
! b5b90753e4b2e1637714d623a324508a  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u32.c
! 581e6f63f33c045d42ffd2f703fd1f43  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u64.c
! 3f18e8d12ddb1753e8ac423c68700dd0  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u8.c
! b0ac2393b1d736b579ce9c67e48b5e21  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u16.c
! 1eedf71a2d0ec19acbe85956445658da  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u32.c
! 367700dac034b0cbe5acd2e3b18f7d95  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u64.c
! abaa1ba51533cd18ec24c159191ecf55  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u8.c
  918a295b76229a10e40e993b0649c7d2  gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u16.c
  4108927016f00fca561a8d1ac9d070a4  gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u32.c
  b086134b1952fa0e763cee271400e09d  gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u64.c
--- 92655,92696 ----
  cfa4478eb688e4fed007145740b155e1  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u32.c
  818c9bcba77a5860dae1511f5c90a8d9  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u64.c
  4debf74203d0c23ae41d16a6f411bc0d  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u8.c
! da869b32a9e9b00935b051c82ecaa1f1  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u32.c
! 83d74206ad74c7ca571509bc08c91880  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u64.c
! 617dfc75f4e0c320296434898ea5775f  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u32-from-u64.c
! 1cc6a081781ec74b7685d2e23697e491  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u16.c
! eb03517d7b855c357a4d9edede9c4f80  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u32.c
! 377eae07343244bae32bfa0c5eca7791  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u64.c
! 844f3d1ad50780e0bf8fa211214cf27f  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u16.c
! 1234d33213ded8fb65361a6716d31a2f  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u32.c
! 73e4f30d2af64722a3d390de2cd69700  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u64.c
! fec60d8572c88b8ed5ea3edb15ce1a93  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u8.c
! 2d2437f83d191ade7bdb4edcf2efd649  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u16.c
! 1ab5eb3cc1a984efc41a861e52afac0a  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u32.c
! 1fa9a202f9846d441ce4cdd17ecce89e  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u64.c
! 48138f85fca3ea0ef5c12ef703434a59  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u8.c
! 0d509c0c6d34e97016cbd3f495d6f671  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u16.c
! 598fd9db61d901c87b07ed7eea0de1bd  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u32.c
! e1c244e7a5b1b92df07505e84a3404c6  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u64.c
! d5a69ccff049882c95bbc6c1e080a7e6  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u8.c
! 56cef4595d165f300969d4cd84e54dee  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u16.c
! 772df5923b8ff35cc4943223dbe9e98d  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u32.c
! 702047f07b8f52737734d252b7c15645  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u64.c
! da23f5ccbe13dcde37eca8044e79b639  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u8.c
! 7215a08b94edb8eb7c139fd1eab7e316  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u16.c
! 2a0ff370eeb62b5428d69f178916941e  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u32.c
! 6745c5684078d3f8ec126bc20021e2c0  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u64.c
! 5dc87642d697e76861e7c1a46320f6e1  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u8.c
! 9c222f86246da1273626a7e4e879128c  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u16.c
! 900cbd62140367e39c2fde3e209d7056  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u32.c
! e08691c2655e7c1ed729fde6eeaebc5c  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u64.c
! 30e4072f689682f264d7cf00ecfffde8  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u8.c
! 41adcf1b829b768d7e8aa8bb4e67429f  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u32.c
! 6e3285bac4348e317a3d9a4271975fc3  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u64.c
! ebc79fe8295117733068b41a754b9358  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u32-from-u64.c
! f9687bff0bf30462a97af38715ce5a4e  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u16.c
! b66f50ab69fd54041aeb38d102dfb9a5  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u32.c
! 04e1ad9bd26434234b7e6749600da756  gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u64.c
  918a295b76229a10e40e993b0649c7d2  gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u16.c
  4108927016f00fca561a8d1ac9d070a4  gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u32.c
  b086134b1952fa0e763cee271400e09d  gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u64.c
*************** ca8eb6db97f18fddd890561a22a8cfbb  gcc/te
*** 99637,99643 ****
  b199d329559fc3f1b7e43203cdc460a8  gcc/testsuite/gfortran.dg/alloc_comp_assign_9.f90
  f3e77fcc01f3018d64a5ab3fb3368fd1  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_1.f90
  948fbff88548392e63b67e446403f2b3  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_2.f90
! 5570a1ba5f39729a7f7334e3e99b7262  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90
  0fdd1a20cd51772142c8038e260c35d4  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_4.f90
  01702b87b457a827628539076733715b  gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90
  c161df8775b21819cda81ffa8bd1b23f  gcc/testsuite/gfortran.dg/alloc_comp_basics_2.f90
--- 99719,99725 ----
  b199d329559fc3f1b7e43203cdc460a8  gcc/testsuite/gfortran.dg/alloc_comp_assign_9.f90
  f3e77fcc01f3018d64a5ab3fb3368fd1  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_1.f90
  948fbff88548392e63b67e446403f2b3  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_2.f90
! 2ff38561a2a894668fd17d66604b6953  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90
  0fdd1a20cd51772142c8038e260c35d4  gcc/testsuite/gfortran.dg/alloc_comp_auto_array_4.f90
  01702b87b457a827628539076733715b  gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90
  c161df8775b21819cda81ffa8bd1b23f  gcc/testsuite/gfortran.dg/alloc_comp_basics_2.f90
*************** d863a7b7baeff902abcb73f750294f4b  gcc/te
*** 99649,99656 ****
  01ce8d13f86e2c85f83ca4efb7539502  gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90
  ae1746e87e5762c6b68826278ee28628  gcc/testsuite/gfortran.dg/alloc_comp_class_1.f90
  dfee92253f572cefadfc9896e31aa911  gcc/testsuite/gfortran.dg/alloc_comp_class_2.f90
! 52d1ff97d60e0604c88137e39d6ee817  gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03
! 7bc89ebe60518480d4c3116f353445eb  gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03
  344f8d4e949089ff45b60afe587aec49  gcc/testsuite/gfortran.dg/alloc_comp_class_5.f03
  f87a2c3e25c614f7c7331df1491f1a03  gcc/testsuite/gfortran.dg/alloc_comp_constraint_1.f90
  3c67ddbdd5451204f415b2315005e09e  gcc/testsuite/gfortran.dg/alloc_comp_constraint_2.f90
--- 99731,99738 ----
  01ce8d13f86e2c85f83ca4efb7539502  gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90
  ae1746e87e5762c6b68826278ee28628  gcc/testsuite/gfortran.dg/alloc_comp_class_1.f90
  dfee92253f572cefadfc9896e31aa911  gcc/testsuite/gfortran.dg/alloc_comp_class_2.f90
! b387c0f145b4b44ea83d2265782d7be3  gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03
! a3de047b4026c722974a4a412344860d  gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03
  344f8d4e949089ff45b60afe587aec49  gcc/testsuite/gfortran.dg/alloc_comp_class_5.f03
  f87a2c3e25c614f7c7331df1491f1a03  gcc/testsuite/gfortran.dg/alloc_comp_constraint_1.f90
  3c67ddbdd5451204f415b2315005e09e  gcc/testsuite/gfortran.dg/alloc_comp_constraint_2.f90
*************** f4cacbb7fc7a73c4dc452abb4169a708  gcc/te
*** 99773,99779 ****
  3e69f8fb58e06a24fc9934b0040bc33c  gcc/testsuite/gfortran.dg/allocate_with_source_11.f08
  d76b12105ec17a95100b1c0109eba21e  gcc/testsuite/gfortran.dg/allocate_with_source_12.f03
  7eb26a0ecf38b62a277060acb6ecd19a  gcc/testsuite/gfortran.dg/allocate_with_source_13.f03
! e983e31f5907aa7a18c2e0f43cdf3d9a  gcc/testsuite/gfortran.dg/allocate_with_source_14.f03
  7750d599d9ba89b3f5a9b83001a920ef  gcc/testsuite/gfortran.dg/allocate_with_source_15.f03
  f68a5464b779f75e7ff8e50d9d8b199e  gcc/testsuite/gfortran.dg/allocate_with_source_16.f90
  bd4118fd768f3467307efc9602103e4c  gcc/testsuite/gfortran.dg/allocate_with_source_17.f03
--- 99855,99861 ----
  3e69f8fb58e06a24fc9934b0040bc33c  gcc/testsuite/gfortran.dg/allocate_with_source_11.f08
  d76b12105ec17a95100b1c0109eba21e  gcc/testsuite/gfortran.dg/allocate_with_source_12.f03
  7eb26a0ecf38b62a277060acb6ecd19a  gcc/testsuite/gfortran.dg/allocate_with_source_13.f03
! aa0e2acc5bfe4a7ddc3c5e96cc91be7e  gcc/testsuite/gfortran.dg/allocate_with_source_14.f03
  7750d599d9ba89b3f5a9b83001a920ef  gcc/testsuite/gfortran.dg/allocate_with_source_15.f03
  f68a5464b779f75e7ff8e50d9d8b199e  gcc/testsuite/gfortran.dg/allocate_with_source_16.f90
  bd4118fd768f3467307efc9602103e4c  gcc/testsuite/gfortran.dg/allocate_with_source_17.f03
*************** ea87431a0369f9e7268297efe801335a  gcc/te
*** 101700,101706 ****
  762985a925b90674163cd0316a6f3ff0  gcc/testsuite/gfortran.dg/dec_logical_xor_1.f90
  519c3622603d8bdfcdd819606ab71a39  gcc/testsuite/gfortran.dg/dec_logical_xor_2.f90
  7634f260da3c6ee6123a7feaf3e1ab68  gcc/testsuite/gfortran.dg/dec_logical_xor_3.f03
! 8d3b7a76092171be38187b81f8a3ec85  gcc/testsuite/gfortran.dg/dec_math.f90
  11fbf6587979490cca68492521824101  gcc/testsuite/gfortran.dg/dec_math_2.f90
  f007474e5e62779dd82a956460020608  gcc/testsuite/gfortran.dg/dec_math_3.f90
  89e13391077c863487552207c651a1aa  gcc/testsuite/gfortran.dg/dec_math_4.f90
--- 101782,101788 ----
  762985a925b90674163cd0316a6f3ff0  gcc/testsuite/gfortran.dg/dec_logical_xor_1.f90
  519c3622603d8bdfcdd819606ab71a39  gcc/testsuite/gfortran.dg/dec_logical_xor_2.f90
  7634f260da3c6ee6123a7feaf3e1ab68  gcc/testsuite/gfortran.dg/dec_logical_xor_3.f03
! 6c2657198caaa08b6452cb68d6a5d9b9  gcc/testsuite/gfortran.dg/dec_math.f90
  11fbf6587979490cca68492521824101  gcc/testsuite/gfortran.dg/dec_math_2.f90
  f007474e5e62779dd82a956460020608  gcc/testsuite/gfortran.dg/dec_math_3.f90
  89e13391077c863487552207c651a1aa  gcc/testsuite/gfortran.dg/dec_math_4.f90
*************** f024936b2bb3be33b204bc283db65a94  gcc/te
*** 101934,101940 ****
  cb44893d94f03877d3d146a8c1da8bd8  gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f90
  1985d33efa2fb91552f8a4d90653edd7  gcc/testsuite/gfortran.dg/derived_constructor_comps_4.f90
  b90644647498c9ab9c17c0d5ea8d1b82  gcc/testsuite/gfortran.dg/derived_constructor_comps_5.f90
! b2ca02520bfaffc03c538a5319e61893  gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90
  a4520e3938bf347c0b9e1003348fd3b6  gcc/testsuite/gfortran.dg/derived_constructor_comps_7.f90
  d651e8567ae16400b1f0dd3cfa78dfbe  gcc/testsuite/gfortran.dg/derived_constructor_comps_8.f90
  cff987fa6f89201aa37245231d20c023  gcc/testsuite/gfortran.dg/derived_external_function_1.f90
--- 102016,102022 ----
  cb44893d94f03877d3d146a8c1da8bd8  gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f90
  1985d33efa2fb91552f8a4d90653edd7  gcc/testsuite/gfortran.dg/derived_constructor_comps_4.f90
  b90644647498c9ab9c17c0d5ea8d1b82  gcc/testsuite/gfortran.dg/derived_constructor_comps_5.f90
! b82bb411ffe2afd1f983103a913048ea  gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90
  a4520e3938bf347c0b9e1003348fd3b6  gcc/testsuite/gfortran.dg/derived_constructor_comps_7.f90
  d651e8567ae16400b1f0dd3cfa78dfbe  gcc/testsuite/gfortran.dg/derived_constructor_comps_8.f90
  cff987fa6f89201aa37245231d20c023  gcc/testsuite/gfortran.dg/derived_external_function_1.f90
*************** e9e8f279200f5692fad235f157925873  gcc/te
*** 101956,101961 ****
--- 102038,102044 ----
  cf5153f1f09bb80f5a964ce90c83a5dc  gcc/testsuite/gfortran.dg/derived_result_2.f90
  9568da62ebf5982dd0feeb2af336d4be  gcc/testsuite/gfortran.dg/derived_result_3.f90
  64fd0d06fe2fe940a3439cbab3a11ab2  gcc/testsuite/gfortran.dg/derived_result_4.f90
+ 489e76e1c9546ac43f028e88ed875909  gcc/testsuite/gfortran.dg/derived_result_5.f90
  b522fadd1464db48d2fe8165d2a66e70  gcc/testsuite/gfortran.dg/derived_sub.f90
  652fa12d630d17b29894c33b10c6b1b8  gcc/testsuite/gfortran.dg/dev_null.F90
  94ce3208dac145ea14fc3f821f662788  gcc/testsuite/gfortran.dg/dfloat_1.f90
*************** a961dfda22a9cdab00655e080457bd32  gcc/te
*** 105577,105582 ****
--- 105660,105669 ----
  e79a5fff5c4841ba8e2da41f54be1c1c  gcc/testsuite/gfortran.dg/pr120152_2.f90
  5b917458eb8d86935d5781cfdfe8f5e7  gcc/testsuite/gfortran.dg/pr120153.f90
  202dad9f0793d2c5775eb22b1d871383  gcc/testsuite/gfortran.dg/pr120158.f90
+ 8f53cbad5581d72a5d0420f900cee217  gcc/testsuite/gfortran.dg/pr120191_1.f90
+ 4787146fc7e8109511f0d22d056e2127  gcc/testsuite/gfortran.dg/pr120191_2.f90
+ 05457962d41eef6a41a3de889144d78a  gcc/testsuite/gfortran.dg/pr120191_3.f90
+ b1cb2c9a52574c2df5df49bd13ee7e5d  gcc/testsuite/gfortran.dg/pr120196.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
*************** db8afdf5ed6aa3065c2d97091ed4668d  gcc/te
*** 108300,108305 ****
--- 108387,108394 ----
  3e6f21c529d5360c6ad84c8369304bf2  gcc/testsuite/gm2.dg/doc/examples/pass/exampleadd2.mod
  64fa9cdc399ccbe7eb26e506eb485ca5  gcc/testsuite/gm2.dg/doc/examples/pass/hello.mod
  3d1a820fbabf2b09a0663d760af54b26  gcc/testsuite/gm2.dg/doc/examples/pass/hellopim.mod
+ 66c568233a4ecff42698933a265bb3dd  gcc/testsuite/gm2.dg/doc/examples/plugin/fail/assignvalue.mod
+ e76f2825196989e398cd2f3a186ca7b2  gcc/testsuite/gm2.dg/doc/examples/plugin/fail/doc-examples-plugin-fail.exp
  8336252a5212ce63a317267e8e2bad76  gcc/testsuite/gm2.dg/pim/fail/badopaque.mod
  e6f3c702e8ca5bfbe627dcb752971fdb  gcc/testsuite/gm2.dg/pim/fail/badopaque2.mod
  ec56bce7bdde9ba4515172d6349ed250  gcc/testsuite/gm2.dg/pim/fail/dg-pim-fail.exp
*************** e87a7723ddb82de7bd960a324539538f  gcc/te
*** 115156,115162 ****
  58f513e93c9d11094e8f0c6934f2852d  gcc/testsuite/lib/file-format.exp
  9784ae05070dcc427e2ab82a218df718  gcc/testsuite/lib/fortran-modules.exp
  9c1c18d54fa5811ce07e3c5d4a677fbf  gcc/testsuite/lib/fortran-torture.exp
! b44378e468c0382151ed8994ace386ff  gcc/testsuite/lib/g++-dg.exp
  c345df92b75960dbcf02dc790324b5c6  gcc/testsuite/lib/g++.exp
  8fd60242e028a3c0b9360a52d67cb069  gcc/testsuite/lib/gcc-defs.exp
  64d94c4dd4533bc17b89e001336ef92b  gcc/testsuite/lib/gcc-dg.exp
--- 115245,115251 ----
  58f513e93c9d11094e8f0c6934f2852d  gcc/testsuite/lib/file-format.exp
  9784ae05070dcc427e2ab82a218df718  gcc/testsuite/lib/fortran-modules.exp
  9c1c18d54fa5811ce07e3c5d4a677fbf  gcc/testsuite/lib/fortran-torture.exp
! 9da06fbaa0424093c2d9bf83783cc500  gcc/testsuite/lib/g++-dg.exp
  c345df92b75960dbcf02dc790324b5c6  gcc/testsuite/lib/g++.exp
  8fd60242e028a3c0b9360a52d67cb069  gcc/testsuite/lib/gcc-defs.exp
  64d94c4dd4533bc17b89e001336ef92b  gcc/testsuite/lib/gcc-dg.exp
*************** f427d0c6721f464c1dcbe2e8bea5fdfe  gcc/te
*** 115169,115175 ****
  7ec502ba1cd2c6c5bda03d37745be94e  gcc/testsuite/lib/gdc.exp
  853c0efaf4a3901db6936d6302001ba3  gcc/testsuite/lib/gfortran-dg.exp
  985be2abb0f17d04a53bacc42a9c473c  gcc/testsuite/lib/gfortran.exp
! f5b911868d95f3514a08278e82fac055  gcc/testsuite/lib/gm2-dg.exp
  3e2c68ae3bfef468faf9345ca7f69c78  gcc/testsuite/lib/gm2-simple.exp
  b31646238765c4f7c1464399fd05e5eb  gcc/testsuite/lib/gm2-torture.exp
  cde7364d679bf019115a37fca70a6f52  gcc/testsuite/lib/gm2.exp
--- 115258,115264 ----
  7ec502ba1cd2c6c5bda03d37745be94e  gcc/testsuite/lib/gdc.exp
  853c0efaf4a3901db6936d6302001ba3  gcc/testsuite/lib/gfortran-dg.exp
  985be2abb0f17d04a53bacc42a9c473c  gcc/testsuite/lib/gfortran.exp
! 6776dc14224e93d5b805dfe09d5ad6df  gcc/testsuite/lib/gm2-dg.exp
  3e2c68ae3bfef468faf9345ca7f69c78  gcc/testsuite/lib/gm2-simple.exp
  b31646238765c4f7c1464399fd05e5eb  gcc/testsuite/lib/gm2-torture.exp
  cde7364d679bf019115a37fca70a6f52  gcc/testsuite/lib/gm2.exp
*************** eb1595e729e2eaac81c7ffe330d8f24e  gcc/te
*** 115218,115224 ****
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 1434d7d3777b92bdb1629607b49055c6  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
--- 115307,115313 ----
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 84a1fe2a7a1b1396bbd041ff182ff927  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
*************** b4a6da1471f279353aaca4956c18cdea  gcc/tr
*** 117678,117687 ****
  bcff760f6710b9047412aba72a381983  gcc/tree-affine.h
  527c9fa3845b2653cafc14c109129179  gcc/tree-assume.cc
  918b3dce8ecc8579127255abad77605e  gcc/tree-call-cdce.cc
! 44a9c43a63015bc91d3d0f39d52d36e2  gcc/tree-cfg.cc
  591222e5199894b9b5d23b1822f7e309  gcc/tree-cfg.h
! a48b85120f042a19d52da08d304cc287  gcc/tree-cfgcleanup.cc
! 4357345e39068e97ced26f06af8109a6  gcc/tree-cfgcleanup.h
  08af477af99a77369cf1e05fc6fdf3e9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
  8bf7d3cd5470b24f391fbdaf27a7fa3d  gcc/tree-complex.cc
--- 117767,117776 ----
  bcff760f6710b9047412aba72a381983  gcc/tree-affine.h
  527c9fa3845b2653cafc14c109129179  gcc/tree-assume.cc
  918b3dce8ecc8579127255abad77605e  gcc/tree-call-cdce.cc
! ca42ede542aebd549facd7af1a165d55  gcc/tree-cfg.cc
  591222e5199894b9b5d23b1822f7e309  gcc/tree-cfg.h
! ca2c309862705e4161a11efb32eb1ebf  gcc/tree-cfgcleanup.cc
! b528a0932f50504df146d112f7d01a5c  gcc/tree-cfgcleanup.h
  08af477af99a77369cf1e05fc6fdf3e9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
  8bf7d3cd5470b24f391fbdaf27a7fa3d  gcc/tree-complex.cc
*************** b9bad013f5186a6cf78fe8adbe457945  gcc/tr
*** 117716,117722 ****
  b32d8d9d2ed18752b632ccafa2e29737  gcc/tree-nrv.cc
  e29c56f554dbdf5acd832105e721212a  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
! d6f70ceb8f53d3be86548b178e50c8e0  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
  9d8acbaaafb1fa52b064abcc90b3b50c  gcc/tree-parloops.cc
  beaa17685ead93eee17f6373d004c4c4  gcc/tree-parloops.h
--- 117805,117811 ----
  b32d8d9d2ed18752b632ccafa2e29737  gcc/tree-nrv.cc
  e29c56f554dbdf5acd832105e721212a  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
! 705de1f086aac33c4497bc30aeb31610  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
  9d8acbaaafb1fa52b064abcc90b3b50c  gcc/tree-parloops.cc
  beaa17685ead93eee17f6373d004c4c4  gcc/tree-parloops.h
*************** fd4dd1219acc650a4f7855faa0097964  gcc/tr
*** 117730,117736 ****
  f2fea638426d89fe9ea58081e5c46b3a  gcc/tree-profile.cc
  fba416ae78dc089ae1624feee90fb7ab  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
! 221a6a553d9f6f7ecbfc9061956add14  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
  3e42023ef3fe5187ffffddbbb5740208  gcc/tree-ssa-address.cc
  c724c8becbea9eec0f806e3335942c32  gcc/tree-ssa-address.h
--- 117819,117825 ----
  f2fea638426d89fe9ea58081e5c46b3a  gcc/tree-profile.cc
  fba416ae78dc089ae1624feee90fb7ab  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
! f0f89902e3fb65efd0cee6aa170c1d13  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
  3e42023ef3fe5187ffffddbbb5740208  gcc/tree-ssa-address.cc
  c724c8becbea9eec0f806e3335942c32  gcc/tree-ssa-address.h
*************** adfc498b0c97a8123c02d418757df496  gcc/tr
*** 117748,117761 ****
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
  ac4bc0bb050755c3e348029c5befafed  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
! c2bfee2b31ff0129fc730cb3ac7a0137  gcc/tree-ssa-forwprop.cc
  0915c4bbeb42abdda8799c2b27e5db12  gcc/tree-ssa-ifcombine.cc
  488acc5feebebd58899e9146d82d4af4  gcc/tree-ssa-live.cc
  cf4bde43ab3b843eff45bac243d4116d  gcc/tree-ssa-live.h
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
  dded0ae90495fa0bc20b75515f44ff61  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
! 16adb8fe3a072acbebf0e97867daeb3a  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
  71ebf1f6c8d82b1fdbca6c7aa3bd14cb  gcc/tree-ssa-loop-manip.cc
  fbcc93539b376489c1256eb8cf2d4800  gcc/tree-ssa-loop-manip.h
--- 117837,117850 ----
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
  ac4bc0bb050755c3e348029c5befafed  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
! a698f85f3f3d5b7c0e87e778bd1718f5  gcc/tree-ssa-forwprop.cc
  0915c4bbeb42abdda8799c2b27e5db12  gcc/tree-ssa-ifcombine.cc
  488acc5feebebd58899e9146d82d4af4  gcc/tree-ssa-live.cc
  cf4bde43ab3b843eff45bac243d4116d  gcc/tree-ssa-live.h
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
  dded0ae90495fa0bc20b75515f44ff61  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
! df7cccabb4135a99eecc2460dc05e7bb  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
  71ebf1f6c8d82b1fdbca6c7aa3bd14cb  gcc/tree-ssa-loop-manip.cc
  fbcc93539b376489c1256eb8cf2d4800  gcc/tree-ssa-loop-manip.h
*************** fbcc93539b376489c1256eb8cf2d4800  gcc/tr
*** 117770,117776 ****
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  0ed882dedcd92c361bc556587aaa4b74  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
! 1f4fbb5443118ac391d7021b04c89a44  gcc/tree-ssa-phiopt.cc
  0864f59d85045caee0a643f82fa6d20c  gcc/tree-ssa-phiprop.cc
  2dc49a3648eb85067602e95bd942eb2a  gcc/tree-ssa-pre.cc
  207e8eba5552b33b5aae2de6e7c1f35d  gcc/tree-ssa-propagate.cc
--- 117859,117865 ----
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  0ed882dedcd92c361bc556587aaa4b74  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
! 256a40dd52f3cef99d5e57620e5c4948  gcc/tree-ssa-phiopt.cc
  0864f59d85045caee0a643f82fa6d20c  gcc/tree-ssa-phiprop.cc
  2dc49a3648eb85067602e95bd942eb2a  gcc/tree-ssa-pre.cc
  207e8eba5552b33b5aae2de6e7c1f35d  gcc/tree-ssa-propagate.cc
*************** fbd423299c28bb3b3577ec61aba45439  gcc/tr
*** 117797,117803 ****
  1c04b8ffbb8738de9504d80999af12c8  gcc/tree-ssa-uninit.cc
  0cb7cabeb68ef8727724158e83e6c89e  gcc/tree-ssa.cc
  95d033c8a4bc14c898459494486fd902  gcc/tree-ssa.h
! e1160ec41d297563bde6aef7f5306fa2  gcc/tree-ssanames.cc
  339bce59375d7679ec019cf010b6bcbc  gcc/tree-ssanames.h
  5fa0d7c6143cd9e39c30840b9996fa30  gcc/tree-stdarg.cc
  9817789b6289e73955015beb57c609b1  gcc/tree-stdarg.h
--- 117886,117892 ----
  1c04b8ffbb8738de9504d80999af12c8  gcc/tree-ssa-uninit.cc
  0cb7cabeb68ef8727724158e83e6c89e  gcc/tree-ssa.cc
  95d033c8a4bc14c898459494486fd902  gcc/tree-ssa.h
! 4d1d5b0b785c26e06439a0e53b1952ec  gcc/tree-ssanames.cc
  339bce59375d7679ec019cf010b6bcbc  gcc/tree-ssanames.h
  5fa0d7c6143cd9e39c30840b9996fa30  gcc/tree-stdarg.cc
  9817789b6289e73955015beb57c609b1  gcc/tree-stdarg.h
*************** ebb8ac3717c1bf5db4371da2f3cf6af7  gcc/tr
*** 117811,117825 ****
  2a9d02531d373e9030a89a8b56a73896  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! c002c500fcbe95817affe0efa6b88a58  gcc/tree-vect-loop.cc
! 372af0798474bbe8961bb0eece748041  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
! 3a0f36854254b3b48fda6f53ad2c8f34  gcc/tree-vect-slp.cc
! 36bcae9b7f14f1e09f07d910bd295986  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
! 6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
! 4b31ff56c4f59285db490173cc51d9d8  gcc/tree-vectorizer.h
  cb2defb55935eac3f24944ba204230f0  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
  415ce023fed5d6876500bc4dcf6c29f8  gcc/tree.cc
--- 117900,117914 ----
  2a9d02531d373e9030a89a8b56a73896  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! 52844e104e182fdd3e6bb5d9c826f5a6  gcc/tree-vect-loop.cc
! 7bbc2f36be7110e619b5a82723fb9cdb  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
! 39f80d088fedac688a25df45b3a1a8db  gcc/tree-vect-slp.cc
! fbcd8824f307d22466b149001f07dbac  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
! a4620080dfbf6757116ace6cfaae648f  gcc/tree-vectorizer.cc
! 1e97b9d695553eed3822a8652957ba57  gcc/tree-vectorizer.h
  cb2defb55935eac3f24944ba204230f0  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
  415ce023fed5d6876500bc4dcf6c29f8  gcc/tree.cc
*************** df85736a75a28f2d961a417c6edbbeeb  gcc/va
*** 117849,117856 ****
  5ee1b56a5e76c505c40cf28eb30f62e6  gcc/value-range-pretty-print.h
  6b536deb5ade6571e0988bf82fede1e2  gcc/value-range-storage.cc
  0b17e8456f7912204776ffd65ac2da59  gcc/value-range-storage.h
! 94a5d01c2f93c2d58bc156d22602b46b  gcc/value-range.cc
! f2c2516eabc3b606655ae57885f6119a  gcc/value-range.h
  deaa5727e1ea5e4802dc5240239a6a3a  gcc/value-relation.cc
  e10bc25b7d5b26ec39898cb88adde4dd  gcc/value-relation.h
  cba4500c3637e1d36913b20f1700d34e  gcc/var-tracking.cc
--- 117938,117945 ----
  5ee1b56a5e76c505c40cf28eb30f62e6  gcc/value-range-pretty-print.h
  6b536deb5ade6571e0988bf82fede1e2  gcc/value-range-storage.cc
  0b17e8456f7912204776ffd65ac2da59  gcc/value-range-storage.h
! 1fc7e153542568f793a4ffa7f020776d  gcc/value-range.cc
! 3d0525509765bf6d8ff7d4a7490bcc69  gcc/value-range.h
  deaa5727e1ea5e4802dc5240239a6a3a  gcc/value-relation.cc
  e10bc25b7d5b26ec39898cb88adde4dd  gcc/value-relation.h
  cba4500c3637e1d36913b20f1700d34e  gcc/var-tracking.cc
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 117891,117897 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! f4ab0751a698e59e92ddcfbee3b445c4  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
--- 117980,117986 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 62cf92b2b85d9ae606d261998e4cd83a  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
*************** add6cc404aee74ef33ad44cf7930a899  includ
*** 117923,117929 ****
  96744aabb8a4171ae991e2569e025202  include/leb128.h
  91ecff44973c64cfdfc2e3c412c56a80  include/libcollector.h
  71ab4f2b87330987580da553ce63f7c7  include/libfcollector.h
! c63a340dfb8729ab69f6a8b171fa079e  include/libiberty.h
  00dc0cc7a7a0b63fdb4677bf86248243  include/longlong.h
  aed43c5ed4317377043b964bab985093  include/lto-symtab.h
  4182cc168d3cd5762aa0182ebb59c5a5  include/md5.h
--- 118012,118018 ----
  96744aabb8a4171ae991e2569e025202  include/leb128.h
  91ecff44973c64cfdfc2e3c412c56a80  include/libcollector.h
  71ab4f2b87330987580da553ce63f7c7  include/libfcollector.h
! e6ec1b5594d3c2b4fb4c7c22a25108be  include/libiberty.h
  00dc0cc7a7a0b63fdb4677bf86248243  include/longlong.h
  aed43c5ed4317377043b964bab985093  include/lto-symtab.h
  4182cc168d3cd5762aa0182ebb59c5a5  include/md5.h
*************** b4c085899eca6fc0e5ddc81d15fc2e67  libcpp
*** 118183,118189 ****
  f6299826ad91c3ae3e8be64e87bb7d20  libcpp/makeuname2c.cc
  15ffbe55bf3e5cc75e66cfb1125773a8  libcpp/mkdeps.cc
  893a85ab3fc4806dc0c614afce9b7110  libcpp/pch.cc
! de7e0eb6ea1db40951a0d60774b2bd65  libcpp/po/ChangeLog
  5a131bbc2e718f87b148455d3b557800  libcpp/po/be.po
  4c220e08630ab2f3bc879ac1f37815d4  libcpp/po/ca.po
  bded59a97064870a8660599effc8a029  libcpp/po/cpplib.pot
--- 118272,118278 ----
  f6299826ad91c3ae3e8be64e87bb7d20  libcpp/makeuname2c.cc
  15ffbe55bf3e5cc75e66cfb1125773a8  libcpp/mkdeps.cc
  893a85ab3fc4806dc0c614afce9b7110  libcpp/pch.cc
! f7da7b815fcd563f33fceb9a4c761f20  libcpp/po/ChangeLog
  5a131bbc2e718f87b148455d3b557800  libcpp/po/be.po
  4c220e08630ab2f3bc879ac1f37815d4  libcpp/po/ca.po
  bded59a97064870a8660599effc8a029  libcpp/po/cpplib.pot
*************** bded59a97064870a8660599effc8a029  libcpp
*** 118191,118197 ****
  fbf3462a03090944a65cdf86782c338c  libcpp/po/de.po
  5d323f2c7ede1bdd541a0ef4b85bd9e8  libcpp/po/el.po
  edf308ffff09a33c6bedca74f8111249  libcpp/po/eo.po
! f3d61f7eca49213524ce1fb0b76e1910  libcpp/po/es.po
  2bb109127244c1cc558247bf6f5358e1  libcpp/po/fi.po
  0f28f4d33a719388d2ce6ca97754c7c9  libcpp/po/fr.po
  f67dc849cdc1673bf8b9ab07908442b6  libcpp/po/id.po
--- 118280,118286 ----
  fbf3462a03090944a65cdf86782c338c  libcpp/po/de.po
  5d323f2c7ede1bdd541a0ef4b85bd9e8  libcpp/po/el.po
  edf308ffff09a33c6bedca74f8111249  libcpp/po/eo.po
! 0e068d42c8afe63e50cd75160bed69bc  libcpp/po/es.po
  2bb109127244c1cc558247bf6f5358e1  libcpp/po/fi.po
  0f28f4d33a719388d2ce6ca97754c7c9  libcpp/po/fr.po
  f67dc849cdc1673bf8b9ab07908442b6  libcpp/po/id.po
*************** f83609e8cef5a06acade0e1451c8995e  libcpp
*** 118206,118212 ****
  aa3c4e908796418ca7107cf6ed8e9757  libcpp/po/tr.po
  3b866f248ceead26e4432280c9c89b0c  libcpp/po/uk.po
  bc44b49c8cddddf9a15ee43df44e326e  libcpp/po/vi.po
! fb54378865d45f97dd0e2e8146febf84  libcpp/po/zh_CN.po
  d2d46ae8c53a803bc5e8064534efc539  libcpp/po/zh_TW.po
  23984f1c939c855d527f2c76d3fb6fc4  libcpp/printable-chars.inc
  edd48320908018167103bd12e374773c  libcpp/symtab.cc
--- 118295,118301 ----
  aa3c4e908796418ca7107cf6ed8e9757  libcpp/po/tr.po
  3b866f248ceead26e4432280c9c89b0c  libcpp/po/uk.po
  bc44b49c8cddddf9a15ee43df44e326e  libcpp/po/vi.po
! 3a9e8d5257306de129c16d46acb33af4  libcpp/po/zh_CN.po
  d2d46ae8c53a803bc5e8064534efc539  libcpp/po/zh_TW.po
  23984f1c939c855d527f2c76d3fb6fc4  libcpp/printable-chars.inc
  edd48320908018167103bd12e374773c  libcpp/symtab.cc
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 118676,118682 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 340cfb2b887f22ea3851562124aa1b76  libgcc/ChangeLog
  b1229d68a3a67c6e30daf30379e7bb8f  libgcc/Makefile.in
  0f39724f440135be7a62bbd4e67e6840  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 118765,118771 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 5440ac9a2b5e2d39ea89631d6e660bb0  libgcc/ChangeLog
  b1229d68a3a67c6e30daf30379e7bb8f  libgcc/Makefile.in
  0f39724f440135be7a62bbd4e67e6840  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** bdd08773400d12af9ac3b370d255ccca  libgcc
*** 119119,119125 ****
  40eda5c7825bbaa25723845c3f9caabd  libgcc/config/ia64/vms-unwind.h
  82cf742d0711f5ea45c5d4ae1837083b  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 866d72ea16bc1ab5172e32ac0b31c432  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
--- 119208,119214 ----
  40eda5c7825bbaa25723845c3f9caabd  libgcc/config/ia64/vms-unwind.h
  82cf742d0711f5ea45c5d4ae1837083b  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! b35f64b0b74ab94649fd55fb2aca697b  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
*************** f9dd4c2de3d5d7f0a9e469c58bb96282  libgcc
*** 119231,119237 ****
  e47002f8a9af1f723717744533373209  libgcc/config/libbid/bid128_round_integral.c
  6aa496932e2793f99a679f3d8f2e8a6a  libgcc/config/libbid/bid128_scalb.c
  f96ef1bdedf3c677c0ab358daeac3087  libgcc/config/libbid/bid128_sqrt.c
! 63d2124e5e0459e6ce7253ace7228562  libgcc/config/libbid/bid128_string.c
  b04507fb39a7e74d05b983f493b37627  libgcc/config/libbid/bid128_to_int16.c
  36356c2e9e46f1a6d4b135671c1a9051  libgcc/config/libbid/bid128_to_int32.c
  2ca85383e6ab8dc7e175421fa567a2b3  libgcc/config/libbid/bid128_to_int64.c
--- 119320,119326 ----
  e47002f8a9af1f723717744533373209  libgcc/config/libbid/bid128_round_integral.c
  6aa496932e2793f99a679f3d8f2e8a6a  libgcc/config/libbid/bid128_scalb.c
  f96ef1bdedf3c677c0ab358daeac3087  libgcc/config/libbid/bid128_sqrt.c
! c69b5ef98235287040778749f896f91b  libgcc/config/libbid/bid128_string.c
  b04507fb39a7e74d05b983f493b37627  libgcc/config/libbid/bid128_to_int16.c
  36356c2e9e46f1a6d4b135671c1a9051  libgcc/config/libbid/bid128_to_int32.c
  2ca85383e6ab8dc7e175421fa567a2b3  libgcc/config/libbid/bid128_to_int64.c
*************** c06c11db33a4129e60e075061e8c9326  libgcc
*** 119874,119880 ****
  35a9e1c3edec4eeee8ee0aaa9583a0b2  libgcc/config/sh/crtn.S
  3499c0f6ee94b74bac7368f8b7c2b3ca  libgcc/config/sh/lib1funcs-4-300.S
  b25fdf4436b932a732ffe26e6ea4c8ba  libgcc/config/sh/lib1funcs-Os-4-200.S
! 6afc746f22d8c7368f7ef05ba313ebc0  libgcc/config/sh/lib1funcs.S
  59eb04e636bfae971c4f10ae5a5514e4  libgcc/config/sh/lib1funcs.h
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
  a994796db955e872100ea2f2537a657b  libgcc/config/sh/libgcc-glibc.ver
--- 119963,119969 ----
  35a9e1c3edec4eeee8ee0aaa9583a0b2  libgcc/config/sh/crtn.S
  3499c0f6ee94b74bac7368f8b7c2b3ca  libgcc/config/sh/lib1funcs-4-300.S
  b25fdf4436b932a732ffe26e6ea4c8ba  libgcc/config/sh/lib1funcs-Os-4-200.S
! 19628e0e15d0742f4a33b2e3532fb5cc  libgcc/config/sh/lib1funcs.S
  59eb04e636bfae971c4f10ae5a5514e4  libgcc/config/sh/lib1funcs.h
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
  a994796db955e872100ea2f2537a657b  libgcc/config/sh/libgcc-glibc.ver
*************** f017ba40c4699f1549cd341ad688007f  libgcc
*** 120234,120240 ****
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! 23011eb4bcb45a397657e191eb387e1e  libgcobol/ChangeLog
  573e7a1dee0641f56d9b797b23dff44b  libgcobol/Makefile.am
  23cf4646d213d05645a0bf48209b374d  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
--- 120323,120329 ----
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! b99124d22d636677b3471a0aae714f66  libgcobol/ChangeLog
  573e7a1dee0641f56d9b797b23dff44b  libgcobol/Makefile.am
  23cf4646d213d05645a0bf48209b374d  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
*************** ff016a65ce3c24bdd22207044f2a126e  libgco
*** 120242,120248 ****
  0bf6afe766a6886d2ac1f175300477f2  libgcobol/aclocal.m4
  4bcfcd26cbcae0acad6250357010ed20  libgcobol/charmaps.cc
  08bac5426c592bca32b87e76cd4a87a1  libgcobol/charmaps.h
! 22021e192da309ea1422cf473b6f77d4  libgcobol/common-defs.h
  55c6d7709ebd3974b38cdddffc6c29f3  libgcobol/config.h.in
  960f1025f03e1402396993e2527513be  libgcobol/configure
  7acbee643dbc269e7c4fddc8279d5bff  libgcobol/configure.ac
--- 120331,120337 ----
  0bf6afe766a6886d2ac1f175300477f2  libgcobol/aclocal.m4
  4bcfcd26cbcae0acad6250357010ed20  libgcobol/charmaps.cc
  08bac5426c592bca32b87e76cd4a87a1  libgcobol/charmaps.h
! f929a4f15afe71c4ce5d5075f528be4e  libgcobol/common-defs.h
  55c6d7709ebd3974b38cdddffc6c29f3  libgcobol/config.h.in
  960f1025f03e1402396993e2527513be  libgcobol/configure
  7acbee643dbc269e7c4fddc8279d5bff  libgcobol/configure.ac
*************** fbd99afdab52fcee0543b901042350ef  libgco
*** 120259,120270 ****
  b40580a5065188e3a6887000b8ab9de2  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! fbb2e2b0af4397cc13c501a4a3c299aa  libgcobol/libgcobol.cc
  a92501f6652c6261f981817076ae3254  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  93cffe2f9fb0783054d070bd71223ff0  libgcobol/valconv.cc
  04c19ca3fa2ce47103a80f82c288c484  libgcobol/valconv.h
! 8055da91d49093e266cd468f2ecd4707  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 120348,120359 ----
  b40580a5065188e3a6887000b8ab9de2  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 04069199ae10d45ed35b18ebf076d20d  libgcobol/libgcobol.cc
  a92501f6652c6261f981817076ae3254  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  93cffe2f9fb0783054d070bd71223ff0  libgcobol/valconv.cc
  04c19ca3fa2ce47103a80f82c288c484  libgcobol/valconv.h
! 4b121007ae69b56d576e46ba27dd0617  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** cb8dbdeb91544ace120b8d6e9d9db37f  libgfo
*** 120600,120607 ****
  7fec096e54baf151d073e8fa402d2b52  libgfortran/generated/findloc1_r8.c
  9a09232a929c70ac694823c41d5b9c30  libgfortran/generated/findloc1_s1.c
  86560c471d5217f7f242301292489d37  libgfortran/generated/findloc1_s4.c
! dfea9322b65ce940755593772b53efe6  libgfortran/generated/findloc2_s1.c
! beb308bb629670462f3ed197d748b4b0  libgfortran/generated/findloc2_s4.c
  2a472d01b88b567f12c049c3b6994e08  libgfortran/generated/iall_i1.c
  7e0c1198cdd4477b6f14837c40160d7b  libgfortran/generated/iall_i16.c
  f17a2f6d03f9590e9036448882c6df13  libgfortran/generated/iall_i2.c
--- 120689,120696 ----
  7fec096e54baf151d073e8fa402d2b52  libgfortran/generated/findloc1_r8.c
  9a09232a929c70ac694823c41d5b9c30  libgfortran/generated/findloc1_s1.c
  86560c471d5217f7f242301292489d37  libgfortran/generated/findloc1_s4.c
! ce348991d4021ce6e37ade66132b584b  libgfortran/generated/findloc2_s1.c
! 909a5d687769a8116cfc9d0fdb43915e  libgfortran/generated/findloc2_s4.c
  2a472d01b88b567f12c049c3b6994e08  libgfortran/generated/iall_i1.c
  7e0c1198cdd4477b6f14837c40160d7b  libgfortran/generated/iall_i16.c
  f17a2f6d03f9590e9036448882c6df13  libgfortran/generated/iall_i2.c
*************** eb7a9f2313c9b09f44560db9a23504df  libgfo
*** 120746,120753 ****
  7a0d7e2dc9e20c291c737e8ebbc60b0a  libgfortran/generated/maxloc1_16_r17.c
  da61bb7e11344478889dc47b7596d804  libgfortran/generated/maxloc1_16_r4.c
  d60c1a4df2a4d8eb9023de739b7155b8  libgfortran/generated/maxloc1_16_r8.c
! 2a94824ed1233c48cfff74fbed811a39  libgfortran/generated/maxloc1_16_s1.c
! bade5fb3f97e3c6634e068416e9272f6  libgfortran/generated/maxloc1_16_s4.c
  552f89c8b58fc395b78a3e3d2e8b06cf  libgfortran/generated/maxloc1_4_i1.c
  c507fc2e66ec574faee3219eb3144b46  libgfortran/generated/maxloc1_4_i16.c
  e52232cebdac212023a61a56619c2a44  libgfortran/generated/maxloc1_4_i2.c
--- 120835,120842 ----
  7a0d7e2dc9e20c291c737e8ebbc60b0a  libgfortran/generated/maxloc1_16_r17.c
  da61bb7e11344478889dc47b7596d804  libgfortran/generated/maxloc1_16_r4.c
  d60c1a4df2a4d8eb9023de739b7155b8  libgfortran/generated/maxloc1_16_r8.c
! 536076b209d404cb16a44cb3b76fd338  libgfortran/generated/maxloc1_16_s1.c
! 3dec3cf9edde57d35e4862ae017d03eb  libgfortran/generated/maxloc1_16_s4.c
  552f89c8b58fc395b78a3e3d2e8b06cf  libgfortran/generated/maxloc1_4_i1.c
  c507fc2e66ec574faee3219eb3144b46  libgfortran/generated/maxloc1_4_i16.c
  e52232cebdac212023a61a56619c2a44  libgfortran/generated/maxloc1_4_i2.c
*************** b11acb8eca8664dbda7262a67565825f  libgfo
*** 120763,120770 ****
  9f588351fd28ef8e20a5623ce93a59a5  libgfortran/generated/maxloc1_4_r17.c
  d103fd99202925df7c3dd23efe81af0a  libgfortran/generated/maxloc1_4_r4.c
  c94f0b95481a97720c29459379257219  libgfortran/generated/maxloc1_4_r8.c
! 55b41656c262f26739a51e5e3c1afc7c  libgfortran/generated/maxloc1_4_s1.c
! acf5c81c4ab5a9e6697a44e20d172e2d  libgfortran/generated/maxloc1_4_s4.c
  64931a89d362e8f24837f797a0bf61c7  libgfortran/generated/maxloc1_8_i1.c
  9caddfa85aa3a5cca5de76d1ea14defd  libgfortran/generated/maxloc1_8_i16.c
  028d2b330373f81a647baf9a63cedfbc  libgfortran/generated/maxloc1_8_i2.c
--- 120852,120859 ----
  9f588351fd28ef8e20a5623ce93a59a5  libgfortran/generated/maxloc1_4_r17.c
  d103fd99202925df7c3dd23efe81af0a  libgfortran/generated/maxloc1_4_r4.c
  c94f0b95481a97720c29459379257219  libgfortran/generated/maxloc1_4_r8.c
! c5a685eb5cab557893ae2bcac820bae7  libgfortran/generated/maxloc1_4_s1.c
! db288633a845d90460e917709af262ca  libgfortran/generated/maxloc1_4_s4.c
  64931a89d362e8f24837f797a0bf61c7  libgfortran/generated/maxloc1_8_i1.c
  9caddfa85aa3a5cca5de76d1ea14defd  libgfortran/generated/maxloc1_8_i16.c
  028d2b330373f81a647baf9a63cedfbc  libgfortran/generated/maxloc1_8_i2.c
*************** a5538f936916019edbe6eb586eefad22  libgfo
*** 120780,120793 ****
  b0b0f18b4a4e9a2f027e0926258e37b3  libgfortran/generated/maxloc1_8_r17.c
  88ad765cb7414fbcc9e952ff4d80f886  libgfortran/generated/maxloc1_8_r4.c
  3a994917bb91815592d691ab8673ce89  libgfortran/generated/maxloc1_8_r8.c
! 953b3fbf7cb4391d2c66721954f8b9bb  libgfortran/generated/maxloc1_8_s1.c
! e1f12b67102ae4e073b7019d918689c2  libgfortran/generated/maxloc1_8_s4.c
! 9d699dda38cb4ead9a1ca077339f72a4  libgfortran/generated/maxloc2_16_s1.c
! 89144572d6255649e0fc4b839c06f7a7  libgfortran/generated/maxloc2_16_s4.c
! 8f2bec2cfb04e3a85366cab2924fe891  libgfortran/generated/maxloc2_4_s1.c
! 24e49c8e92f8dc9691880640f12eb49a  libgfortran/generated/maxloc2_4_s4.c
! 6be3e2b85a21d1183e6a858e95b85e73  libgfortran/generated/maxloc2_8_s1.c
! e138a99219a0d719d844a11a21c53b3e  libgfortran/generated/maxloc2_8_s4.c
  2b4bce581a7f21a5e4531a3ca2448508  libgfortran/generated/maxval0_s1.c
  12f244aa2226f5f6aed78d88719e3337  libgfortran/generated/maxval0_s4.c
  a10202db8770adae52b1dce48d7a9ec2  libgfortran/generated/maxval1_s1.c
--- 120869,120882 ----
  b0b0f18b4a4e9a2f027e0926258e37b3  libgfortran/generated/maxloc1_8_r17.c
  88ad765cb7414fbcc9e952ff4d80f886  libgfortran/generated/maxloc1_8_r4.c
  3a994917bb91815592d691ab8673ce89  libgfortran/generated/maxloc1_8_r8.c
! ce0f704b75da39f463179e8e62cb7529  libgfortran/generated/maxloc1_8_s1.c
! 8dc34f7e2c22567dea0bd2700a99ba21  libgfortran/generated/maxloc1_8_s4.c
! 5c752f4b482e22e797769a805e88c395  libgfortran/generated/maxloc2_16_s1.c
! 2ccecef9c963ab7aa03733e91d57ef69  libgfortran/generated/maxloc2_16_s4.c
! 0d465075d26ff3efd34bd38fbd6371e5  libgfortran/generated/maxloc2_4_s1.c
! 0d4822aa98853c006714b931db6dec3a  libgfortran/generated/maxloc2_4_s4.c
! 71fa4dd2c581600786c2ece58a1aeb07  libgfortran/generated/maxloc2_8_s1.c
! 5f52e96586be0b547ae0462b9db591c7  libgfortran/generated/maxloc2_8_s4.c
  2b4bce581a7f21a5e4531a3ca2448508  libgfortran/generated/maxval0_s1.c
  12f244aa2226f5f6aed78d88719e3337  libgfortran/generated/maxval0_s4.c
  a10202db8770adae52b1dce48d7a9ec2  libgfortran/generated/maxval1_s1.c
*************** ec470cd823ff5e13c3e3f8933c39d888  libgfo
*** 120873,120880 ****
  540d4454c6e452889d980e916947f147  libgfortran/generated/minloc1_16_r17.c
  961ddcf37fca125693a81eb8beb50dea  libgfortran/generated/minloc1_16_r4.c
  d69a82a2f324afe9988430e522eacce2  libgfortran/generated/minloc1_16_r8.c
! 3ae5002560cd5f623f3e1e6fc5438c89  libgfortran/generated/minloc1_16_s1.c
! 85a6d5e1a8f64ff3d72b59b18e76f54b  libgfortran/generated/minloc1_16_s4.c
  5847d66d480e9842d866c8eaf7c83887  libgfortran/generated/minloc1_4_i1.c
  6d41e0a53d9b5f7cc912460023d0535e  libgfortran/generated/minloc1_4_i16.c
  d5a085137279dce24052958b942a5e1a  libgfortran/generated/minloc1_4_i2.c
--- 120962,120969 ----
  540d4454c6e452889d980e916947f147  libgfortran/generated/minloc1_16_r17.c
  961ddcf37fca125693a81eb8beb50dea  libgfortran/generated/minloc1_16_r4.c
  d69a82a2f324afe9988430e522eacce2  libgfortran/generated/minloc1_16_r8.c
! e1bd5df388dc6bf9c1dd989030b667a6  libgfortran/generated/minloc1_16_s1.c
! c03f2885f077a908f92063aba7bbb32a  libgfortran/generated/minloc1_16_s4.c
  5847d66d480e9842d866c8eaf7c83887  libgfortran/generated/minloc1_4_i1.c
  6d41e0a53d9b5f7cc912460023d0535e  libgfortran/generated/minloc1_4_i16.c
  d5a085137279dce24052958b942a5e1a  libgfortran/generated/minloc1_4_i2.c
*************** ab8c2b2038b7552e095765c8e7a49152  libgfo
*** 120890,120897 ****
  f644fd56ed5d739e84abfe762cbf26a8  libgfortran/generated/minloc1_4_r17.c
  1d7696a514235166b23f0e187b760b95  libgfortran/generated/minloc1_4_r4.c
  41a98f8720b5be14e3c4e7bc68ec158e  libgfortran/generated/minloc1_4_r8.c
! 5b7bc86e4c2b09a21735b871f3934eae  libgfortran/generated/minloc1_4_s1.c
! 546659412c691d972f4d913e2edb1f95  libgfortran/generated/minloc1_4_s4.c
  672a7ed532ba86f641353e19a4cce24e  libgfortran/generated/minloc1_8_i1.c
  c39fd4b96d951718c9cdad74fdadff1d  libgfortran/generated/minloc1_8_i16.c
  3eeca6f84edd91144ee4e44f3996d2dd  libgfortran/generated/minloc1_8_i2.c
--- 120979,120986 ----
  f644fd56ed5d739e84abfe762cbf26a8  libgfortran/generated/minloc1_4_r17.c
  1d7696a514235166b23f0e187b760b95  libgfortran/generated/minloc1_4_r4.c
  41a98f8720b5be14e3c4e7bc68ec158e  libgfortran/generated/minloc1_4_r8.c
! 6d77a5d312d3e4a2596b249a46928823  libgfortran/generated/minloc1_4_s1.c
! f8be71fae9f9719e4c904334f3def36f  libgfortran/generated/minloc1_4_s4.c
  672a7ed532ba86f641353e19a4cce24e  libgfortran/generated/minloc1_8_i1.c
  c39fd4b96d951718c9cdad74fdadff1d  libgfortran/generated/minloc1_8_i16.c
  3eeca6f84edd91144ee4e44f3996d2dd  libgfortran/generated/minloc1_8_i2.c
*************** e5be4044e10234d22cbf446c6fbb8611  libgfo
*** 120907,120920 ****
  d96c62a9b844f9e4f1c2dbb14aaff660  libgfortran/generated/minloc1_8_r17.c
  0066bca1fae1af406025e5efe30b1599  libgfortran/generated/minloc1_8_r4.c
  de5d5cc4c10f8007cdcc554c474f1673  libgfortran/generated/minloc1_8_r8.c
! a4bcc4d3f7720a4b6d958ed0208ff096  libgfortran/generated/minloc1_8_s1.c
! f9fd113a53bbc31d1e43969250589729  libgfortran/generated/minloc1_8_s4.c
! fbd4678e54a25d6960a0c17b4778ecd8  libgfortran/generated/minloc2_16_s1.c
! 70dc112a886b647555ddf9737789b2b4  libgfortran/generated/minloc2_16_s4.c
! add33a334bc490eae49df1787f9d4b82  libgfortran/generated/minloc2_4_s1.c
! 8d83ae2963fc80787c83db8049483d89  libgfortran/generated/minloc2_4_s4.c
! 33b6ef08fd2465e82709ff550d568eff  libgfortran/generated/minloc2_8_s1.c
! 4b1ace017e6780fff3b3aba64f48f9be  libgfortran/generated/minloc2_8_s4.c
  ffd2bdd1e465617800114f25032e41e7  libgfortran/generated/minval0_s1.c
  91624b872dcd26edb52c4d13f7aa28a2  libgfortran/generated/minval0_s4.c
  99ebdc6b36c8d7a9226e292f6d5062f3  libgfortran/generated/minval1_s1.c
--- 120996,121009 ----
  d96c62a9b844f9e4f1c2dbb14aaff660  libgfortran/generated/minloc1_8_r17.c
  0066bca1fae1af406025e5efe30b1599  libgfortran/generated/minloc1_8_r4.c
  de5d5cc4c10f8007cdcc554c474f1673  libgfortran/generated/minloc1_8_r8.c
! 6807fc39cfe49d1013e890acec86cff4  libgfortran/generated/minloc1_8_s1.c
! 249a29d437e54adfdac9ebc73c4f935a  libgfortran/generated/minloc1_8_s4.c
! 2954f167794fe46e84e387ecafdfd382  libgfortran/generated/minloc2_16_s1.c
! 643c1f64e9ce34b69fcfd061fd38e08c  libgfortran/generated/minloc2_16_s4.c
! 288b0b99bea66c863033c430ed6a95ac  libgfortran/generated/minloc2_4_s1.c
! b55cd63987f0f1cda2f8cb045758d39d  libgfortran/generated/minloc2_4_s4.c
! 8ec21c4b64d3f187d54d6298926e4fba  libgfortran/generated/minloc2_8_s1.c
! e7d5db3d2ec73ed9e804ae2fb5d58b6b  libgfortran/generated/minloc2_8_s4.c
  ffd2bdd1e465617800114f25032e41e7  libgfortran/generated/minval0_s1.c
  91624b872dcd26edb52c4d13f7aa28a2  libgfortran/generated/minval0_s4.c
  99ebdc6b36c8d7a9226e292f6d5062f3  libgfortran/generated/minval1_s1.c
*************** e68a39d309ff35e586d27d1604693df9  libgfo
*** 121217,121228 ****
  54e1331779072eed8239e0d4cbbdbcc1  libgfortran/m4/iany.m4
  b4ef537e45249a57bc031f8c57435f9a  libgfortran/m4/ifindloc0.m4
  0bb1689ff4087fff16f4264cba9cca72  libgfortran/m4/ifindloc1.m4
! 09292c73ffc265421e3b1d13bd1560f1  libgfortran/m4/ifindloc2.m4
  143daeeed4d4e1baa17753b51ddd88be  libgfortran/m4/iforeach-s.m4
  ef77f0d18ce645146e5155d85730a2dc  libgfortran/m4/iforeach-s2.m4
  8bbbce69fc532a405b1b88c79c2ef47b  libgfortran/m4/iforeach.m4
  d41d8cd98f00b204e9800998ecf8427e  libgfortran/m4/ifunc.m4
! 1512a0bd7ebcf39fdd9d1897042d6d6d  libgfortran/m4/ifunction-s.m4
  ae6c5100027c00b1dee83df8a20d56ac  libgfortran/m4/ifunction-s2.m4
  1a611de5949eec3ce316071b08967b77  libgfortran/m4/ifunction.m4
  10f323195ca3a220ce7b74b132d15fd7  libgfortran/m4/ifunction_logical.m4
--- 121306,121317 ----
  54e1331779072eed8239e0d4cbbdbcc1  libgfortran/m4/iany.m4
  b4ef537e45249a57bc031f8c57435f9a  libgfortran/m4/ifindloc0.m4
  0bb1689ff4087fff16f4264cba9cca72  libgfortran/m4/ifindloc1.m4
! 50fbc6f254781deab00f1f5657fc82e6  libgfortran/m4/ifindloc2.m4
  143daeeed4d4e1baa17753b51ddd88be  libgfortran/m4/iforeach-s.m4
  ef77f0d18ce645146e5155d85730a2dc  libgfortran/m4/iforeach-s2.m4
  8bbbce69fc532a405b1b88c79c2ef47b  libgfortran/m4/iforeach.m4
  d41d8cd98f00b204e9800998ecf8427e  libgfortran/m4/ifunc.m4
! 9095ffd8582ac125ebb5b8fed0b6163a  libgfortran/m4/ifunction-s.m4
  ae6c5100027c00b1dee83df8a20d56ac  libgfortran/m4/ifunction-s2.m4
  1a611de5949eec3ce316071b08967b77  libgfortran/m4/ifunction.m4
  10f323195ca3a220ce7b74b132d15fd7  libgfortran/m4/ifunction_logical.m4
*************** a0c59c07599c968a763da08daacff7fd  libgfo
*** 121238,121244 ****
  1849c8d25155bbd8bed6da18da1af7c8  libgfortran/m4/maxloc0s.m4
  bd580aa5ad2aaadede4eefea4b462995  libgfortran/m4/maxloc1.m4
  c2676855eb0a099574c6ca428e1499b1  libgfortran/m4/maxloc1s.m4
! 8fd4f57a22e6a69acd06bef02c8250cd  libgfortran/m4/maxloc2s.m4
  2ecf9fbe8c2dca8c17997695c7b1abd5  libgfortran/m4/maxval.m4
  adfb78f765e5d492c6efb37e1a1d7cbd  libgfortran/m4/maxval0s.m4
  496ff8ff8492b461bb2694b5db123f29  libgfortran/m4/maxval1s.m4
--- 121327,121333 ----
  1849c8d25155bbd8bed6da18da1af7c8  libgfortran/m4/maxloc0s.m4
  bd580aa5ad2aaadede4eefea4b462995  libgfortran/m4/maxloc1.m4
  c2676855eb0a099574c6ca428e1499b1  libgfortran/m4/maxloc1s.m4
! 5777aa64718a51f18c6a36d3c536543b  libgfortran/m4/maxloc2s.m4
  2ecf9fbe8c2dca8c17997695c7b1abd5  libgfortran/m4/maxval.m4
  adfb78f765e5d492c6efb37e1a1d7cbd  libgfortran/m4/maxval0s.m4
  496ff8ff8492b461bb2694b5db123f29  libgfortran/m4/maxval1s.m4
*************** b3555c0a67b61d12f3204bf4576ab57d  libgfo
*** 121246,121252 ****
  8ff3b2880462ad2896d2d4ef282c578c  libgfortran/m4/minloc0s.m4
  832bcd62248887de68d828ed4cd75a65  libgfortran/m4/minloc1.m4
  fc78f796bf1976ea1daa206b2b2b0bbf  libgfortran/m4/minloc1s.m4
! ebc1ed30f32d438f2e6a282f426bc8e0  libgfortran/m4/minloc2s.m4
  a7484af20eb12e4a722d718815d9c64b  libgfortran/m4/minval.m4
  63547debc8174d561d031e8457f1b88c  libgfortran/m4/minval0s.m4
  2520c49397bcbcbaf51302aff2a5f888  libgfortran/m4/minval1s.m4
--- 121335,121341 ----
  8ff3b2880462ad2896d2d4ef282c578c  libgfortran/m4/minloc0s.m4
  832bcd62248887de68d828ed4cd75a65  libgfortran/m4/minloc1.m4
  fc78f796bf1976ea1daa206b2b2b0bbf  libgfortran/m4/minloc1s.m4
! 35468eca76505150de17edc5a2ffa6a2  libgfortran/m4/minloc2s.m4
  a7484af20eb12e4a722d718815d9c64b  libgfortran/m4/minval.m4
  63547debc8174d561d031e8457f1b88c  libgfortran/m4/minval0s.m4
  2520c49397bcbcbaf51302aff2a5f888  libgfortran/m4/minval1s.m4
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 126825,126831 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 9986097e2ed4db79a6082df58b302e6a  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  54c7bc8277669e3bf5f1a3db179ae206  libgomp/Makefile.in
--- 126914,126920 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 88a44961be2964ec12e29f92186ba4d2  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  54c7bc8277669e3bf5f1a3db179ae206  libgomp/Makefile.in
*************** c798aea0a594e97c71edb3bd8cb93579  libgom
*** 126965,126971 ****
  c3d837ee5481f078c8b7875c1c8306be  libgomp/iter_ull.c
  0214d07a09a5c6e422ca9541c3f6cba4  libgomp/libgomp-plugin.c
  1aa4ba0a2ee049ea5df6f42bca4e756e  libgomp/libgomp-plugin.h
! fc3083cc2e9ea14c5c0b8494006ee2e6  libgomp/libgomp.h
  794094e4a415fa9d14baf5f132c3d098  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  407d25c7bf887d85293fd46c20e6021d  libgomp/libgomp.texi
--- 127054,127060 ----
  c3d837ee5481f078c8b7875c1c8306be  libgomp/iter_ull.c
  0214d07a09a5c6e422ca9541c3f6cba4  libgomp/libgomp-plugin.c
  1aa4ba0a2ee049ea5df6f42bca4e756e  libgomp/libgomp-plugin.h
! 69e5cac35d68ce6db01326f45f2fc005  libgomp/libgomp.h
  794094e4a415fa9d14baf5f132c3d098  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  407d25c7bf887d85293fd46c20e6021d  libgomp/libgomp.texi
*************** cab85a447a3c3a83164ef65672d00b92  libgom
*** 126979,126985 ****
  266ba320079e69e58163b7adf1d2c441  libgomp/oacc-host.c
  5eb42012fde17dd5875ac784c0d5f688  libgomp/oacc-init.c
  1776f2de108801a59696220c3147b649  libgomp/oacc-int.h
! f651914b819b559f3365ac80f8e48c24  libgomp/oacc-mem.c
  ec5cbb804396f78976ddc8aa63a99e23  libgomp/oacc-parallel.c
  b6edffd0cc3b521c5885b285ddc3deaf  libgomp/oacc-plugin.c
  cabec5d2660028884f23c85bd403f01e  libgomp/oacc-plugin.h
--- 127068,127074 ----
  266ba320079e69e58163b7adf1d2c441  libgomp/oacc-host.c
  5eb42012fde17dd5875ac784c0d5f688  libgomp/oacc-init.c
  1776f2de108801a59696220c3147b649  libgomp/oacc-int.h
! 400376422733dbef89bcfba6e2080481  libgomp/oacc-mem.c
  ec5cbb804396f78976ddc8aa63a99e23  libgomp/oacc-parallel.c
  b6edffd0cc3b521c5885b285ddc3deaf  libgomp/oacc-plugin.c
  cabec5d2660028884f23c85bd403f01e  libgomp/oacc-plugin.h
*************** f1eee47026bb1c516cd1b3a9b9c1c5fa  libgom
*** 127008,127014 ****
  6562eda8ef1a1fd0a2a0a9e5621f684b  libgomp/splay-tree.h
  1775f6ebbed5a9aef1882e66136d9e2b  libgomp/target-cxa-dso-dtor.c
  a8a23ca7c25ca51062b636b0c099096a  libgomp/target-indirect.c
! 5fce22dcfc1675b4810f1fca1901933f  libgomp/target.c
  8f03749b5187ce4fb4dce3f7d5b2d9f7  libgomp/task.c
  865cdfdff84a15247efff279e8aca77f  libgomp/taskloop.c
  f540431686cf02c11ae33b1cd66e01ca  libgomp/team.c
--- 127097,127103 ----
  6562eda8ef1a1fd0a2a0a9e5621f684b  libgomp/splay-tree.h
  1775f6ebbed5a9aef1882e66136d9e2b  libgomp/target-cxa-dso-dtor.c
  a8a23ca7c25ca51062b636b0c099096a  libgomp/target-indirect.c
! e10777c5b3796fb8a332899a2d7eb38a  libgomp/target.c
  8f03749b5187ce4fb4dce3f7d5b2d9f7  libgomp/task.c
  865cdfdff84a15247efff279e8aca77f  libgomp/taskloop.c
  f540431686cf02c11ae33b1cd66e01ca  libgomp/team.c
*************** f707c9b8a0f7005cc93bc19e863bbd02  libgom
*** 127164,127171 ****
  8801d963ce68c757ce130916d88cfb17  libgomp/testsuite/libgomp.c++/pr119692-1-1.C
  6fc97c0ff0901911f7091f8eca32d1dd  libgomp/testsuite/libgomp.c++/pr119692-1-2.C
  a728b6c3c12ff1bb22774ab07d33b777  libgomp/testsuite/libgomp.c++/pr119692-1-3.C
! 64964da5710749d5a1691aa6e6bc4615  libgomp/testsuite/libgomp.c++/pr119692-1-4.C
! efdbbfaf57e173262a8a65f272a81691  libgomp/testsuite/libgomp.c++/pr119692-1-5.C
  c57d4e906a72b08e5f49bef40306b63f  libgomp/testsuite/libgomp.c++/pr24455-1.C
  54c6e1c645042b8c18d27e04190d4816  libgomp/testsuite/libgomp.c++/pr24455.C
  ebbf9a13ba035141ba01b3281fd27fea  libgomp/testsuite/libgomp.c++/pr26691.C
--- 127253,127260 ----
  8801d963ce68c757ce130916d88cfb17  libgomp/testsuite/libgomp.c++/pr119692-1-1.C
  6fc97c0ff0901911f7091f8eca32d1dd  libgomp/testsuite/libgomp.c++/pr119692-1-2.C
  a728b6c3c12ff1bb22774ab07d33b777  libgomp/testsuite/libgomp.c++/pr119692-1-3.C
! e52b578ffdcb5e3a392a4093b0fac9ae  libgomp/testsuite/libgomp.c++/pr119692-1-4.C
! b072fa5bb28bdd3466fa998e303c56c2  libgomp/testsuite/libgomp.c++/pr119692-1-5.C
  c57d4e906a72b08e5f49bef40306b63f  libgomp/testsuite/libgomp.c++/pr24455-1.C
  54c6e1c645042b8c18d27e04190d4816  libgomp/testsuite/libgomp.c++/pr24455.C
  ebbf9a13ba035141ba01b3281fd27fea  libgomp/testsuite/libgomp.c++/pr26691.C
*************** ab3063f8b6682d372e65d063a35a406d  libgom
*** 127280,127289 ****
  e8abd1a92868914a2a5307268ef4b3d8  libgomp/testsuite/libgomp.c++/target-9.C
  9d99c4c8266b85f3e755797f45220fa2  libgomp/testsuite/libgomp.c++/target-cdtor-1.C
  97c6a58c85759cb7153801e0d0286635  libgomp/testsuite/libgomp.c++/target-cdtor-2.C
! 41a06298f49599123721886f94ac2b15  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C
  64bd4e898ee85afe93f6f182b3a479fc  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2-offload-sorry-GCN.C
  2ab3f03a68f64f25cb39af3017726c7c  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2-offload-sorry-nvptx.C
! eba6e28f5d005b8ebb2c31fda54646bf  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C
  9468d6f7c442b38e2a9f23b34f45e7c4  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-3.C
  7069b3bc6e85976fa473b1a8c6a77b4d  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C
  ea58e4396f7b4543713eff88bb835931  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C
--- 127369,127378 ----
  e8abd1a92868914a2a5307268ef4b3d8  libgomp/testsuite/libgomp.c++/target-9.C
  9d99c4c8266b85f3e755797f45220fa2  libgomp/testsuite/libgomp.c++/target-cdtor-1.C
  97c6a58c85759cb7153801e0d0286635  libgomp/testsuite/libgomp.c++/target-cdtor-2.C
! f95e8f8e2bc31f84035c5f704175f2a1  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C
  64bd4e898ee85afe93f6f182b3a479fc  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2-offload-sorry-GCN.C
  2ab3f03a68f64f25cb39af3017726c7c  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2-offload-sorry-nvptx.C
! 6653f24e0a8ffeac3286867c23ab4fad  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C
  9468d6f7c442b38e2a9f23b34f45e7c4  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-3.C
  7069b3bc6e85976fa473b1a8c6a77b4d  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C
  ea58e4396f7b4543713eff88bb835931  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C
*************** d9c383822eb3728cd6eba3775b3e04bc  libgom
*** 127797,127808 ****
  30b6bbbc024fc68fa9e69677007dbae3  libgomp/testsuite/libgomp.c/declare-variant-3-sm37.c
  4ea99858cb964012c477b246b7693494  libgomp/testsuite/libgomp.c/declare-variant-3-sm52.c
  24ce05bd1621e2283a45e5631d7fd074  libgomp/testsuite/libgomp.c/declare-variant-3-sm53.c
  a30c653b4c75613a04461c9dd4693f7c  libgomp/testsuite/libgomp.c/declare-variant-3-sm70.c
  c7e4450d857de7de3db653040f28ea54  libgomp/testsuite/libgomp.c/declare-variant-3-sm75.c
  f2efa95bfb9ba9e454c38688371551c9  libgomp/testsuite/libgomp.c/declare-variant-3-sm80.c
  0315cdf9221c890fcd6f827cf70b030e  libgomp/testsuite/libgomp.c/declare-variant-3-sm89.c
  07f0d7a64507218c809e5e271bdb674b  libgomp/testsuite/libgomp.c/declare-variant-3.c
! 4d7956a5fddbef82f0e6b3a34255fa81  libgomp/testsuite/libgomp.c/declare-variant-3.h
  9d4e38bf8232dbd3d2be1dac08f82dce  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c
  60f1694019edecc52984a1baf24bc84a  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c
  c345d04dc352b555cd84bcebe00359d4  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c
--- 127886,127898 ----
  30b6bbbc024fc68fa9e69677007dbae3  libgomp/testsuite/libgomp.c/declare-variant-3-sm37.c
  4ea99858cb964012c477b246b7693494  libgomp/testsuite/libgomp.c/declare-variant-3-sm52.c
  24ce05bd1621e2283a45e5631d7fd074  libgomp/testsuite/libgomp.c/declare-variant-3-sm53.c
+ 4d500a885d06d0e35ed7237c9155fcdc  libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c
  a30c653b4c75613a04461c9dd4693f7c  libgomp/testsuite/libgomp.c/declare-variant-3-sm70.c
  c7e4450d857de7de3db653040f28ea54  libgomp/testsuite/libgomp.c/declare-variant-3-sm75.c
  f2efa95bfb9ba9e454c38688371551c9  libgomp/testsuite/libgomp.c/declare-variant-3-sm80.c
  0315cdf9221c890fcd6f827cf70b030e  libgomp/testsuite/libgomp.c/declare-variant-3-sm89.c
  07f0d7a64507218c809e5e271bdb674b  libgomp/testsuite/libgomp.c/declare-variant-3.c
! 990725ec4ad0102414e463c434143f4f  libgomp/testsuite/libgomp.c/declare-variant-3.h
  9d4e38bf8232dbd3d2be1dac08f82dce  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c
  60f1694019edecc52984a1baf24bc84a  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c
  c345d04dc352b555cd84bcebe00359d4  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c
*************** a9b2ad991bd60cd4cd6ef4a68071bee6  libgom
*** 128183,128188 ****
--- 128273,128281 ----
  4e29a1266d0dcad35365d246391e52c3  libgomp/testsuite/libgomp.c/target-critical-1.c
  d7cbe25f5829f4d664a461d6ef7327f5  libgomp/testsuite/libgomp.c/target-has-device-addr-3.c
  2c67f32f623ae7d4b5ad5c7688a6acb1  libgomp/testsuite/libgomp.c/target-link-1.c
+ 2615e18884995f596aab452699d4a70a  libgomp/testsuite/libgomp.c/target-map-zero-sized-2.c
+ 6074fd0ddba8cd7a81233a0377d223c0  libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c
+ 24c08630e1dc6f184073f42ff7c1bb73  libgomp/testsuite/libgomp.c/target-map-zero-sized.c
  7d9530ec8677e1a90e6b3d38859fc1b2  libgomp/testsuite/libgomp.c/target-print-1.c
  ec5b58aca4cfce9a6dafce47f592cdc3  libgomp/testsuite/libgomp.c/target-simd-clone-1.c
  602b6f2d636477283d0ff3d6fc3402fc  libgomp/testsuite/libgomp.c/target-simd-clone-2.c
*************** cbc8d1928586e24499210f2cd9438551  libgom
*** 128234,128239 ****
--- 128327,128333 ----
  20b043532a006fde073387f9a23e4054  libgomp/testsuite/libgomp.fortran/alloc-comp-1.f90
  21463b128d951cea6b4ea41176379b5c  libgomp/testsuite/libgomp.fortran/alloc-comp-2.f90
  c9531d367dce1d94d1c60a4798d79661  libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
+ fa45380ee93a1192a6e6ef3538c265be  libgomp/testsuite/libgomp.fortran/alloc-comp-4.f90
  1067959d41c1d727cb8b2b0fb01911a7  libgomp/testsuite/libgomp.fortran/alloc-pinned-1.f90
  9ddc595eb654a0b9f09bb8a163862bd3  libgomp/testsuite/libgomp.fortran/allocatable-comp.f90
  a52dbb26d615e1710d36c7f03cfed8b2  libgomp/testsuite/libgomp.fortran/allocatable1.f90
*************** d4976186c6059f98d3a33b36f5c4d896  libgom
*** 128800,128809 ****
  d0be357251fa9b81f47dc517c6dcf8d4  libgomp/testsuite/libgomp.oacc-c++/deep-copy-12.C
  a924aab65a7c7201de2adf4968e8e2e6  libgomp/testsuite/libgomp.oacc-c++/deep-copy-13.C
  121dfc93f39c716edacdd5ec8cff3ceb  libgomp/testsuite/libgomp.oacc-c++/deep-copy-17.C
! 7f7ef578a77055ce4ee324fc4a6ec4b1  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C
  44a27cda6a0c94185e1eb7e1fa55e9b3  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2-offload-sorry-GCN.C
  d0c153796cda95778b802ac4d3590e73  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2-offload-sorry-nvptx.C
! 814bbf1d6553b2bee54f0d29dbccdbec  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C
  e962cf32862ac6bcb2b6ea398edfdd50  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-3.C
  86ffda628d80c63da915bbbe9a869eed  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-1.C
  1e0f321f082f24b85dbeb1f3cfa75053  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2-offload-sorry-GCN.C
--- 128894,128903 ----
  d0be357251fa9b81f47dc517c6dcf8d4  libgomp/testsuite/libgomp.oacc-c++/deep-copy-12.C
  a924aab65a7c7201de2adf4968e8e2e6  libgomp/testsuite/libgomp.oacc-c++/deep-copy-13.C
  121dfc93f39c716edacdd5ec8cff3ceb  libgomp/testsuite/libgomp.oacc-c++/deep-copy-17.C
! 6736677caab463f2421e0fcb76f5d97b  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C
  44a27cda6a0c94185e1eb7e1fa55e9b3  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2-offload-sorry-GCN.C
  d0c153796cda95778b802ac4d3590e73  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2-offload-sorry-nvptx.C
! f1b54f4a86456460907e75d42e9ea771  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C
  e962cf32862ac6bcb2b6ea398edfdd50  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-3.C
  86ffda628d80c63da915bbbe9a869eed  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-1.C
  1e0f321f082f24b85dbeb1f3cfa75053  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2-offload-sorry-GCN.C
*************** d310c3612a920f243d62620f007dec94  libgru
*** 129791,129797 ****
  4d27195db5805ea05b982a2971711c94  libgrust/libproc_macro_internal/tokentree.h
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 097331e2f03cd036ccbda4b013c59bfc  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  9b063cff28e2237e897ffbd7475e05ac  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
--- 129885,129891 ----
  4d27195db5805ea05b982a2971711c94  libgrust/libproc_macro_internal/tokentree.h
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 93fb12ccd9655f5373868a4c9bd56123  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  9b063cff28e2237e897ffbd7475e05ac  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
*************** a6b1581efa83a4072727b38d6fef4230  libibe
*** 129890,129896 ****
  ebe0199ed4ea5483459817bfb5d6b018  libiberty/physmem.c
  7152f6270ee7c20fc9be47478a2e2f87  libiberty/putenv.c
  e0e831dfd1e39695597e9f5c6951be8e  libiberty/random.c
! 8615844b5b1507f959e8fa88692d1058  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
  f98fe47aab466c45edb92920ca428192  libiberty/rust-demangle.c
--- 129984,129990 ----
  ebe0199ed4ea5483459817bfb5d6b018  libiberty/physmem.c
  7152f6270ee7c20fc9be47478a2e2f87  libiberty/putenv.c
  e0e831dfd1e39695597e9f5c6951be8e  libiberty/random.c
! d5ee3ce77a9493c766a24f6deccba2eb  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
  f98fe47aab466c45edb92920ca428192  libiberty/rust-demangle.c
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 131786,131792 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 82bf581b4fe521bd815d5e3129409f59  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 131880,131886 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! bdfdd770cfc41eec8441128bf759c36e  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** a94321c8d0dbbc71741ebf0f1cc9828c  libstd
*** 131817,131823 ****
  b569b721263ae74c6a8e285903fb9906  libstdc++-v3/Makefile.am
  5ae0a394d413d225772c3b38a114cce2  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 8666d07ef9b8e6c6bfdcb59ce3e116ee  libstdc++-v3/acinclude.m4
  13f29ef95664bfe876c83f7743ca504d  libstdc++-v3/aclocal.m4
  be75bd5b7d919ff69f604dfbb6bc65e9  libstdc++-v3/config.h.in
  9e25b4e524e0d639f272a9e96bab0ce3  libstdc++-v3/config/abi/compatibility.h
--- 131911,131917 ----
  b569b721263ae74c6a8e285903fb9906  libstdc++-v3/Makefile.am
  5ae0a394d413d225772c3b38a114cce2  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 16f3647e8941e565bc8b5d208fe98e7a  libstdc++-v3/acinclude.m4
  13f29ef95664bfe876c83f7743ca504d  libstdc++-v3/aclocal.m4
  be75bd5b7d919ff69f604dfbb6bc65e9  libstdc++-v3/config.h.in
  9e25b4e524e0d639f272a9e96bab0ce3  libstdc++-v3/config/abi/compatibility.h
*************** ed199f6700a016816d625b286bf25ead  libstd
*** 132011,132026 ****
  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
! 73af792365723fa4e3eb3b70a332f8c7  libstdc++-v3/configure
  315146bda822dcbf6f5677aac62442a6  libstdc++-v3/configure.ac
! ac3fcbca7e705b180f7e9e96ab97e2ec  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  55ecb88d091a7c97abd35f475cf97c2b  libstdc++-v3/doc/Makefile.am
  d66f986053e4755f0517ff5cfe90b2b5  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  8ddc98aa9ea49005b27aed1d2798e2fc  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
! 92f5430d44f06426f0d19bffc186ad05  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  575fc7a15bb0116a3eb836e702ee9792  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
--- 132105,132120 ----
  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
! 3c16f788a894abc8eba5de7089bfc3bf  libstdc++-v3/configure
  315146bda822dcbf6f5677aac62442a6  libstdc++-v3/configure.ac
! 22c2981483d92dbe80dc732e50bfdbcd  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  55ecb88d091a7c97abd35f475cf97c2b  libstdc++-v3/doc/Makefile.am
  d66f986053e4755f0517ff5cfe90b2b5  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  8ddc98aa9ea49005b27aed1d2798e2fc  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
! 5e2d61148769fb7fc2d5e5a17c850bcb  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  575fc7a15bb0116a3eb836e702ee9792  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
*************** d7249eb4d31bd107d0b09ea3c80cb723  libstd
*** 132107,132122 ****
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! 9262cc16ae0b0edc20fbb4efeabaaccd  libstdc++-v3/doc/html/index.html
  4e75c9ed55364b062b87405d233e6dd8  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! 4fb7ffd9efe6e3547b24292c317aa5df  libstdc++-v3/doc/html/manual/api.html
! adafcaa8208ba56a2f53b5e10b57dde2  libstdc++-v3/doc/html/manual/appendix.html
  349dd21397f799989e513b2c3c7b44d4  libstdc++-v3/doc/html/manual/appendix_contributing.html
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! 482cee07da7c4a2382174e7ad504f024  libstdc++-v3/doc/html/manual/appendix_porting.html
  ac3612f72ad76b3796526d161b19db59  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
  d30e8a474595941b24a6493ad08f78d9  libstdc++-v3/doc/html/manual/backwards.html
--- 132201,132216 ----
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! 937f0f440bea9d4319e155cb51856882  libstdc++-v3/doc/html/index.html
  4e75c9ed55364b062b87405d233e6dd8  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! aaafcae7ae14f03143ff9e72bf7f0958  libstdc++-v3/doc/html/manual/api.html
! e5a690ded485bd276ae2fa367fc1fd13  libstdc++-v3/doc/html/manual/appendix.html
  349dd21397f799989e513b2c3c7b44d4  libstdc++-v3/doc/html/manual/appendix_contributing.html
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! 63599e48d1e7d74877390a90bb56cd87  libstdc++-v3/doc/html/manual/appendix_porting.html
  ac3612f72ad76b3796526d161b19db59  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
  d30e8a474595941b24a6493ad08f78d9  libstdc++-v3/doc/html/manual/backwards.html
*************** afcc2751dae09e088abc1e3175cb94cc  libstd
*** 132154,132160 ****
  76cac108e21e304b7607196fb5245e00  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! 559ad34510db5c724ed2881282560ebc  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
  17d07c26f60433c6f5bf7f55a785fb3f  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
--- 132248,132254 ----
  76cac108e21e304b7607196fb5245e00  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! 67201056b7acbedcdacf039e774dcaab  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
  17d07c26f60433c6f5bf7f55a785fb3f  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
*************** e5c19b8ff5bc3c648559dbeb909a643d  libstd
*** 132183,132192 ****
  d973b7693c2b6c717784b81d549c61e5  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
  11c010c0761e0a41441314b388899e23  libstdc++-v3/doc/html/manual/setup.html
! 05fe12a35eeac73538be455d4b27f923  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! c3304f9fd33d3a6c0014b1955467fcec  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  50160fa9f92780aaa6fc7a4ef13fc897  libstdc++-v3/doc/html/manual/streambufs.html
  3cb55f3f54e0a98471bffdf9f533a8a2  libstdc++-v3/doc/html/manual/strings.html
--- 132277,132286 ----
  d973b7693c2b6c717784b81d549c61e5  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
  11c010c0761e0a41441314b388899e23  libstdc++-v3/doc/html/manual/setup.html
! d0d45f15e189e6eac6d7b09d58e62126  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! a0252835444f31aed5c3d7b1c731253b  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  50160fa9f92780aaa6fc7a4ef13fc897  libstdc++-v3/doc/html/manual/streambufs.html
  3cb55f3f54e0a98471bffdf9f533a8a2  libstdc++-v3/doc/html/manual/strings.html
*************** d08c687d9520b2f9d8dd6d973cca9e6a  libstd
*** 132411,132417 ****
  a972c915c47573572139ea9161dec244  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f320f25003678cca910f09ba54c923fc  libstdc++-v3/doc/xml/manual/diagnostics.xml
  3680906036c20b1ccc54e2d06b5a3a24  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! f300cfbcd39d07f1a1628c08ed8bc650  libstdc++-v3/doc/xml/manual/evolution.xml
  f9b28126e916ad19bb8350c6cb6bff95  libstdc++-v3/doc/xml/manual/extensions.xml
  7f1864c7f3c3b2bfde84b7086be97ca7  libstdc++-v3/doc/xml/manual/internals.xml
  fb1b8e4745ce0e8ee919f6013ad8ba87  libstdc++-v3/doc/xml/manual/intro.xml
--- 132505,132511 ----
  a972c915c47573572139ea9161dec244  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f320f25003678cca910f09ba54c923fc  libstdc++-v3/doc/xml/manual/diagnostics.xml
  3680906036c20b1ccc54e2d06b5a3a24  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! 9691615789c5cdab4a32d141ed8593af  libstdc++-v3/doc/xml/manual/evolution.xml
  f9b28126e916ad19bb8350c6cb6bff95  libstdc++-v3/doc/xml/manual/extensions.xml
  7f1864c7f3c3b2bfde84b7086be97ca7  libstdc++-v3/doc/xml/manual/internals.xml
  fb1b8e4745ce0e8ee919f6013ad8ba87  libstdc++-v3/doc/xml/manual/intro.xml
*************** d7f222c42325cd44eadad2c59eef7e6f  libstd
*** 132431,132439 ****
  224fdf0cec67459f2b23db3e17e2b7b8  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
  43724f1867b73f5defb58930adf229b0  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
  1e5265ce142bba4140e33ee4187dd0cd  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! b6d76db56e9cc9c47bb2a7469c9e54a6  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  dc08a5c57b082379df47d495ff2b840d  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
! 28dde81dca95991b927a4c572e798a0d  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  24e5c202f6a55504167ccc0c8395b881  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  f585d9116a5f533123166622818c4252  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
--- 132525,132533 ----
  224fdf0cec67459f2b23db3e17e2b7b8  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
  43724f1867b73f5defb58930adf229b0  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
  1e5265ce142bba4140e33ee4187dd0cd  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! b832a11166bec999bf09e3966eda40b1  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  dc08a5c57b082379df47d495ff2b840d  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
! 6c161323ae7976408e2b3dbbf4464176  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  24e5c202f6a55504167ccc0c8395b881  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  f585d9116a5f533123166622818c4252  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
*************** e2e099be3dd6a4b7a940a7232635ee2c  libstd
*** 132447,132454 ****
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! 4a93e29891af312e41b8ea1955a7f0bb  libstdc++-v3/include/Makefile.am
! b5f81e9376eb03ca88250508f79a7519  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
--- 132541,132548 ----
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! 7b87678ad26980cfd3f61ffec87439e1  libstdc++-v3/include/Makefile.am
! ae425609ae2fe546893a19529f01920c  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
*************** a155d2afa910d24be0955f42c4585228  libstd
*** 132481,132486 ****
--- 132575,132581 ----
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
  e999e0783a5ca2165919f352526501e9  libstdc++-v3/include/bits/cow_string.h
  99157013f345a7984753e3d01fdd744f  libstdc++-v3/include/bits/cpp_type_traits.h
+ 04bcf38ea86aaf64e794383ac7fa3a3a  libstdc++-v3/include/bits/cpyfunc_impl.h
  7cddddf44455557aa3a51978b5887fff  libstdc++-v3/include/bits/deque.tcc
  be08582d1795753f6e8fb613a7ec9fe0  libstdc++-v3/include/bits/elements_of.h
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
*************** b13fecc1efb3b85dacbed61c6d2a7eed  libstd
*** 132495,132500 ****
--- 132590,132596 ----
  b3da24b61a3e8219dde982b2734707ec  libstdc++-v3/include/bits/fstream.tcc
  bda3ca60f2214f1bd6656e6612aff428  libstdc++-v3/include/bits/functexcept.h
  edde9c9d1c9e267663f60a9f5cfe3ebe  libstdc++-v3/include/bits/functional_hash.h
+ 35b965444633ef8a16e9b0bff5820be5  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
*** 132517,132526 ****
  49e58e9ec2145ed684701aa13f71f5af  libstdc++-v3/include/bits/max_size_type.h
  9eff13bd13b461742ae4d1e12f0cce28  libstdc++-v3/include/bits/memory_resource.h
  27bdede74800b12180665889a05cca6b  libstdc++-v3/include/bits/memoryfwd.h
! 7b351469ff54ea35e3e585733ed01c68  libstdc++-v3/include/bits/mofunc_impl.h
  6ac85b21a9fb05014efe9345967c51b4  libstdc++-v3/include/bits/monostate.h
  284986047a940fb75091291f654e6d43  libstdc++-v3/include/bits/move.h
- 9fdf7f4d854ba2c39f864c9364081c8d  libstdc++-v3/include/bits/move_only_function.h
  46c2f3b679b1978ddb4dff0bf8b97610  libstdc++-v3/include/bits/new_allocator.h
  f0db6753fd67e8ef172c6851da248f62  libstdc++-v3/include/bits/node_handle.h
  3092071ce3fbded00e007d2833fcfcae  libstdc++-v3/include/bits/ostream.h
--- 132613,132621 ----
  49e58e9ec2145ed684701aa13f71f5af  libstdc++-v3/include/bits/max_size_type.h
  9eff13bd13b461742ae4d1e12f0cce28  libstdc++-v3/include/bits/memory_resource.h
  27bdede74800b12180665889a05cca6b  libstdc++-v3/include/bits/memoryfwd.h
! 9bdd2193666b79bd143f19d1111daae6  libstdc++-v3/include/bits/mofunc_impl.h
  6ac85b21a9fb05014efe9345967c51b4  libstdc++-v3/include/bits/monostate.h
  284986047a940fb75091291f654e6d43  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
*************** a229b5c8ad2904a3b3173239225596c4  libstd
*** 132614,132621 ****
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  7e44d906c5281d878723bac525e69466  libstdc++-v3/include/bits/vector.tcc
! 4270c426672a33e62e3cc2933a1c1cc2  libstdc++-v3/include/bits/version.def
! dc3ea988ce87b3ecee37dfd59b0cbf2d  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
--- 132709,132716 ----
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  7e44d906c5281d878723bac525e69466  libstdc++-v3/include/bits/vector.tcc
! 74f1f2455bfeb2a9e34f3d7c02a9be3c  libstdc++-v3/include/bits/version.def
! e6b0601c27473c8a3fad862bdba79816  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
*************** eedd87becada1e86119e5f8ef7bd33e4  libstd
*** 132665,132691 ****
  9cb6e61c9ce6aa2ebf7dc77d5be35e40  libstdc++-v3/include/c_compatibility/wchar.h
  fa35c20a8089393d720fdb1c4e420ad3  libstdc++-v3/include/c_compatibility/wctype.h
  de99821afe244ba9128936bfc19972f5  libstdc++-v3/include/c_global/cassert
! 2b053caaeeca3f9c3e89b715de0eb155  libstdc++-v3/include/c_global/ccomplex
  d3476aa227d01a785da2598d95849f62  libstdc++-v3/include/c_global/cctype
  5a95389b3ba277af60a1c3db4bb6ae1d  libstdc++-v3/include/c_global/cerrno
  753c9263dad45a297fa39afdb3cd6e8f  libstdc++-v3/include/c_global/cfenv
  f480e69017dc35cc6fab6630bada4617  libstdc++-v3/include/c_global/cfloat
  13214559adeb534d1291fea3813f59e0  libstdc++-v3/include/c_global/cinttypes
! e9919bba76543d6739b2ead820d28fd1  libstdc++-v3/include/c_global/ciso646
  9d260929c3a8f563e7d273517c02af88  libstdc++-v3/include/c_global/climits
  a5b91f8c38eddd257a048cb2d3085834  libstdc++-v3/include/c_global/clocale
  6452d0c55d05c54dbae7cbd855dfeceb  libstdc++-v3/include/c_global/cmath
  5674356fc9542152636dace9bfc3c2c8  libstdc++-v3/include/c_global/csetjmp
  41b8204a8236e2ec4001289746a8abef  libstdc++-v3/include/c_global/csignal
! 850321be3ffed77bebb7bc891145f35d  libstdc++-v3/include/c_global/cstdalign
  e401f032dbe586c11b717738a97e0a80  libstdc++-v3/include/c_global/cstdarg
! cae3750dabc89198e6917d817c8b7456  libstdc++-v3/include/c_global/cstdbool
  706d8a8b8e4539901a932f881126a58d  libstdc++-v3/include/c_global/cstddef
  7536ee1dcc999c08a41c991ca26edbcf  libstdc++-v3/include/c_global/cstdint
  140e9118c682fc556b5a634d4d0e0a02  libstdc++-v3/include/c_global/cstdio
  745c77d592b579358a91081122d152be  libstdc++-v3/include/c_global/cstdlib
  2896892bb4a3e8cfb6a4bf3a1b325e4c  libstdc++-v3/include/c_global/cstring
! 96a6b18d7c5712be653ffbd0eb0cc4bf  libstdc++-v3/include/c_global/ctgmath
  c71b95f8ba83f42a234bc5f0c3066ba9  libstdc++-v3/include/c_global/ctime
  0f5d3eaa297d066168381a51ffec4a66  libstdc++-v3/include/c_global/cuchar
  3d8d855628d5525fe2ca47230fcfcd55  libstdc++-v3/include/c_global/cwchar
--- 132760,132786 ----
  9cb6e61c9ce6aa2ebf7dc77d5be35e40  libstdc++-v3/include/c_compatibility/wchar.h
  fa35c20a8089393d720fdb1c4e420ad3  libstdc++-v3/include/c_compatibility/wctype.h
  de99821afe244ba9128936bfc19972f5  libstdc++-v3/include/c_global/cassert
! c3dd852467ecb375ddc654ba9629f1cb  libstdc++-v3/include/c_global/ccomplex
  d3476aa227d01a785da2598d95849f62  libstdc++-v3/include/c_global/cctype
  5a95389b3ba277af60a1c3db4bb6ae1d  libstdc++-v3/include/c_global/cerrno
  753c9263dad45a297fa39afdb3cd6e8f  libstdc++-v3/include/c_global/cfenv
  f480e69017dc35cc6fab6630bada4617  libstdc++-v3/include/c_global/cfloat
  13214559adeb534d1291fea3813f59e0  libstdc++-v3/include/c_global/cinttypes
! aeb1d3638d20d4792a586c61c7c12544  libstdc++-v3/include/c_global/ciso646
  9d260929c3a8f563e7d273517c02af88  libstdc++-v3/include/c_global/climits
  a5b91f8c38eddd257a048cb2d3085834  libstdc++-v3/include/c_global/clocale
  6452d0c55d05c54dbae7cbd855dfeceb  libstdc++-v3/include/c_global/cmath
  5674356fc9542152636dace9bfc3c2c8  libstdc++-v3/include/c_global/csetjmp
  41b8204a8236e2ec4001289746a8abef  libstdc++-v3/include/c_global/csignal
! e32033f054c4ecf20bd8d5e93aebf80d  libstdc++-v3/include/c_global/cstdalign
  e401f032dbe586c11b717738a97e0a80  libstdc++-v3/include/c_global/cstdarg
! f43fe2e619fef0ed91cd83079f5e7776  libstdc++-v3/include/c_global/cstdbool
  706d8a8b8e4539901a932f881126a58d  libstdc++-v3/include/c_global/cstddef
  7536ee1dcc999c08a41c991ca26edbcf  libstdc++-v3/include/c_global/cstdint
  140e9118c682fc556b5a634d4d0e0a02  libstdc++-v3/include/c_global/cstdio
  745c77d592b579358a91081122d152be  libstdc++-v3/include/c_global/cstdlib
  2896892bb4a3e8cfb6a4bf3a1b325e4c  libstdc++-v3/include/c_global/cstring
! 1d744eecff85ae425b307626dd2c53a5  libstdc++-v3/include/c_global/ctgmath
  c71b95f8ba83f42a234bc5f0c3066ba9  libstdc++-v3/include/c_global/ctime
  0f5d3eaa297d066168381a51ffec4a66  libstdc++-v3/include/c_global/cuchar
  3d8d855628d5525fe2ca47230fcfcd55  libstdc++-v3/include/c_global/cwchar
*************** d434b6703454e6fece0bb6ab907894d5  libstd
*** 133171,133190 ****
  3fca3267513b72857aff767e71c81692  libstdc++-v3/include/std/charconv
  cb5ee04f24eb3f44950a511e7d8fd2e7  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
! 73ad0b394fec64fa4f07972401973741  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
! f6c65bdf51be390263eb6c028a8aa327  libstdc++-v3/include/std/expected
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  f178b6bdcfd6bb2ca46e3cdf19989aaf  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 9e7ceb0d9ebae7712e5c3cf8932860fd  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
! 5b0f9576e4006baf8a1aba30625aa30c  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
  90e01b4e65cec5c0a3786580b2529edb  libstdc++-v3/include/std/iomanip
--- 133266,133285 ----
  3fca3267513b72857aff767e71c81692  libstdc++-v3/include/std/charconv
  cb5ee04f24eb3f44950a511e7d8fd2e7  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
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  f178b6bdcfd6bb2ca46e3cdf19989aaf  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 94a087729f822debd1b8fea53b3bac94  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
! 52b0de886d5de3c5cf37079e9e0c831e  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
  90e01b4e65cec5c0a3786580b2529edb  libstdc++-v3/include/std/iomanip
*************** ed6663b9ff729b09c2bacefa3568d1fc  libstd
*** 133198,133207 ****
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! e304ffdb5c06ee3728aaa6fa1365beda  libstdc++-v3/include/std/mdspan
  ba52fc2e0904a31a08183de15bd8c424  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
! 0c1cb418026be858b68ab6539158db68  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
  79b194dcc53ff3f04fcf800d0fc26cfa  libstdc++-v3/include/std/optional
--- 133293,133302 ----
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! b77e4376dc6faaaf47d13c3b912c9af6  libstdc++-v3/include/std/mdspan
  ba52fc2e0904a31a08183de15bd8c424  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
! a7b8e00d6cf56ea696ec15140b7c1d15  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
  79b194dcc53ff3f04fcf800d0fc26cfa  libstdc++-v3/include/std/optional
*************** c5a4df8fdbbe4b3d33d0b52db500e16d  libstd
*** 133233,133243 ****
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  7cdac9ea092e51e067047e2b3fb2060e  libstdc++-v3/include/std/thread
  af3d3134c33d40c51e1d3493f1fb7cc4  libstdc++-v3/include/std/tuple
! 8f22fc68b35d01856ee0826270cfdc94  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
! dd12ce8f665ffc66eeade1822f0de3d6  libstdc++-v3/include/std/utility
  e0096e013b19127692d1ed454892142d  libstdc++-v3/include/std/valarray
  d77f7c3f3a87abea407b92b2196d5010  libstdc++-v3/include/std/variant
  0d0a38cd1a88e2528f889586625f8305  libstdc++-v3/include/std/vector
--- 133328,133338 ----
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  7cdac9ea092e51e067047e2b3fb2060e  libstdc++-v3/include/std/thread
  af3d3134c33d40c51e1d3493f1fb7cc4  libstdc++-v3/include/std/tuple
! 11b8b579265daeb06b359039ec989bd0  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
! a05198d154ee4b152da6854fa6433ee7  libstdc++-v3/include/std/utility
  e0096e013b19127692d1ed454892142d  libstdc++-v3/include/std/valarray
  d77f7c3f3a87abea407b92b2196d5010  libstdc++-v3/include/std/variant
  0d0a38cd1a88e2528f889586625f8305  libstdc++-v3/include/std/vector
*************** cba1356a5d30bc9057a2e5d0925657f8  libstd
*** 133404,133410 ****
  58ef72ff76e08a9e2334c9f759fabf05  libstdc++-v3/po/string_literals.cc
  81b005b8577085db4fe217171a3c5253  libstdc++-v3/python/Makefile.am
  c94ad903b4e7baf364cdc3ef5e9f58a8  libstdc++-v3/python/Makefile.in
! bf53261d5fc8794ec46cfef0ed7f0ea3  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
--- 133499,133505 ----
  58ef72ff76e08a9e2334c9f759fabf05  libstdc++-v3/po/string_literals.cc
  81b005b8577085db4fe217171a3c5253  libstdc++-v3/python/Makefile.am
  c94ad903b4e7baf364cdc3ef5e9f58a8  libstdc++-v3/python/Makefile.in
! 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
*************** d85f3a53465585d54b96880e79456c79  libstd
*** 133541,133547 ****
  ea41b659ccf9f3e1850802e2fddaba52  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! 5323b40ee000ff13cbdaa0cae5c64c8b  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
--- 133636,133642 ----
  ea41b659ccf9f3e1850802e2fddaba52  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! 3372027d66ac2aa70b14ecba9d8eaf90  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
*************** a771eb011c81c640f771c44056da4e30  libstd
*** 133701,133707 ****
  2f17c70b88b52be2a4b98608a295313c  libstdc++-v3/testsuite/18_support/free_eh_pool.cc
  b463a2a67ea27b08374d4889e125f964  libstdc++-v3/testsuite/18_support/headers/cfloat/values.cc
  c5372769761fc046c0cfa9cabcb56311  libstdc++-v3/testsuite/18_support/headers/cfloat/values_c++17.cc
! 5bcc2598a10d845d5c864b600c04f9c1  libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc
  da426b23590d6339b17199f3fb1a7591  libstdc++-v3/testsuite/18_support/headers/ciso646/macros.h.cc
  4de8a300b8ac7d7d14984afc243fe0a0  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
  082c209776f3662071f5b009da87f96b  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
--- 133796,133803 ----
  2f17c70b88b52be2a4b98608a295313c  libstdc++-v3/testsuite/18_support/free_eh_pool.cc
  b463a2a67ea27b08374d4889e125f964  libstdc++-v3/testsuite/18_support/headers/cfloat/values.cc
  c5372769761fc046c0cfa9cabcb56311  libstdc++-v3/testsuite/18_support/headers/cfloat/values_c++17.cc
! 5c1ae2068406fbfafc0ec7f72c5b5be8  libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc
! edfb76e6d0df5e84a4f8d7a1424c9f87  libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc
  da426b23590d6339b17199f3fb1a7591  libstdc++-v3/testsuite/18_support/headers/ciso646/macros.h.cc
  4de8a300b8ac7d7d14984afc243fe0a0  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
  082c209776f3662071f5b009da87f96b  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
*************** a3b9ca97435d798fd3f8c7bb4032ebd9  libstd
*** 134073,134078 ****
--- 134169,134179 ----
  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
+ 6b16236bcc6a48e948577e16b773d58c  libstdc++-v3/testsuite/20_util/copyable_function/call.cc
+ 09520df3df90b586a3cb13556948faa3  libstdc++-v3/testsuite/20_util/copyable_function/cons.cc
+ 803b1e189d5ddb97ddf470bc478e2291  libstdc++-v3/testsuite/20_util/copyable_function/conv.cc
+ f2d2d2bd40840c1534687ec3fbd7dcfd  libstdc++-v3/testsuite/20_util/copyable_function/copy.cc
+ a2d4d3098924fba867e2bdd0e868f984  libstdc++-v3/testsuite/20_util/copyable_function/move.cc
  8e23784a64bbd4264903dd6f0e5d6ca3  libstdc++-v3/testsuite/20_util/decay/requirements/alias_decl.cc
  4f2ff053f2863571ccf7c9b5578267db  libstdc++-v3/testsuite/20_util/decay/requirements/explicit_instantiation.cc
  f22d69159e77ab60071fd7d9652578da  libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc
*************** a2db7fe0d3b99b5764f20de96ad52e76  libstd
*** 134140,134145 ****
--- 134241,134247 ----
  50f9029effa9d09d5c7816c953592560  libstdc++-v3/testsuite/20_util/exchange/1.cc
  beb333f9bd7f4e30c7efbab779bc22d1  libstdc++-v3/testsuite/20_util/exchange/constexpr.cc
  54ac023f0845d5c919380e1309b7fb5b  libstdc++-v3/testsuite/20_util/exchange/noexcept.cc
+ b886d3a0593a98cc18b3735af80a8882  libstdc++-v3/testsuite/20_util/expected/119714.cc
  af8a06346aa0e3af134afc89141593df  libstdc++-v3/testsuite/20_util/expected/assign.cc
  e8a5d4c4f0e447896dac59a5a84ec9c0  libstdc++-v3/testsuite/20_util/expected/bad.cc
  e860269ac09079a27b177fc3da2839e7  libstdc++-v3/testsuite/20_util/expected/cons.cc
*************** fb519a4b4b950e75c7541408b2c1f711  libstd
*** 134668,134676 ****
  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
! e609b5832e6e14b189c71b01fc31595a  libstdc++-v3/testsuite/20_util/move_only_function/call.cc
  a3d46eda1cd19ee59590b7e89ae8f69e  libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
! 5f5e72e772029cc74c37aed7a9effe5f  libstdc++-v3/testsuite/20_util/move_only_function/move.cc
  cf58b13b168563fa8fea60315876bccb  libstdc++-v3/testsuite/20_util/move_only_function/version.cc
  9fcafb98ed0f6058577644e7dfae368d  libstdc++-v3/testsuite/20_util/nonesuch/nonesuch.cc
  5a70996ada65af02a04514f25f469212  libstdc++-v3/testsuite/20_util/optional/77288.cc
--- 134770,134779 ----
  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
! a19a61e76c22fb2ad58c016b04a92d9d  libstdc++-v3/testsuite/20_util/move_only_function/call.cc
  a3d46eda1cd19ee59590b7e89ae8f69e  libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
! c44c827c39a1268af7dd63f524c856b9  libstdc++-v3/testsuite/20_util/move_only_function/conv.cc
! c1251c13c980f553cec1234149e46952  libstdc++-v3/testsuite/20_util/move_only_function/move.cc
  cf58b13b168563fa8fea60315876bccb  libstdc++-v3/testsuite/20_util/move_only_function/version.cc
  9fcafb98ed0f6058577644e7dfae368d  libstdc++-v3/testsuite/20_util/nonesuch/nonesuch.cc
  5a70996ada65af02a04514f25f469212  libstdc++-v3/testsuite/20_util/optional/77288.cc
*************** cc42abd3f12e4e2d740c196077e9dfbd  libstd
*** 137058,137069 ****
  1e719131ce8d3c52ab96fb6320a2682e  libstdc++-v3/testsuite/23_containers/map/requirements/partial_specialization/1.cc
  ef8992fce519e4aeb10d10129736a163  libstdc++-v3/testsuite/23_containers/map/requirements/typedefs.cc
  1a429dd433a9cca8518d6eeaf0db7ff4  libstdc++-v3/testsuite/23_containers/map/version.cc
! c77c12d9a752d73ac0446480be0cdf3e  libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc
  58d322becec5c5e65c19f17834e2a082  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_copy.cc
  d4de13f0203d7d66539b205b64e6fdf5  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_ints.cc
  74773d6a3d965e479de89f3fe5d7058d  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_shape.cc
  7dddbd46b2322b83e499829b9330469c  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
! 7196a8d4e5daa826af8ebfb07fa7ed3e  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
  351e436ffeeb8e47804c6992b75a81cb  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
  5bf01016c0929346c0086fb8a71129b5  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
  e49224c2f36823b4ec1be684dd0c8090  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
--- 137161,137172 ----
  1e719131ce8d3c52ab96fb6320a2682e  libstdc++-v3/testsuite/23_containers/map/requirements/partial_specialization/1.cc
  ef8992fce519e4aeb10d10129736a163  libstdc++-v3/testsuite/23_containers/map/requirements/typedefs.cc
  1a429dd433a9cca8518d6eeaf0db7ff4  libstdc++-v3/testsuite/23_containers/map/version.cc
! cf53330bcd33cbf3f9444b6c9c76a483  libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc
  58d322becec5c5e65c19f17834e2a082  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_copy.cc
  d4de13f0203d7d66539b205b64e6fdf5  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_ints.cc
  74773d6a3d965e479de89f3fe5d7058d  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_shape.cc
  7dddbd46b2322b83e499829b9330469c  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
! 12eb872fdb4d5a57287eed12eabdd4f7  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
  351e436ffeeb8e47804c6992b75a81cb  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
  5bf01016c0929346c0086fb8a71129b5  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
  e49224c2f36823b4ec1be684dd0c8090  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
*************** e068893f3af1982623fb89d4059ffe4a  libstd
*** 139141,139146 ****
--- 139244,139250 ----
  ac251804b3d5a9875fdf37c568cecabc  libstdc++-v3/testsuite/26_numerics/complex/dr781.cc
  a0fa72bf3957cba70ba15215cd0f6501  libstdc++-v3/testsuite/26_numerics/complex/dr844.cc
  3841d0a20f918c2f31a880aef737229d  libstdc++-v3/testsuite/26_numerics/complex/ext_c++23.cc
+ 732b33954c7fa9fbdd5414d3100dcce0  libstdc++-v3/testsuite/26_numerics/complex/fabs_neg.cc
  8b28401b158b27e45f0645ba7203ec21  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/1.cc
  204ec4c48695de16b38bfe5c37152219  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc
  5263916bd4ded6fd522f62c5182399f4  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/wchar_t/1.cc
*************** c08ecc556763caa8424e75d0366adda3  libstd
*** 141274,141280 ****
  2b2602563c19e4e216d402425ca2c227  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
  6d91a3500350913fb0ad2c995ac5c8b5  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/nodiscard.cc
  f4a8a2d74bc16221b34e102342dd7256  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! 93aa6a3a62353044e47801bd7399ac4f  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
  ca8bc8826b00f7ab2b7b4922e5f675c6  libstdc++-v3/testsuite/30_threads/semaphore/1.cc
  e7a6c2bc00e156939f96d542373fea2d  libstdc++-v3/testsuite/30_threads/semaphore/100806.cc
  6c93d0876a2bf86d96675d4c9a30d8b7  libstdc++-v3/testsuite/30_threads/semaphore/2.cc
--- 141378,141384 ----
  2b2602563c19e4e216d402425ca2c227  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
  6d91a3500350913fb0ad2c995ac5c8b5  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/nodiscard.cc
  f4a8a2d74bc16221b34e102342dd7256  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! a5016633d435a0151778486da6a6bb36  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
  ca8bc8826b00f7ab2b7b4922e5f675c6  libstdc++-v3/testsuite/30_threads/semaphore/1.cc
  e7a6c2bc00e156939f96d542373fea2d  libstdc++-v3/testsuite/30_threads/semaphore/100806.cc
  6c93d0876a2bf86d96675d4c9a30d8b7  libstdc++-v3/testsuite/30_threads/semaphore/2.cc
*************** a6b263685ef489371877099687c56a81  libstd
*** 142386,142392 ****
  0994b0bdd099a3dda63f7e4a254f28e5  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
  1cbf73e75666c657e4aa45990e6aeb03  libstdc++-v3/testsuite/lib/dg-options.exp
  a974a2ccf1152b37304e5b3202056ace  libstdc++-v3/testsuite/lib/gdb-test.exp
! 2bb4079516f0e2202a14792942165a79  libstdc++-v3/testsuite/lib/libstdc++.exp
  c0b950f007edf56d206dbb862b081279  libstdc++-v3/testsuite/lib/prune.exp
  33e43b63e93544d8165fe54e55d40041  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  c7b1096d1cba1418bd68c171b66a64eb  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
--- 142490,142496 ----
  0994b0bdd099a3dda63f7e4a254f28e5  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
  1cbf73e75666c657e4aa45990e6aeb03  libstdc++-v3/testsuite/lib/dg-options.exp
  a974a2ccf1152b37304e5b3202056ace  libstdc++-v3/testsuite/lib/gdb-test.exp
! b97a5c50e53c281c9d425f011f6fd82a  libstdc++-v3/testsuite/lib/libstdc++.exp
  c0b950f007edf56d206dbb862b081279  libstdc++-v3/testsuite/lib/prune.exp
  33e43b63e93544d8165fe54e55d40041  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  c7b1096d1cba1418bd68c171b66a64eb  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
*************** cd4529cac2690a77ae1d7bb88790a0d3  libstd
*** 142645,142651 ****
  cce32ddc9f763f73b9ecdd456f62dad8  libstdc++-v3/testsuite/std/concepts/concepts.object/regular.cc
  553fa21f46dadf88c0986882e76d0ccf  libstdc++-v3/testsuite/std/concepts/concepts.object/semiregular.cc
  576d75aaf7d2aae28e341cda63776ff9  libstdc++-v3/testsuite/std/format/arguments/112607.cc
! 6294535c9400f12b739853926eafd814  libstdc++-v3/testsuite/std/format/arguments/args.cc
  d52aff2e6dfd886a32da7955635ed09e  libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
  0ae0aa3194832d790df652a9ef7d17c7  libstdc++-v3/testsuite/std/format/arguments/lwg3810.cc
  088e48d84af728cffa21af00b37e3c04  libstdc++-v3/testsuite/std/format/context.cc
--- 142749,142755 ----
  cce32ddc9f763f73b9ecdd456f62dad8  libstdc++-v3/testsuite/std/concepts/concepts.object/regular.cc
  553fa21f46dadf88c0986882e76d0ccf  libstdc++-v3/testsuite/std/concepts/concepts.object/semiregular.cc
  576d75aaf7d2aae28e341cda63776ff9  libstdc++-v3/testsuite/std/format/arguments/112607.cc
! 6aba59df6148b2c2d4a2bb0a6167d356  libstdc++-v3/testsuite/std/format/arguments/args.cc
  d52aff2e6dfd886a32da7955635ed09e  libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
  0ae0aa3194832d790df652a9ef7d17c7  libstdc++-v3/testsuite/std/format/arguments/lwg3810.cc
  088e48d84af728cffa21af00b37e3c04  libstdc++-v3/testsuite/std/format/context.cc
*************** a7244ffd437f4addc853cfdd012c5cba  libstd
*** 142666,142677 ****
  c5e2b63672ec2df6fdcba9b4e1ba3ba0  libstdc++-v3/testsuite/std/format/functions/format_to_n.cc
  f859e29ec6cd7017c9d0abc60ed4b8ce  libstdc++-v3/testsuite/std/format/functions/size.cc
  fc7c0a7a8dd0259caaa437eac20a9eca  libstdc++-v3/testsuite/std/format/functions/vformat_to.cc
! ed2c787f1fa34b84cf6ab7877f8bd604  libstdc++-v3/testsuite/std/format/parse_ctx.cc
  98a750919025b1a6b7cbab28d1aba84a  libstdc++-v3/testsuite/std/format/parse_ctx_neg.cc
  00ee268f5a1f913167de4aeea261dd30  libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
  857552c77c29e3b58e4847f84fc27778  libstdc++-v3/testsuite/std/format/ranges/feature_test.cc
  23c2d31669b319d0063a28d6dd8353cc  libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
! 3fa7ea13575f3418a2f660f7f1668262  libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
  6cb5d9fc875882db914c7abe02a8f948  libstdc++-v3/testsuite/std/format/ranges/formatter.cc
  ff3750d4f039ac257a2c2ab19f6cf79b  libstdc++-v3/testsuite/std/format/ranges/map.cc
  e45555ead95d55c0d93f49cd0bd71984  libstdc++-v3/testsuite/std/format/ranges/sequence.cc
--- 142770,142781 ----
  c5e2b63672ec2df6fdcba9b4e1ba3ba0  libstdc++-v3/testsuite/std/format/functions/format_to_n.cc
  f859e29ec6cd7017c9d0abc60ed4b8ce  libstdc++-v3/testsuite/std/format/functions/size.cc
  fc7c0a7a8dd0259caaa437eac20a9eca  libstdc++-v3/testsuite/std/format/functions/vformat_to.cc
! 9f02ea2ba64dd911c4f66a5c1fbdc6ad  libstdc++-v3/testsuite/std/format/parse_ctx.cc
  98a750919025b1a6b7cbab28d1aba84a  libstdc++-v3/testsuite/std/format/parse_ctx_neg.cc
  00ee268f5a1f913167de4aeea261dd30  libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
  857552c77c29e3b58e4847f84fc27778  libstdc++-v3/testsuite/std/format/ranges/feature_test.cc
  23c2d31669b319d0063a28d6dd8353cc  libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
! 3eb8e2fa183f344414482633d44531bb  libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
  6cb5d9fc875882db914c7abe02a8f948  libstdc++-v3/testsuite/std/format/ranges/formatter.cc
  ff3750d4f039ac257a2c2ab19f6cf79b  libstdc++-v3/testsuite/std/format/ranges/map.cc
  e45555ead95d55c0d93f49cd0bd71984  libstdc++-v3/testsuite/std/format/ranges/sequence.cc
diff -Nrcpad gcc-16-20250511/gcc/ChangeLog gcc-16-20250518/gcc/ChangeLog
*** gcc-16-20250511/gcc/ChangeLog	Sun May 11 22:32:07 2025
--- gcc-16-20250518/gcc/ChangeLog	Sun May 18 22:32:06 2025
***************
*** 1,3 ****
--- 1,987 ----
+ 2025-05-17  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv-vect-permconst.cc (vector_permconst:process_bb):
+ 	Use rtvec_alloc, not gen_rtvec since we don't want/need to initialize
+ 	the vector.
+ 
+ 2025-05-17  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* doc/extend.texi: Mention new builtins.
+ 
+ 2025-05-17  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* builtins.def (TRIG_TYPE): New.
+ 	(BUILT_IN_ACOSPI): New.
+ 	(BUILT_IN_ACOSPIF): New.
+ 	(BUILT_IN_ACOSPIL): New.
+ 	(BUILT_IN_ASINPI): New.
+ 	(BUILT_IN_ASINPIF): New.
+ 	(BUILT_IN_ASINPIL): New.
+ 	(BUILT_IN_ATANPI): New.
+ 	(BUILT_IN_ATANPIF): New.
+ 	(BUILT_IN_ATANPIL): New.
+ 	(BUILT_IN_COSPI): New.
+ 	(BUILT_IN_COSPIF): New.
+ 	(BUILT_IN_COSPIL): New.
+ 	(BUILT_IN_SINPI): New.
+ 	(BUILT_IN_SINPIF): New.
+ 	(BUILT_IN_SINPIL): New.
+ 	(BUILT_IN_TANPI): New.
+ 	(BUILT_IN_TANPIF): New.
+ 	(BUILT_IN_TANPIL): New.
+ 	(TRIG2_TYPE): New.
+ 	(BUILT_IN_ATAN2PI): New.
+ 	(BUILT_IN_ATAN2PIF): New.
+ 	(BUILT_IN_ATAN2PIL): New.
+ 
+ 2025-05-17  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv.cc (synthesize_ior_xor): Avoid writing
+ 	operands[0] more than once, use new pseudos instead.
+ 
+ 2025-05-17  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_gpr_save_operation_p): Remove
+ 	break and fixbug for elt index.
+ 
+ 2025-05-16  Pengxuan Zheng  <quic_pzheng@quicinc.com>
+ 
+ 	PR target/100165
+ 	* config/aarch64/aarch64-protos.h (aarch64_output_fmov): New prototype.
+ 	(aarch64_simd_valid_and_imm_fmov): Likewise.
+ 	* config/aarch64/aarch64-simd.md (and<mode>3<vczle><vczbe>): Allow FMOV
+ 	codegen.
+ 	* config/aarch64/aarch64.cc (aarch64_simd_valid_and_imm_fmov): New.
+ 	(aarch64_output_fmov): Likewise.
+ 	* config/aarch64/constraints.md (Df): New constraint.
+ 	* config/aarch64/predicates.md (aarch64_reg_or_and_imm): Update
+ 	predicate to support FMOV codegen.
+ 
+ 2025-05-16  Pengxuan Zheng  <quic_pzheng@quicinc.com>
+ 
+ 	PR target/100165
+ 	* config/aarch64/aarch64.cc (aarch64_evpc_and): New.
+ 	(aarch64_expand_vec_perm_const_1): Call aarch64_evpc_and.
+ 	* optabs.cc (vec_perm_and_mask): New.
+ 	* optabs.h (vec_perm_and_mask): New prototype.
+ 
+ 2025-05-16  Pengxuan Zheng  <quic_pzheng@quicinc.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_evpc_reencode): Zero initialize
+ 	newd.
+ 
+ 2025-05-16  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* tree-ssa-forwprop.cc (forward_propagate_into_comparison): Dump
+ 	when replacing statement.
+ 
+ 2025-05-16  Martin Jambor  <mjambor@suse.cz>
+ 	    Michal Jires  <mjires@suse.cz>
+ 
+ 	* cgraph.h (symtab_node): Make member function get_uid const.
+ 	* cgraphclones.cc (dump_callgraph_transformation): Dump m_uid of the
+ 	call graph nodes instead of order.
+ 	* cgraph.cc (cgraph_node::remove): Likewise.
+ 	* ipa-cp.cc (ipcp_lattice<valtype>::print): Likewise.
+ 	* ipa-sra.cc (ipa_sra_summarize_function): Likewise.
+ 	* symtab.cc (symtab_node::dump_base): Likewise.
+ 
+ 2025-05-16  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	* doc/invoke.texi: Add to_underlying to -ffold-simple-inlines.
+ 
+ 2025-05-16  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR target/118603
+ 	* config/aarch64/driver-aarch64.cc (aarch64_cpu_data): Add cast to unsigned
+ 	to VARIANT of the define AARCH64_CORE.
+ 
+ 2025-05-16  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (struct sve_vec_cost): Change gather_load_x32_cost
+ 	and gather_load_x64_cost fields to unsigned.
+ 
+ 2025-05-16  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* tree-ssa-forwprop.cc (optimize_memcpy_to_memset): Add a limit on the alias walk.
+ 
+ 2025-05-16  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* gimple-fold.cc (optimize_memcpy_to_memset): Move to
+ 	tree-ssa-forwprop.cc.
+ 	(gimple_fold_builtin_memory_op): Remove call to
+ 	optimize_memcpy_to_memset.
+ 	(fold_stmt_1): Likewise.
+ 	* tree-ssa-forwprop.cc (optimize_memcpy_to_memset): Move from
+ 	gimple-fold.cc.
+ 	(simplify_builtin_call): Try to optimize memcpy/memset.
+ 	(pass_forwprop::execute): Try to optimize memcpy like assignment
+ 	from a previous memset.
+ 
+ 2025-05-16  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/arm/arm.cc (arm_gen_load_multiple_1): Simplify use of
+ 	end_sequence.
+ 	(arm_gen_store_multiple_1): Likewise.
+ 	* expr.cc (gen_move_insn): Likewise.
+ 	* gentarget-def.cc (main): Likewise.
+ 
+ 2025-05-16  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* asan.cc (asan_emit_allocas_unpoison): Directly return the
+ 	result of end_sequence.
+ 	(hwasan_emit_untag_frame): Likewise.
+ 	* config/aarch64/aarch64-speculation.cc
+ 	(aarch64_speculation_clobber_sp): Likewise.
+ 	(aarch64_speculation_establish_tracker): Likewise.
+ 	* config/arm/arm.cc (arm_call_tls_get_addr): Likewise.
+ 	* config/avr/avr-passes.cc (avr_parallel_insn_from_insns): Likewise.
+ 	* config/sh/sh_treg_combine.cc
+ 	(sh_treg_combine::make_not_reg_insn): Likewise.
+ 	* tree-outof-ssa.cc (emit_partition_copy): Likewise.
+ 
+ 2025-05-16  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* asan.cc (asan_clear_shadow): Use the return value of end_sequence,
+ 	rather than calling get_insns separately.
+ 	(asan_emit_stack_protection, asan_emit_allocas_unpoison): Likewise.
+ 	(hwasan_frame_base, hwasan_emit_untag_frame): Likewise.
+ 	* auto-inc-dec.cc (attempt_change): Likewise.
+ 	* avoid-store-forwarding.cc (process_store_forwarding): Likewise.
+ 	* bb-reorder.cc (fix_crossing_unconditional_branches): Likewise.
+ 	* builtins.cc (expand_builtin_apply_args): Likewise.
+ 	(expand_builtin_return, expand_builtin_mathfn_ternary): Likewise.
+ 	(expand_builtin_mathfn_3, expand_builtin_int_roundingfn): Likewise.
+ 	(expand_builtin_int_roundingfn_2, expand_builtin_saveregs): Likewise.
+ 	(inline_string_cmp): Likewise.
+ 	* calls.cc (expand_call): Likewise.
+ 	* cfgexpand.cc (expand_asm_stmt, pass_expand::execute): Likewise.
+ 	* cfgloopanal.cc (init_set_costs): Likewise.
+ 	* cfgrtl.cc (insert_insn_on_edge, prepend_insn_to_edge): Likewise.
+ 	(rtl_lv_add_condition_to_bb): Likewise.
+ 	* config/aarch64/aarch64-speculation.cc
+ 	(aarch64_speculation_clobber_sp): Likewise.
+ 	(aarch64_speculation_establish_tracker): Likewise.
+ 	(aarch64_do_track_speculation): Likewise.
+ 	* config/aarch64/aarch64.cc (aarch64_load_symref_appropriately)
+ 	(aarch64_expand_vector_init, aarch64_gen_ccmp_first): Likewise.
+ 	(aarch64_gen_ccmp_next, aarch64_mode_emit): Likewise.
+ 	(aarch64_md_asm_adjust): Likewise.
+ 	(aarch64_switch_pstate_sm_for_landing_pad): Likewise.
+ 	(aarch64_switch_pstate_sm_for_jump): Likewise.
+ 	(aarch64_switch_pstate_sm_for_call): Likewise.
+ 	* config/alpha/alpha.cc (alpha_legitimize_address_1): Likewise.
+ 	(alpha_emit_xfloating_libcall, alpha_gp_save_rtx): Likewise.
+ 	* config/arc/arc.cc (hwloop_optimize): Likewise.
+ 	* config/arm/aarch-common.cc (arm_md_asm_adjust): Likewise.
+ 	* config/arm/arm-builtins.cc: Likewise.
+ 	* config/arm/arm.cc (require_pic_register): Likewise.
+ 	(arm_call_tls_get_addr, arm_gen_load_multiple_1): Likewise.
+ 	(arm_gen_store_multiple_1, cmse_clear_registers): Likewise.
+ 	(cmse_nonsecure_call_inline_register_clear): Likewise.
+ 	(arm_attempt_dlstp_transform): Likewise.
+ 	* config/avr/avr-passes.cc (bbinfo_t::optimize_one_block): Likewise.
+ 	(avr_parallel_insn_from_insns): Likewise.
+ 	* config/avr/avr.cc (avr_prologue_setup_frame): Likewise.
+ 	(avr_expand_epilogue): Likewise.
+ 	* config/bfin/bfin.cc (hwloop_optimize): Likewise.
+ 	* config/c6x/c6x.cc (c6x_expand_compare): Likewise.
+ 	* config/cris/cris.cc (cris_split_movdx): Likewise.
+ 	* config/cris/cris.md: Likewise.
+ 	* config/csky/csky.cc (csky_call_tls_get_addr): Likewise.
+ 	* config/epiphany/resolve-sw-modes.cc
+ 	(pass_resolve_sw_modes::execute): Likewise.
+ 	* config/fr30/fr30.cc (fr30_move_double): Likewise.
+ 	* config/frv/frv.cc (frv_split_scc, frv_split_cond_move): Likewise.
+ 	(frv_split_minmax, frv_split_abs): Likewise.
+ 	* config/frv/frv.md: Likewise.
+ 	* config/gcn/gcn.cc (move_callee_saved_registers): Likewise.
+ 	(gcn_expand_prologue, gcn_restore_exec, gcn_md_reorg): Likewise.
+ 	* config/i386/i386-expand.cc
+ 	(ix86_expand_carry_flag_compare, ix86_expand_int_movcc): Likewise.
+ 	(ix86_vector_duplicate_value, expand_vec_perm_interleave2): Likewise.
+ 	(expand_vec_perm_vperm2f128_vblend): Likewise.
+ 	(expand_vec_perm_2perm_interleave): Likewise.
+ 	(expand_vec_perm_2perm_pblendv): Likewise.
+ 	(expand_vec_perm2_vperm2f128_vblend, ix86_gen_ccmp_first): Likewise.
+ 	(ix86_gen_ccmp_next): Likewise.
+ 	* config/i386/i386-features.cc
+ 	(scalar_chain::make_vector_copies): Likewise.
+ 	(scalar_chain::convert_reg, scalar_chain::convert_op): Likewise.
+ 	(timode_scalar_chain::convert_insn): Likewise.
+ 	* config/i386/i386.cc (ix86_init_pic_reg, ix86_va_start): Likewise.
+ 	(ix86_get_drap_rtx, legitimize_tls_address): Likewise.
+ 	(ix86_md_asm_adjust): Likewise.
+ 	* config/ia64/ia64.cc (ia64_expand_tls_address): Likewise.
+ 	(ia64_expand_compare, spill_restore_mem): Likewise.
+ 	(expand_vec_perm_interleave_2): Likewise.
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_call_tls_get_addr): Likewise.
+ 	* config/m32r/m32r.cc (gen_split_move_double): Likewise.
+ 	* config/m32r/m32r.md: Likewise.
+ 	* config/m68k/m68k.cc (m68k_call_tls_get_addr): Likewise.
+ 	(m68k_call_m68k_read_tp, m68k_sched_md_init_global): Likewise.
+ 	* config/m68k/m68k.md: Likewise.
+ 	* config/microblaze/microblaze.cc
+ 	(microblaze_call_tls_get_addr): Likewise.
+ 	* config/mips/mips.cc (mips_call_tls_get_addr): Likewise.
+ 	(mips_ls2_init_dfa_post_cycle_insn): Likewise.
+ 	(mips16_split_long_branches): Likewise.
+ 	* config/nvptx/nvptx.cc (nvptx_gen_shuffle): Likewise.
+ 	(nvptx_gen_shared_bcast, nvptx_propagate): Likewise.
+ 	(workaround_uninit_method_1, workaround_uninit_method_2): Likewise.
+ 	(workaround_uninit_method_3): Likewise.
+ 	* config/or1k/or1k.cc (or1k_init_pic_reg): Likewise.
+ 	* config/pa/pa.cc (legitimize_tls_address): Likewise.
+ 	* config/pru/pru.cc (pru_expand_fp_compare, pru_reorg_loop): Likewise.
+ 	* config/riscv/riscv-shorten-memrefs.cc
+ 	(pass_shorten_memrefs::transform): Likewise.
+ 	* config/riscv/riscv-vsetvl.cc (pre_vsetvl::emit_vsetvl): Likewise.
+ 	* config/riscv/riscv.cc (riscv_call_tls_get_addr): Likewise.
+ 	(riscv_frm_emit_after_bb_end): Likewise.
+ 	* config/rl78/rl78.cc (rl78_emit_libcall): Likewise.
+ 	* config/rs6000/rs6000.cc (rs6000_debug_legitimize_address): Likewise.
+ 	* config/s390/s390.cc (legitimize_tls_address): Likewise.
+ 	(s390_two_part_insv, s390_load_got, s390_va_start): Likewise.
+ 	* config/sh/sh_treg_combine.cc
+ 	(sh_treg_combine::make_not_reg_insn): Likewise.
+ 	* config/sparc/sparc.cc (sparc_legitimize_tls_address): Likewise.
+ 	(sparc_output_mi_thunk, sparc_init_pic_reg): Likewise.
+ 	* config/stormy16/stormy16.cc (xstormy16_split_cbranch): Likewise.
+ 	* config/xtensa/xtensa.cc (xtensa_copy_incoming_a7): Likewise.
+ 	(xtensa_expand_block_set_libcall): Likewise.
+ 	(xtensa_expand_block_set_unrolled_loop): Likewise.
+ 	(xtensa_expand_block_set_small_loop, xtensa_call_tls_desc): Likewise.
+ 	* dse.cc (emit_inc_dec_insn_before, find_shift_sequence): Likewise.
+ 	(replace_read): Likewise.
+ 	* emit-rtl.cc (reorder_insns, gen_clobber, gen_use): Likewise.
+ 	* except.cc (dw2_build_landing_pads, sjlj_mark_call_sites): Likewise.
+ 	(sjlj_emit_function_enter, sjlj_emit_function_exit): Likewise.
+ 	(sjlj_emit_dispatch_table): Likewise.
+ 	* expmed.cc (expmed_mult_highpart_optab, expand_sdiv_pow2): Likewise.
+ 	* expr.cc (convert_mode_scalar, emit_move_multi_word): Likewise.
+ 	(gen_move_insn, expand_cond_expr_using_cmove): Likewise.
+ 	(expand_expr_divmod, expand_expr_real_2): Likewise.
+ 	(maybe_optimize_pow2p_mod_cmp, maybe_optimize_mod_cmp): Likewise.
+ 	* function.cc (emit_initial_value_sets): Likewise.
+ 	(instantiate_virtual_regs_in_insn, expand_function_end): Likewise.
+ 	(get_arg_pointer_save_area, make_split_prologue_seq): Likewise.
+ 	(make_prologue_seq, gen_call_used_regs_seq): Likewise.
+ 	(thread_prologue_and_epilogue_insns): Likewise.
+ 	(match_asm_constraints_1): Likewise.
+ 	* gcse.cc (prepare_copy_insn): Likewise.
+ 	* ifcvt.cc (noce_emit_store_flag, noce_emit_move_insn): Likewise.
+ 	(noce_emit_cmove): Likewise.
+ 	* init-regs.cc (initialize_uninitialized_regs): Likewise.
+ 	* internal-fn.cc (expand_POPCOUNT): Likewise.
+ 	* ira-emit.cc (emit_move_list): Likewise.
+ 	* ira.cc (ira): Likewise.
+ 	* loop-doloop.cc (doloop_modify): Likewise.
+ 	* loop-unroll.cc (compare_and_jump_seq): Likewise.
+ 	(unroll_loop_runtime_iterations, insert_base_initialization): Likewise.
+ 	(split_iv, insert_var_expansion_initialization): Likewise.
+ 	(combine_var_copies_in_loop_exit): Likewise.
+ 	* lower-subreg.cc (resolve_simple_move,resolve_shift_zext): Likewise.
+ 	* lra-constraints.cc (match_reload, check_and_process_move): Likewise.
+ 	(process_addr_reg, insert_move_for_subreg): Likewise.
+ 	(process_address_1, curr_insn_transform): Likewise.
+ 	(inherit_reload_reg, process_invariant_for_inheritance): Likewise.
+ 	(inherit_in_ebb, remove_inheritance_pseudos): Likewise.
+ 	* lra-remat.cc (do_remat): Likewise.
+ 	* mode-switching.cc (commit_mode_sets): Likewise.
+ 	(optimize_mode_switching): Likewise.
+ 	* optabs.cc (expand_binop, expand_twoval_binop_libfunc): Likewise.
+ 	(expand_clrsb_using_clz, expand_doubleword_clz_ctz_ffs): Likewise.
+ 	(expand_doubleword_popcount, expand_ctz, expand_ffs): Likewise.
+ 	(expand_absneg_bit, expand_unop, expand_copysign_bit): Likewise.
+ 	(prepare_float_lib_cmp, expand_float, expand_fix): Likewise.
+ 	(expand_fixed_convert, gen_cond_trap): Likewise.
+ 	(expand_atomic_fetch_op): Likewise.
+ 	* ree.cc (combine_reaching_defs): Likewise.
+ 	* reg-stack.cc (compensate_edge): Likewise.
+ 	* reload1.cc (emit_input_reload_insns): Likewise.
+ 	* sel-sched-ir.cc (setup_nop_and_exit_insns): Likewise.
+ 	* shrink-wrap.cc (emit_common_heads_for_components): Likewise.
+ 	(emit_common_tails_for_components): Likewise.
+ 	(insert_prologue_epilogue_for_components): Likewise.
+ 	* tree-outof-ssa.cc (emit_partition_copy): Likewise.
+ 	(insert_value_copy_on_edge): Likewise.
+ 	* tree-ssa-loop-ivopts.cc (computation_cost): Likewise.
+ 
+ 2025-05-16  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* rtl.h (end_sequence): Return the sequence.
+ 	* emit-rtl.cc (end_sequence): Likewise.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/autovec-opt.md (*<optab>_vx_<mode>): Add new
+ 	pattern to convert vec_duplicate + vsub.vv to vsub.vx.
+ 	* config/riscv/riscv.cc (riscv_rtx_costs): Add minus as plus op.
+ 	* config/riscv/vector-iterators.md: Add minus to iterator
+ 	any_int_binop_no_shift_vx.
+ 
+ 2025-05-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/116546
+ 	* range-op.cc (operator_bitwise_and::op1_range): Utilize bitmask
+ 	from the LHS to improve op1's bitmask.
+ 
+ 2025-05-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/116546
+ 	* value-range.cc (irange::intersect_bitmask): Allow unknown
+ 	bitmasks to be processed.
+ 
+ 2025-05-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/116546
+ 	* value-range.cc (irange_bitmask::irange_bitmask): Include
+ 	leading ones in the bitmask.
+ 
+ 2025-05-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-range.cc (irange_bitmask::irange_bitmask): Rename from
+ 	get_bitmask_from_range and tweak.
+ 	(prange::set): Use new constructor.
+ 	(prange::intersect): Use new constructor.
+ 	(irange::get_bitmask): Likewise.
+ 	* value-range.h (irange_bitmask): New constructor prototype.
+ 
+ 2025-05-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/120277
+ 	* range-op-ptr.cc (operator_cast::fold_range): Check if the cast
+ 	if UNDEFINED before setting bounds.
+ 
+ 2025-05-15  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/120223
+ 	* config/riscv/riscv.cc (synthesize_ior_xor): XTHEADBS does not have
+ 	single bit manipulations.
+ 
+ 2025-05-15  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* tree-cfg.cc (verify_gimple_assign_unary): Accept only
+ 	COMPLEX_TYPE for CONJ_EXPR.
+ 
+ 2025-05-15  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* fold-const.cc (tree_swap_operands_p): Put ADDR_EXPR last
+ 	instead of just is_gimple_invariant_address ones.
+ 	* match.pd (`a ptr+ b !=\== ADDR`, `ADDR !=/== ssa_name`):
+ 	Move the ADDR to the last operand. Update comment.
+ 
+ 2025-05-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.cc (vect_transform_loops): When diagnosing
+ 	a vectorized loop indicate whether we vectorized an epilogue,
+ 	whether we used masked vectors and what unroll factor was
+ 	used.
+ 
+ 2025-05-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* config/i386/i386.cc (ix86_vector_costs::finish_cost):
+ 	Do not suggest a first epilogue mode for AVX512 sized
+ 	main loops with X86_TUNE_AVX512_TWO_EPILOGUES as that
+ 	interferes with using a masked epilogue.
+ 
+ 2025-05-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (record_stmt_cost): Remove mixed
+ 	stmt_vec_info/SLP node inline overload.
+ 	* tree-vect-stmts.cc (vectorizable_store): For costing
+ 	vector stmts only pass SLP node to record_stmt_cost.
+ 	(vectorizable_load): Likewise.
+ 
+ 2025-05-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.cc (vect_get_store_cost): Compute vectype based
+ 	on whether we got SLP node or stmt_vec_info and use the full
+ 	record_stmt_cost API.
+ 	(vect_get_load_cost): Likewise.
+ 
+ 2025-05-14  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc
+ 	(riscv_subset_list::riscv_subset_list): Init m_allow_adding_dup.
+ 
+ 2025-05-14  Jiawei  <jiawei@iscas.ac.cn>
+ 
+ 	* config/riscv/riscv-ext.def: New extension defs.
+ 	* config/riscv/riscv-ext.opt: Ditto.
+ 	* doc/riscv-ext.texi: Ditto.
+ 
+ 2025-05-14  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/t-riscv: Drop duplicate build rule for
+ 	riscv-ext.opt.
+ 
+ 2025-05-14  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-ext.opt.urls: Regenerate.
+ 
+ 2025-05-14  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* tree-cfgcleanup.cc (canonicalize_bool_cond): New function.
+ 	(cleanup_control_expr_graph): Call canonicalize_bool_cond for GIMPLE_COND.
+ 	* tree-cfgcleanup.h (canonicalize_bool_cond): New declaration.
+ 	* tree-ssa-forwprop.cc (forward_propagate_into_gimple_cond):
+ 	Call canonicalize_bool_cond.
+ 
+ 2025-05-14  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* gimple.h (gimple_cond_set_code): Add assert of the code
+ 	being a comparison.
+ 
+ 2025-05-14  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* tree-ssa-forwprop.cc (forward_propagate_into_gimple_cond): Assert
+ 	that gimple_cond_code is always a comparison.
+ 
+ 2025-05-14  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* gimple-fold.cc (replace_stmt_with_simplification): Check cfun before
+ 	accessing cfun.
+ 
+ 2025-05-14  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* tree-ssa-forwprop.cc (pass_forwprop::execute): Move marking of to_purge bb
+ 	and marking of fixup statements to after the local optimizations.
+ 
+ 2025-05-14  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* tree-ssa-forwprop.cc (pass_forwprop::execute): Use `|=` for
+ 	changed on the local folding.
+ 
+ 2025-05-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (record_stmt_cost): Add overload with
+ 	only SLP node and no vector type.
+ 	* tree-vect-stmts.cc (record_stmt_cost): Use
+ 	SLP_TREE_REPRESENTATIVE for stmt_vec_info.
+ 	(vect_model_simple_cost): Do not get stmt_vec_info argument
+ 	and adjust.
+ 	(vectorizable_call): Adjust.
+ 	(vectorizable_simd_clone_call): Likewise.
+ 	(vectorizable_conversion): Likewise.
+ 	(vectorizable_assignment): Likewise.
+ 	(vectorizable_shift): Likewise.
+ 	(vectorizable_operation): Likewise.
+ 	(vectorizable_condition): Likewise.
+ 	(vectorizable_comparison_1): Likewise.
+ 	* tree-vect-slp.cc (vect_prologue_cost_for_slp): Use
+ 	full-blown record_stmt_cost.
+ 
+ 2025-05-14  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/120215
+ 	* config/i386/i386-features.cc
+ 	(scalar_chain::mark_dual_mode_def): Weight
+ 	cost of integer<->sse move with bb frequency when it's
+ 	optimized_for_speed_p.
+ 	(general_scalar_chain::compute_convert_gain): Ditto, and
+ 	adjust function prototype to return true/false when cost model
+ 	is profitable or not.
+ 	(timode_scalar_chain::compute_convert_gain): Ditto.
+ 	(convert_scalars_to_vector): Adjust after the upper two
+ 	function prototype are changed.
+ 	* config/i386/i386-features.h (class scalar_chain): Change
+ 	n_integer_to_sse/n_sse_to_integer to cost_sse_integer, and add
+ 	weighted_cost_sse_integer.
+ 	(class general_scalar_chain): Adjust prototype to return bool
+ 	intead of int.
+ 	(class timode_scalar_chain): Ditto.
+ 
+ 2025-05-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/111873
+ 	* tree-sra.cc (sra_modify_expr): When processing a load which has
+ 	a type-incompatible replacement, do not store the contents of the
+ 	replacement into the original aggregate when that aggregate is
+ 	const.
+ 
+ 2025-05-14  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* config/s390/vector.md: Fix tf_to_fprx2 by using vlr instead of
+ 	ldr.
+ 
+ 2025-05-14  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/103771
+ 	* match.pd (cond_expr_convert_p): Extend the match to handle
+ 	scalar floating point type.
+ 	* tree-vect-patterns.cc
+ 	(vect_recog_cond_expr_convert_pattern): Handle floating point
+ 	type.
+ 
+ 2025-05-13  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR tree-optimization/119903
+ 	* gimple-fold.cc (replace_stmt_with_simplification): Reject for
+ 	noncall exceptions replacing comparison with itself.
+ 
+ 2025-05-13  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR middle-end/118868
+ 	* tree-cfg.cc (verify_gimple_assign_unary): Allow pointers
+ 	but disallow aggregate types for PAREN_EXPR.
+ 
+ 2025-05-13  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* cfgexpand.cc (vars_ssa_cache::operator()): Update the cache if the use is already
+ 	has a cache.
+ 
+ 2025-05-13  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* cfgexpand.cc (vars_ssa_cache::operator()): Reverse the order of the going
+ 	through the update list.
+ 
+ 2025-05-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vectorizable_nonlinear_induction):
+ 	Remove non-SLP path, use SLP_TREE_VECTYPE.
+ 	(vectorizable_induction): Likewise.  Drop ncopies variable
+ 	which is always 1.
+ 
+ 2025-05-13  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_extra_ext_flag_table_t):
+ 	New.
+ 	(riscv_ext_flag_table): Rename to ...
+ 	(riscv_extra_ext_flag_table): this, and drop most of definitions
+ 	that can obtained from the flags field of the riscv_ext_info_t
+ 	structures.
+ 	(apply_extra_extension_flags): Use riscv_ext_info_t.
+ 	(riscv_ext_is_subset): Ditto.
+ 
+ 2025-05-13  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_ext_version_table):
+ 	Remove.
+ 	(standard_extensions_p): Use riscv_ext_info_t.
+ 	(get_default_version): Use riscv_ext_info_t.
+ 	(riscv_arch_help): Ditto.
+ 
+ 2025-05-13  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc
+ 	(riscv_implied_info::riscv_implied_info_t): Remove unused
+ 	variant.
+ 	(struct riscv_implied_info_t): Remove unsued field.
+ 	(riscv_implied_info::match): Remove unused variant, and adjust
+ 	the logic.
+ 	(get_riscv_ext_info): New.
+ 	(riscv_implied_info): Remove.
+ 	(riscv_ext_info_t::apply_implied_ext): New.
+ 	(riscv_combine_info). Remove.
+ 	(riscv_subset_list::handle_implied_ext): Use riscv_ext_info_t
+ 	rather than riscv_implied_info.
+ 	(riscv_subset_list::check_implied_ext): Ditto.
+ 	(riscv_subset_list::handle_combine_ext): Use riscv_ext_info_t
+ 	rather than riscv_combine_info.
+ 	(riscv_minimal_hwprobe_feature_bits): Use riscv_ext_info_t
+ 	rather than riscv_implied_info.
+ 
+ 2025-05-13  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_ext_info_t): New
+ 	struct.
+ 	(opt_var_ref_t): Adjust order.
+ 	(cl_opt_var_ref_t): Ditto.
+ 	(riscv_ext_flag_table_t): Adjust order, and add a new construct
+ 	that not hold the extension name.
+ 	(riscv_version_t): New struct.
+ 	(riscv_implied_info_t): Adjust order, and add a new construct that not
+ 	hold the extension name.
+ 	(apply_extra_extension_flags): New function.
+ 	(riscv_ext_infos): New.
+ 	(riscv_implied_info): Adjust.
+ 	* config/riscv/riscv-opts.h (EXT_FLAG_MACRO): New macro.
+ 	(BITMASK_NOT_YET_ALLOCATED): New macro.
+ 
+ 2025-05-13  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_can_inline_p): Drop
+ 	extension flags check from `target_flags`.
+ 	* config/riscv/riscv-subset.h (riscv_x_target_flags_isa_mask):
+ 	Remove.
+ 	* config/riscv/riscv.cc (riscv_x_target_flags_isa_mask): Remove.
+ 
+ 2025-05-13  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* doc/invoke.texi: Replace hand‑written extension table with
+ 	`@include riscv-ext.texi` to pull in auto‑generated entries.
+ 	* doc/riscv-ext.texi: New generated definition file
+ 	containing formatted documentation entries for each extension.
+ 	* Makefile.in: Add riscv-ext.texi to the list of files to be
+ 	processed by the Texinfo generator.
+ 	* config/riscv/gen-riscv-ext-texi.cc: New.
+ 	* config/riscv/t-riscv: Add rule for generating riscv-ext.texi.
+ 
+ 2025-05-13  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/gen-riscv-ext-opt.cc: New.
+ 	* config/riscv/riscv.opt: Drop manual entries for target
+ 	options, and include riscv-ext.opt.
+ 	* config/riscv/riscv-ext.opt: New.
+ 	* config/riscv/riscv-ext.opt.urls: New.
+ 	* config.gcc: Add riscv-ext.opt to the list of target options files.
+ 	* common/config/riscv/riscv-common.cc (riscv_ext_flag_table): Adjsut target
+ 	option variable entry.
+ 	(riscv_set_arch_by_subset_list): Adjust target option variable.
+ 	* config/riscv/riscv-c.cc (riscv_ext_flag_table): Adjust target
+ 	option variable entry.
+ 	* config/riscv/riscv-vector-builtins.cc (pragma_intrinsic_flags):
+ 	Adjust variable name.
+ 	(riscv_pragma_intrinsic_flags_pollute): Adjust variable name.
+ 	(riscv_pragma_intrinsic_flags_restore): Ditto.
+ 	* config/riscv/t-riscv: Add the rule for generating
+ 	riscv-ext.opt.
+ 	* config/riscv/riscv-opts.h (TARGET_MIN_VLEN): Update.
+ 	(TARGET_MIN_VLEN_OPTS): Update.
+ 
+ 2025-05-13  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-ext.def: New file; define extension metadata table.
+ 	* config/riscv/riscv-ext-corev.def: New.
+ 	* config/riscv/riscv-ext-sifive.def: New.
+ 	* config/riscv/riscv-ext-thead.def: New.
+ 	* config/riscv/riscv-ext-ventana.def: New.
+ 
+ 2025-05-13  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/116792
+ 	* diagnostic-format-html.cc: Include "diagnostic-format-text.h",
+ 	"pretty-print-urlifier.h" and "edit-context.h".
+ 	(html_builder::html_builder): Fix indentation in decl.
+ 	(html_builder::make_element_for_diagnostic): Split out metadata
+ 	code into make_element_for_metadata.  Call
+ 	make_element_for_source, make_element_for_path, and
+ 	make_element_for_patch.
+ 	(html_builder::make_element_for_source): New.
+ 	(html_builder::make_element_for_path): New.
+ 	(html_builder::make_element_for_patch): New.
+ 	(html_builder::make_metadata_element): New.
+ 	(html_builder::make_element_for_metadata): New.
+ 	(html_output_format::get_builder): New.
+ 	(selftest::test_html_diagnostic_context::get_builder): New.
+ 	(selftest::test_simple_log): Update test to print a quoted string,
+ 	and verify that it uses a "gcc-quoted-text" span.
+ 	(selftest::test_metadata): New.
+ 	(selftest::diagnostic_format_html_cc_tests): Call it.
+ 
+ 2025-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* tree-ssanames.cc (set_bitmask): Use int_range_max for temps.
+ 	* value-range.cc (irange::set_range_from_bitmask): Handle all
+ 	trailing zero values.
+ 
+ 2025-05-12  Pan Li  <pan2.li@intel.com>
+ 
+ 	* match.pd: Add form 7 matching pattern for unsigned integer
+ 	SAT_ADD.
+ 
+ 2025-05-12  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* config/aarch64/aarch64.md (cmov<mode>6): Remove.
+ 
+ 2025-05-12  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR middle-end/120230
+ 	* optabs.cc (can_compare_p): Remove support for ccp_cmov.
+ 	* optabs.def (cmov_optab): Remove.
+ 	* optabs.h (can_compare_purpose): Remove ccp_cmov.
+ 
+ 2025-05-12  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/120231
+ 	* range-op-float.cc (operator_cast::fold_range): New variants.
+ 	(operator_cast::op1_range): Likewise.
+ 	* range-op-mixed.h (operator_cast::fold_range): Likewise.
+ 	(operator_cast::op1_range): Likewise
+ 	* range-op.cc (range_op_handler::fold_range): Add RO_FIF dispatch.
+ 	(range_op_handler::op1_range): Add RO_IFF and RO_FII patterns.
+ 	(range_operator::fold_range): Provide new variant default.
+ 	(range_operator::op1_range): Likewise.
+ 	* range-op.h (range_operator): Add new variant methods.
+ 
+ 2025-05-12  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/120188
+ 	* doc/gm2.texi (Semantic checking): Add -fm2-plugin command line option.
+ 
+ 2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* config/nvptx/nvptx-sm.def: Add '61'.
+ 	* config/nvptx/nvptx-gen.h: Regenerate.
+ 	* config/nvptx/nvptx-gen.opt: Likewise.
+ 	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm): Adjust.
+ 	* config/nvptx/nvptx.opt (-march-map=sm_61, -march-map=sm_62):
+ 	Likewise.
+ 	* config.gcc: Likewise.
+ 	* doc/invoke.texi (Nvidia PTX Options): Document '-march=sm_61'.
+ 	* config/nvptx/gen-multilib-matches-tests: Extend.
+ 
+ 2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* config/nvptx/nvptx-opts.h (enum ptx_version): Add
+ 	'PTX_VERSION_5_0'.
+ 	* config/nvptx/nvptx.cc (ptx_version_to_string)
+ 	(ptx_version_to_number): Adjust.
+ 	* config/nvptx/nvptx.h (TARGET_PTX_5_0): New.
+ 	* config/nvptx/nvptx.opt (Enum(ptx_version)): Add 'EnumValue'
+ 	'5.0' for 'PTX_VERSION_5_0'.
+ 	* doc/invoke.texi (Nvidia PTX Options): Document '-mptx=5.0'.
+ 
+ 2025-05-12  Dongyan Chen  <chendongyan@isrc.iscas.ac.cn>
+ 
+ 	* common/config/riscv/riscv-common.cc
+ 	(riscv_subset_list::check_conflict_ext): New extension.
+ 	* config/riscv/riscv.opt: Ditto.
+ 
+ 2025-05-12  Dongyan Chen  <chendongyan@isrc.iscas.ac.cn>
+ 
+ 	* common/config/riscv/riscv-common.cc
+ 	(riscv_subset_list::check_conflict_ext): New extension.
+ 	* config/riscv/riscv.opt: Ditto.
+ 
+ 2025-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* lto-streamer-out.cc (hash_tree): Hash TYPE_MODE_RAW.
+ 	When offloading hash modes as VOIDmode for aggregates
+ 	and vectors.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* doc/extend.texi: Remove the iwmmxt intrinsics.
+ 	* doc/md.texi: Remove the iwmmxt-related constraints.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/aout.h (REGISTER_NAMES): Remove iwmmxt registers.
+ 	* config/arm/arm.h (FIRST_IWMMXT_REGNUM): Delete.
+ 	(LAST_IWMMXT_REGNUM): Delete.
+ 	(FIRST_IWMMXT_GR_REGNUM): Delete.
+ 	(LAST_IWMMXT_GR_REGNUM): Delete.
+ 	(IS_IWMMXT_REGNUM):  Delete.
+ 	(IS_IWMMXT_GR_REGNUM): Delete.
+ 	(FRAME_POINTER_REGNUM): Define relative to CC_REGNUM.
+ 	(ARG_POINTER_REGNUM): Define relative to FRAME_POINTER_REGNUM.
+ 	(FIRST_PSEUDO_REGISTER): Adjust.
+ 	(WREG): Delete.
+ 	(WGREG): Delete.
+ 	(REG_ALLOC_ORDER): Remove iWMMX registers.
+ 	(enum reg_class): Remove iWMMX register classes.
+ 	(REG_CLASS_NAMES): Likewise.
+ 	(REG_CLASS_CONTENTS):  Remove iWMMX registers.
+ 	* config/arm/arm.md (CC_REGNUM): Adjust value.
+ 	(VFPCC_RENGUM): Likewise.
+ 	(APSRQ_REGNUM): Likewise.
+ 	(APSRGE_REGNUM): Likewise.
+ 	(VPR_REGNUM): Likewise.
+ 	(RA_AUTH_CODE): Likewise.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (feature iwmmxt, feature iwmmxt2):  Delete.
+ 	* config/arm/arm-protos.h (arm_output_iwmmxt_shift_immediate): Delete.
+ 	(arm_output_iwmmxt_tinsr): Delete.
+ 	(arm_arch_iwmmxt): Delete.
+ 	(arm_arch_iwmmxt2): Delete.
+ 	* config/arm/arm.h (TARGET_IWMMXT): Delete.
+ 	(TARGET_IWMMXT2): Delete.
+ 	(TARGET_REALLY_IWMMXT): Delete.
+ 	(TARGET_REALLY_IWMMXT2): Delete.
+ 	(VALID_IWMMXT_REG_MODE): Delete.
+ 	(ARM_HAVE_V8QI_ARITH): Remove iWMMXT.
+ 	(ARM_HAVE_V4HI_ARITH): Likewise.
+ 	(ARM_HAVE_V2SI_ARITH): Likewise.
+ 	(ARM_HAVE_V8QI_LDST): Likewise.
+ 	(ARM_HAVE_V4HI_LDST): Likewise.
+ 	(ARM_HAVE_V2SI_LDST): Likewise.
+ 	(SECONDARY_OUTPUT_RELOAD_CLASS):  Remove iWMMXT cases.
+ 	(SECONDARY_INPUT_RELOAD_CLASS): Likewise.
+ 	* config/arm/arm.cc (arm_arch_iwmmxt): Delete.
+ 	(arm_arch_iwmmxt2): Delete.
+ 	(arm_option_reconfigure_globals): Don't initialize them.
+ 	(arm_register_move_cost): Remove costs for iwmmxt.
+ 	(struct minipool_node):  Update comment.
+ 	(output_move_double): Likewise
+ 	(output_return_instruction): Likewise.
+ 	(arm_print_operand, cases 'U' and 'w'): Report an error if
+ 	used.
+ 	(arm_regno_class): Remove iWMMXT cases.
+ 	(arm_debugger_regno): Remove iWMMXT cases.
+ 	(arm_output_iwmmxt_shift_immediate): Delete.
+ 	(arm_output_iwmmxt_tinsr): Delete.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-c.cc (arm_cpu_builtins):  Remove predefines
+ 	for __IWWMXT__, __IWMMXT2__ and __ARM_WMMX.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/iterators.md (VMMX, VMMX2): Remove mode iterators.
+ 	(MMX_char): Remove mode iterator attribute.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.md (core_cycles): Remove iwmmxt attributes.
+ 	* config/arm/types.md (autodetect_type): Likewise.
+ 	* config/arm/marvell-f-iwmmxt.md: Removed.
+ 	* config/arm/t-arm: Remove marvell-f-iwmmxt.md
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.cc (arm_option_check_internal): Remove
+ 	IWMMXT check.
+ 	(arm_options_perform_arch_sanity_checks): Likewise.
+ 	(use_return_insn): Likewise.
+ 	(arm_init_cumulative_args): Likewise.
+ 	(arm_legitimate_index_p): Likewise.
+ 	(thumb2_legitimate_index_p): Likewise.
+ 	(arm_compute_save_core_reg_mask): Likewise.
+ 	(output_return_instruction): Likewise.
+ 	(arm_compute_frame_layout): Likewise.
+ 	(arm_save_coproc_regs): Likewise.
+ 	(arm_hard_regno_mode_ok): Likewise.
+ 	(arm_expand_epilogue_apcs_frame): Likewise.
+ 	(arm_expand_epilogue): Likewise.
+ 	(arm_vector_mode_supported_p): Likewise.
+ 	(arm_preferred_simd_mode): Likewise.
+ 	(arm_conditional_register_usage): Likewise.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config.gcc (arm, --with-abi): Remove iwmmxt abi option.
+ 	* config/arm/arm.opt (enum ARM_ABI_IWMMXT): Remove.
+ 	* config/arm/arm.h (TARGET_IWMMXT_ABI): Delete.
+ 	(enum arm_pcs): Remove ARM_PCS_AAPCS_IWMMXT.
+ 	(FUNCTION_ARG_REGNO_P): Remove IWMMXT ABI support.
+ 	(CUMULATIVE_ARGS): Remove iwmmxt_nregs.
+ 	* config/arm/arm.cc (arm_options_perform_arch_sanity_checks):
+ 	Remove IWMMXT ABI checks.
+ 	(arm_libcall_value_1): Likewise.
+ 	(arm_function_value_regno_p): Likewise.
+ 	(arm_apply_result_size): Remove adjustment for IWMMXT ABI.
+ 	(arm_function_arg): Remove IWMMXT ABI support.
+ 	(arm_arg_partial_bytes): Likewise.
+ 	(arm_function_arg_advance): Likewise.
+ 	(arm_init_cumulative_args): Don't initialize iwmmxt_nregs.
+ 	* doc/invoke.texi (arm -mabi): Remove mention of the iwmmxt
+ 	ABI option.
+ 	* config/arm/arm-opts.h (enum arm_abi_type): Remove ARM_ABI_IWMMXT.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.md(attr arch): Remove iwmmxt and iwmmxt2.
+ 	Remove checks based on TARGET_REALLY_IWMMXT2 from all split
+ 	patterns.
+ 	(arm_movdi): Likewise.
+ 	(*arm_movt): Likewise.
+ 	(arch_enabled): Remove test for iwmmxt2.
+ 	* config/arm/constraints.md (y, z): Remove register constraints.
+ 	(Uy): Remove memory constraint.
+ 	* config/arm/thumb2.md (thumb2_pop_single): Remove check for
+ 	IWMMXT.
+ 	* config/arm/vec-common.md (mov<mode>): Remove check for IWMMXT.
+ 	(mul<mode>3): Likewise.
+ 	(xor<mode>3): Likewise.
+ 	(<absneg_str><mode>2): Likewise.
+ 	(@movmisalign<mode>): Likewise.
+ 	(@mve_<mve_insn>q_<supf><mode>): Likewise.
+ 	(vashl<mode>3): Likewise.
+ 	(vashr<mode>3): Likewise.
+ 	(vlshr<mode>3): Likewise.
+ 	(uavg<mode>3_ceil): Likewise.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.md: Don't include iwmmxt.md.
+ 	* config/arm/t-arm (MD_INCLUDES): Remove iwmmxt*.md.
+ 	* config/arm/iwmmxt.md: Removed.
+ 	* config/arm/iwmmxt2.md: Removed.
+ 	* config/arm/unspecs.md: Remove comment referring to
+ 	iwmmxt2.md.
+ 	(enum unspec): Remove iWMMXt unspec values.
+ 	(enum unspecv): Likewise.
+ 	* config/arm/predicates.md (imm_or_reg_operand): Delete.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-builtins.cc (enum arm_builtins): Delete iWMMX
+ 	builtin values.
+ 	(bdesc_2arg): Likewise.
+ 	(bdesc_1arg): Likewise.
+ 	(arm_init_iwmmxt_builtins): Delete.
+ 	(arm_init_builtins): Don't call arm_init_iwmmxt_builtins.
+ 	(safe_vector_operand): Use __builtin_unreachable instead of emitting
+ 	an iwmmxt builtin.
+ 	(arm_general_expand_builtin): Remove iWMMX builtins support.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (arch iwmmxt): treat in the same
+ 	way as we would treat XScale.
+ 	(arch iwmmxt2): Likewise.
+ 	(cpu xscale): Add aliases for iwmmxt and iwmmxt2.
+ 	(cpu iwmmxt): Delete.
+ 	(cpu iwmmxt2): Delete.
+ 	* config/arm/arm-generic.md (load_ldsched_xscale): Remove references
+ 	to iwmmxt.
+ 	(load_ldsched): Likewise.
+ 	* config/arm/arm-tables.opt: Regenerated.
+ 	* config/arm/arm-tune.md: Regenerated.
+ 	* doc/sourcebuild.texi (arm_iwmmxt_ok): Delete.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Add	parentheis
+ 	and re-indent.
+ 	(SECONDARY_INPUT_RELOAD_CLASS): Likewise.
+ 
+ 2025-05-12  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/120228
+ 	* config/i386/i386-features.cc (ix86_place_single_vector_set):
+ 	Remove df_insn_rescan after emit_insn_*.
+ 	(remove_partial_avx_dependency): Likewise.
+ 	(replace_vector_const): Likewise.
+ 
+ 2025-05-11  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/i386/i386.cc (ix86_widen_mult_cost): Use sse_op to cost
+ 	SSE integer addition.
+ 	(ix86_multiplication_cost): Use COSTS_N_INSNS (...)/2 to cost sse
+ 	loads.
+ 	(ix86_shift_rotate_cost): Likewise.
+ 	(ix86_vector_costs::add_stmt_cost): Likewise.
+ 
+ 2025-05-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_register_move_cost):
+ 	Add appropriate move costs between AR_REGS and FP_REGS.
+ 
+ 2025-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120211
+ 	* tree-vect-stmts.cc (vect_stmt_relevant_p): Only add PHIs
+ 	from the loop header to LOOP_VINFO_EARLY_BREAKS_LIVE_IVS.
+ 
+ 2025-05-11  Jiawei  <jiawei@iscas.ac.cn>
+ 
+ 	* common/config/riscv/riscv-common.cc: New profile.
+ 
+ 2025-05-11  Jiawei  <jiawei@iscas.ac.cn>
+ 
+ 	* common/config/riscv/riscv-common.cc (struct riscv_profiles): New struct.
+ 	(riscv_subset_list::parse_profiles): New parser.
+ 	(riscv_subset_list::parse_base_ext): Ditto.
+ 	* config/riscv/riscv-subset.h: New def.
+ 	* doc/invoke.texi: New option descriptions.
+ 
  2025-05-10  H.J. Lu  <hjl.tools@gmail.com>
  
  	PR target/92080
diff -Nrcpad gcc-16-20250511/gcc/DATESTAMP gcc-16-20250518/gcc/DATESTAMP
*** gcc-16-20250511/gcc/DATESTAMP	Sun May 11 22:32:07 2025
--- gcc-16-20250518/gcc/DATESTAMP	Sun May 18 22:32:06 2025
***************
*** 1 ****
! 20250511
--- 1 ----
! 20250518
diff -Nrcpad gcc-16-20250511/gcc/Makefile.in gcc-16-20250518/gcc/Makefile.in
*** gcc-16-20250511/gcc/Makefile.in	Sun May 11 22:32:07 2025
--- gcc-16-20250518/gcc/Makefile.in	Sun May 18 22:32:06 2025
*************** TEXI_GCC_FILES = gcc.texi gcc-common.tex
*** 3703,3709 ****
  	 contribute.texi compat.texi funding.texi gnu.texi gpl_v3.texi	\
  	 fdl.texi contrib.texi cppenv.texi cppopts.texi avr-mmcu.texi	\
  	 implement-c.texi implement-cxx.texi gcov-tool.texi gcov-dump.texi \
! 	 lto-dump.texi
  
  # we explicitly use $(srcdir)/doc/tm.texi here to avoid confusion with
  # the generated tm.texi; the latter might have a more recent timestamp,
--- 3703,3709 ----
  	 contribute.texi compat.texi funding.texi gnu.texi gpl_v3.texi	\
  	 fdl.texi contrib.texi cppenv.texi cppopts.texi avr-mmcu.texi	\
  	 implement-c.texi implement-cxx.texi gcov-tool.texi gcov-dump.texi \
! 	 lto-dump.texi riscv-ext.texi
  
  # we explicitly use $(srcdir)/doc/tm.texi here to avoid confusion with
  # the generated tm.texi; the latter might have a more recent timestamp,
diff -Nrcpad gcc-16-20250511/gcc/ada/ChangeLog gcc-16-20250518/gcc/ada/ChangeLog
*** gcc-16-20250511/gcc/ada/ChangeLog	Sun May 11 22:32:07 2025
--- gcc-16-20250518/gcc/ada/ChangeLog	Sun May 18 22:32:06 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-05-13  Nicolas Boulenguez  <nicolas@debian.org>
+ 
+ 	PR ada/87778
+ 	* Make-generated.in: Remove -q gnatmake option.
+ 	* gcc-interface/Makefile.in: Likewise.
+ 
  2025-05-05  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/120104
diff -Nrcpad gcc-16-20250511/gcc/ada/Make-generated.in gcc-16-20250518/gcc/ada/Make-generated.in
*** gcc-16-20250511/gcc/ada/Make-generated.in	Sun May 11 22:32:07 2025
--- gcc-16-20250518/gcc/ada/Make-generated.in	Sun May 18 22:32:06 2025
*************** GEN_IL_FLAGS = -gnata -gnat2012 -gnatw.g
*** 18,24 ****
  ada/seinfo_tables.ads ada/seinfo_tables.adb ada/sinfo.h ada/einfo.h ada/nmake.ads ada/nmake.adb ada/seinfo.ads ada/sinfo-nodes.ads ada/sinfo-nodes.adb ada/einfo-entities.ads ada/einfo-entities.adb: ada/stamp-gen_il ; @true
  ada/stamp-gen_il: $(fsrcdir)/ada/gen_il*
  	$(MKDIR) ada/gen_il
! 	cd ada/gen_il; gnatmake -q -g $(GEN_IL_FLAGS) gen_il-main
  	# Ignore errors to work around finalization issues in older compilers
  	- cd ada/gen_il; ./gen_il-main
  	$(fsrcdir)/../move-if-change ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads
--- 18,24 ----
  ada/seinfo_tables.ads ada/seinfo_tables.adb ada/sinfo.h ada/einfo.h ada/nmake.ads ada/nmake.adb ada/seinfo.ads ada/sinfo-nodes.ads ada/sinfo-nodes.adb ada/einfo-entities.ads ada/einfo-entities.adb: ada/stamp-gen_il ; @true
  ada/stamp-gen_il: $(fsrcdir)/ada/gen_il*
  	$(MKDIR) ada/gen_il
! 	cd ada/gen_il; gnatmake -g $(GEN_IL_FLAGS) gen_il-main
  	# Ignore errors to work around finalization issues in older compilers
  	- cd ada/gen_il; ./gen_il-main
  	$(fsrcdir)/../move-if-change ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads
*************** ada/stamp-snames : ada/snames.ads-tmpl a
*** 46,52 ****
  	-$(MKDIR) ada/bldtools/snamest
  	$(RM) $(addprefix ada/bldtools/snamest/,$(notdir $^))
  	$(CP) $^ ada/bldtools/snamest
! 	cd ada/bldtools/snamest && gnatmake -q xsnamest && ./xsnamest
  	$(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.ns ada/snames.ads
  	$(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nb ada/snames.adb
  	$(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nh ada/snames.h
--- 46,52 ----
  	-$(MKDIR) ada/bldtools/snamest
  	$(RM) $(addprefix ada/bldtools/snamest/,$(notdir $^))
  	$(CP) $^ ada/bldtools/snamest
! 	cd ada/bldtools/snamest && gnatmake xsnamest && ./xsnamest
  	$(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.ns ada/snames.ads
  	$(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nb ada/snames.adb
  	$(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nh ada/snames.h
diff -Nrcpad gcc-16-20250511/gcc/ada/gcc-interface/Makefile.in gcc-16-20250518/gcc/ada/gcc-interface/Makefile.in
*** gcc-16-20250511/gcc/ada/gcc-interface/Makefile.in	Sun May 11 22:32:07 2025
--- gcc-16-20250518/gcc/ada/gcc-interface/Makefile.in	Sun May 18 22:32:06 2025
*************** OSCONS_EXTRACT=$(GCC_FOR_ADA_RTS) $(GNAT
*** 634,640 ****
  	-$(MKDIR) ./bldtools/oscons
  	$(RM) $(addprefix ./bldtools/oscons/,$(notdir $^))
  	$(CP) $^ ./bldtools/oscons
! 	(cd ./bldtools/oscons ; gnatmake -q xoscons)
  
  $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons
  	$(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s
--- 634,640 ----
  	-$(MKDIR) ./bldtools/oscons
  	$(RM) $(addprefix ./bldtools/oscons/,$(notdir $^))
  	$(CP) $^ ./bldtools/oscons
! 	(cd ./bldtools/oscons ; gnatmake xoscons)
  
  $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons
  	$(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s
diff -Nrcpad gcc-16-20250511/gcc/asan.cc gcc-16-20250518/gcc/asan.cc
*** gcc-16-20250511/gcc/asan.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/asan.cc	Sun May 18 22:32:07 2025
*************** asan_clear_shadow (rtx shadow_mem, HOST_
*** 1509,1516 ****
    gcc_assert ((len & 3) == 0);
    start_sequence ();
    clear_storage (shadow_mem, GEN_INT (len), BLOCK_OP_NORMAL);
!   insns = get_insns ();
!   end_sequence ();
    for (insn = insns; insn; insn = NEXT_INSN (insn))
      if (CALL_P (insn))
        break;
--- 1509,1515 ----
    gcc_assert ((len & 3) == 0);
    start_sequence ();
    clear_storage (shadow_mem, GEN_INT (len), BLOCK_OP_NORMAL);
!   insns = end_sequence ();
    for (insn = insns; insn; insn = NEXT_INSN (insn))
      if (CALL_P (insn))
        break;
*************** asan_emit_stack_protection (rtx base, rt
*** 2283,2290 ****
    if (lab)
      emit_label (lab);
  
!   insns = get_insns ();
!   end_sequence ();
    return insns;
  }
  
--- 2282,2288 ----
    if (lab)
      emit_label (lab);
  
!   insns = end_sequence ();
    return insns;
  }
  
*************** asan_emit_allocas_unpoison (rtx top, rtx
*** 2306,2314 ****
  		     top, ptr_mode, bot, ptr_mode);
  
    do_pending_stack_adjust ();
!   rtx_insn *insns = get_insns ();
!   end_sequence ();
!   return insns;
  }
  
  /* Return true if DECL, a global var, might be overridden and needs
--- 2304,2310 ----
  		     top, ptr_mode, bot, ptr_mode);
  
    do_pending_stack_adjust ();
!   return end_sequence ();
  }
  
  /* Return true if DECL, a global var, might be overridden and needs
*************** hwasan_frame_base ()
*** 4472,4479 ****
  	= force_reg (Pmode,
  		     targetm.memtag.insert_random_tag (virtual_stack_vars_rtx,
  						       NULL_RTX));
!       hwasan_frame_base_init_seq = get_insns ();
!       end_sequence ();
      }
  
    return hwasan_frame_base_ptr;
--- 4468,4474 ----
  	= force_reg (Pmode,
  		     targetm.memtag.insert_random_tag (virtual_stack_vars_rtx,
  						       NULL_RTX));
!       hwasan_frame_base_init_seq = end_sequence ();
      }
  
    return hwasan_frame_base_ptr;
*************** hwasan_emit_untag_frame (rtx dynamic, rt
*** 4741,4749 ****
  		     size_rtx, ptr_mode);
  
    do_pending_stack_adjust ();
!   rtx_insn *insns = get_insns ();
!   end_sequence ();
!   return insns;
  }
  
  /* Needs to be GTY(()), because cgraph_build_static_cdtor may
--- 4736,4742 ----
  		     size_rtx, ptr_mode);
  
    do_pending_stack_adjust ();
!   return end_sequence ();
  }
  
  /* Needs to be GTY(()), because cgraph_build_static_cdtor may
diff -Nrcpad gcc-16-20250511/gcc/auto-inc-dec.cc gcc-16-20250518/gcc/auto-inc-dec.cc
*** gcc-16-20250511/gcc/auto-inc-dec.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/auto-inc-dec.cc	Sun May 18 22:32:07 2025
*************** attempt_change (rtx new_addr, rtx inc_re
*** 493,500 ****
      {
        start_sequence ();
        emit_move_insn (inc_insn.reg_res, inc_insn.reg0);
!       mov_insn = get_insns ();
!       end_sequence ();
        new_cost += seq_cost (mov_insn, speed);
      }
  
--- 493,499 ----
      {
        start_sequence ();
        emit_move_insn (inc_insn.reg_res, inc_insn.reg0);
!       mov_insn = end_sequence ();
        new_cost += seq_cost (mov_insn, speed);
      }
  
diff -Nrcpad gcc-16-20250511/gcc/avoid-store-forwarding.cc gcc-16-20250518/gcc/avoid-store-forwarding.cc
*** gcc-16-20250511/gcc/avoid-store-forwarding.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/avoid-store-forwarding.cc	Sun May 18 22:32:07 2025
*************** process_store_forwarding (vec<store_fwd_
*** 351,358 ****
  
        start_sequence ();
        rtx_insn *insn = emit_insn (load_move);
!       rtx_insn *seq = get_insns ();
!       end_sequence ();
  
        if (recog_memoized (insn) < 0)
  	return false;
--- 351,357 ----
  
        start_sequence ();
        rtx_insn *insn = emit_insn (load_move);
!       rtx_insn *seq = end_sequence ();
  
        if (recog_memoized (insn) < 0)
  	return false;
diff -Nrcpad gcc-16-20250511/gcc/bb-reorder.cc gcc-16-20250518/gcc/bb-reorder.cc
*** gcc-16-20250511/gcc/bb-reorder.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/bb-reorder.cc	Sun May 18 22:32:07 2025
*************** fix_crossing_unconditional_branches (voi
*** 2287,2294 ****
  	      start_sequence ();
  	      emit_move_insn (new_reg, label_addr);
  	      emit_indirect_jump (new_reg);
! 	      indirect_jump_sequence = get_insns ();
! 	      end_sequence ();
  
  	      /* Make sure every instruction in the new jump sequence has
  		 its basic block set to be cur_bb.  */
--- 2287,2293 ----
  	      start_sequence ();
  	      emit_move_insn (new_reg, label_addr);
  	      emit_indirect_jump (new_reg);
! 	      indirect_jump_sequence = end_sequence ();
  
  	      /* Make sure every instruction in the new jump sequence has
  		 its basic block set to be cur_bb.  */
diff -Nrcpad gcc-16-20250511/gcc/builtins.cc gcc-16-20250518/gcc/builtins.cc
*** gcc-16-20250511/gcc/builtins.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/builtins.cc	Sun May 18 22:32:07 2025
*************** expand_builtin_apply_args (void)
*** 1640,1647 ****
  
      start_sequence ();
      temp = expand_builtin_apply_args_1 ();
!     rtx_insn *seq = get_insns ();
!     end_sequence ();
  
      apply_args_value = temp;
  
--- 1640,1646 ----
  
      start_sequence ();
      temp = expand_builtin_apply_args_1 ();
!     rtx_insn *seq = end_sequence ();
  
      apply_args_value = temp;
  
*************** expand_builtin_return (rtx result)
*** 1863,1870 ****
  
  	push_to_sequence (call_fusage);
  	emit_use (reg);
! 	call_fusage = get_insns ();
! 	end_sequence ();
  	size += GET_MODE_SIZE (mode);
        }
  
--- 1862,1868 ----
  
  	push_to_sequence (call_fusage);
  	emit_use (reg);
! 	call_fusage = end_sequence ();
  	size += GET_MODE_SIZE (mode);
        }
  
*************** expand_builtin_mathfn_ternary (tree exp,
*** 2373,2380 ****
      }
  
    /* Output the entire sequence.  */
!   insns = get_insns ();
!   end_sequence ();
    emit_insn (insns);
  
    return result;
--- 2371,2377 ----
      }
  
    /* Output the entire sequence.  */
!   insns = end_sequence ();
    emit_insn (insns);
  
    return result;
*************** expand_builtin_mathfn_3 (tree exp, rtx t
*** 2466,2473 ****
        if (result != 0)
  	{
  	  /* Output the entire sequence.  */
! 	  insns = get_insns ();
! 	  end_sequence ();
  	  emit_insn (insns);
  	  return result;
  	}
--- 2463,2469 ----
        if (result != 0)
  	{
  	  /* Output the entire sequence.  */
! 	  insns = end_sequence ();
  	  emit_insn (insns);
  	  return result;
  	}
*************** expand_builtin_int_roundingfn (tree exp,
*** 3164,3171 ****
    if (expand_sfix_optab (target, op0, builtin_optab))
      {
        /* Output the entire sequence.  */
!       insns = get_insns ();
!       end_sequence ();
        emit_insn (insns);
        return target;
      }
--- 3160,3166 ----
    if (expand_sfix_optab (target, op0, builtin_optab))
      {
        /* Output the entire sequence.  */
!       insns = end_sequence ();
        emit_insn (insns);
        return target;
      }
*************** expand_builtin_int_roundingfn_2 (tree ex
*** 3308,3315 ****
        if (expand_sfix_optab (result, op0, builtin_optab))
  	{
  	  /* Output the entire sequence.  */
! 	  insns = get_insns ();
! 	  end_sequence ();
  	  emit_insn (insns);
  	  return result;
  	}
--- 3303,3309 ----
        if (expand_sfix_optab (result, op0, builtin_optab))
  	{
  	  /* Output the entire sequence.  */
! 	  insns = end_sequence ();
  	  emit_insn (insns);
  	  return result;
  	}
*************** expand_builtin_strlen (tree exp, rtx tar
*** 3477,3484 ****
  #endif
        emit_move_insn (src_reg, pat);
      }
!   pat = get_insns ();
!   end_sequence ();
  
    if (before_strlen)
      emit_insn_after (pat, before_strlen);
--- 3471,3477 ----
  #endif
        emit_move_insn (src_reg, pat);
      }
!   pat = end_sequence ();
  
    if (before_strlen)
      emit_insn_after (pat, before_strlen);
*************** expand_builtin_saveregs (void)
*** 5183,5190 ****
    /* Do whatever the machine needs done in this case.  */
    val = targetm.calls.expand_builtin_saveregs ();
  
!   seq = get_insns ();
!   end_sequence ();
  
    saveregs_value = val;
  
--- 5176,5182 ----
    /* Do whatever the machine needs done in this case.  */
    val = targetm.calls.expand_builtin_saveregs ();
  
!   seq = end_sequence ();
  
    saveregs_value = val;
  
*************** inline_string_cmp (rtx target, tree var_
*** 7624,7631 ****
      }
  
    emit_label (ne_label);
!   rtx_insn *insns = get_insns ();
!   end_sequence ();
    emit_insn (insns);
  
    return result;
--- 7616,7622 ----
      }
  
    emit_label (ne_label);
!   rtx_insn *insns = end_sequence ();
    emit_insn (insns);
  
    return result;
diff -Nrcpad gcc-16-20250511/gcc/builtins.def gcc-16-20250518/gcc/builtins.def
*** gcc-16-20250511/gcc/builtins.def	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/builtins.def	Sun May 18 22:32:07 2025
*************** DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN
*** 844,849 ****
--- 844,881 ----
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANL, "ctanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CTAN, "ctan", CPROJ_TYPE, ATTR_MATHFN_FPROUNDING)
  #undef CPROJ_TYPE
+ #define TRIG_TYPE(F) BT_FN_##F##_##F
+ DEF_C23_BUILTIN (BUILT_IN_ACOSPI, "acospi", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_ACOSPIF, "acospif", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_ACOSPIL, "acospil", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ACOSPI, "acospi", TRIG_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_ASINPI, "asinpi", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_ASINPIF, "asinpif", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_ASINPIL, "asinpil", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ASINPI, "asinpi", TRIG_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_ATANPI, "atanpi", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_ATANPIF, "atanpif", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_ATANPIL, "atanpil", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ATANPI, "atanpi", TRIG_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_COSPI, "cospi", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_COSPIF, "cospif", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_COSPIL, "cospil", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_COSPI, "cospi", TRIG_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_SINPI, "sinpi", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_SINPIF, "sinpif", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_SINPIL, "sinpil", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_SINPI, "sinpi", TRIG_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_TANPI, "tanpi", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_TANPIF, "tanpif", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_C23_BUILTIN (BUILT_IN_TANPIL, "tanpil", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_TANPI, "tanpi", TRIG_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef TRIG_TYPE
+ #define TRIG2_TYPE(F) BT_FN_##F##_##F##_##F
+ DEF_C23_BUILTIN (BUILT_IN_ATAN2PI, "atan2pi", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+ DEF_C23_BUILTIN (BUILT_IN_ATAN2PIF, "atan2pif", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
+ DEF_C23_BUILTIN (BUILT_IN_ATAN2PIL, "atan2pil", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ATAN2PI, "atan2pi", TRIG2_TYPE, ATTR_CONST_NOTHROW_LEAF_LIST)
+ #undef TRIG2_TYPE
  
  /* Category: string/memory builtins.  */
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCMP, "bcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_IF123_LEAF)
diff -Nrcpad gcc-16-20250511/gcc/c-family/ChangeLog gcc-16-20250518/gcc/c-family/ChangeLog
*** gcc-16-20250511/gcc/c-family/ChangeLog	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/c-family/ChangeLog	Sun May 18 22:32:07 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* c-opts.cc (c_common_post_options): Set flag_coroutines.
+ 	(set_std_cxx20, set_std_cxx23, set_std_cxx26): Not here.
+ 
  2025-05-03  Jason Merrill  <jason@redhat.com>
  
  	* c-opts.cc (c_common_post_options): Let plain -Wabi warn
diff -Nrcpad gcc-16-20250511/gcc/c-family/c-opts.cc gcc-16-20250518/gcc/c-family/c-opts.cc
*** gcc-16-20250511/gcc/c-family/c-opts.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/c-family/c-opts.cc	Sun May 18 22:32:07 2025
*************** c_common_post_options (const char **pfil
*** 1215,1220 ****
--- 1215,1224 ----
    if (cxx_dialect >= cxx20)
      flag_concepts = 1;
  
+   /* Coroutines are also a C++20 feature.  */
+   SET_OPTION_IF_UNSET (&global_options, &global_options_set,
+ 		       flag_coroutines, cxx_dialect >= cxx20);
+ 
    /* Enable lifetime extension of range based for temporaries for C++23.  */
    SET_OPTION_IF_UNSET (&global_options, &global_options_set,
  		       flag_range_for_ext_temps, cxx_dialect >= cxx23);
*************** set_std_cxx20 (int iso)
*** 2009,2016 ****
    flag_isoc94 = 1;
    flag_isoc99 = 1;
    flag_isoc11 = 1;
-   /* C++20 includes coroutines. */
-   flag_coroutines = true;
    cxx_dialect = cxx20;
    lang_hooks.name = "GNU C++20";
  }
--- 2013,2018 ----
*************** set_std_cxx23 (int iso)
*** 2027,2034 ****
    flag_isoc94 = 1;
    flag_isoc99 = 1;
    flag_isoc11 = 1;
-   /* C++23 includes coroutines.  */
-   flag_coroutines = true;
    cxx_dialect = cxx23;
    lang_hooks.name = "GNU C++23";
  }
--- 2029,2034 ----
*************** set_std_cxx26 (int iso)
*** 2045,2052 ****
    flag_isoc94 = 1;
    flag_isoc99 = 1;
    flag_isoc11 = 1;
-   /* C++26 includes coroutines.  */
-   flag_coroutines = true;
    cxx_dialect = cxx26;
    lang_hooks.name = "GNU C++26";
  }
--- 2045,2050 ----
diff -Nrcpad gcc-16-20250511/gcc/calls.cc gcc-16-20250518/gcc/calls.cc
*** gcc-16-20250511/gcc/calls.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/calls.cc	Sun May 18 22:32:07 2025
*************** expand_call (tree exp, rtx target, int i
*** 3790,3797 ****
  	  add_reg_note (last, REG_NOALIAS, temp);
  
  	  /* Write out the sequence.  */
! 	  insns = get_insns ();
! 	  end_sequence ();
  	  emit_insn (insns);
  	  valreg = temp;
  	}
--- 3790,3796 ----
  	  add_reg_note (last, REG_NOALIAS, temp);
  
  	  /* Write out the sequence.  */
! 	  insns = end_sequence ();
  	  emit_insn (insns);
  	  valreg = temp;
  	}
*************** expand_call (tree exp, rtx target, int i
*** 4007,4014 ****
  
        targetm.calls.end_call_args (args_so_far);
  
!       insns = get_insns ();
!       end_sequence ();
  
        if (pass == 0)
  	{
--- 4006,4012 ----
  
        targetm.calls.end_call_args (args_so_far);
  
!       insns = end_sequence ();
  
        if (pass == 0)
  	{
diff -Nrcpad gcc-16-20250511/gcc/cfgexpand.cc gcc-16-20250518/gcc/cfgexpand.cc
*** gcc-16-20250511/gcc/cfgexpand.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cfgexpand.cc	Sun May 18 22:32:07 2025
*************** vars_ssa_cache::operator() (tree name)
*** 766,772 ****
  
        /* If the cache exists for the use, don't try to recreate it. */
        if (exists (use))
! 	continue;
  
        /* Create the cache bitmap for the use and also
  	 so we don't go into an infinite loop for some phi nodes with loops.  */
--- 766,777 ----
  
        /* If the cache exists for the use, don't try to recreate it. */
        if (exists (use))
! 	{
! 	  /* Update the cache here, this can reduce the number of
! 	     times through the update loop below.  */
! 	  update (old_name, use);
! 	  continue;
! 	}
  
        /* Create the cache bitmap for the use and also
  	 so we don't go into an infinite loop for some phi nodes with loops.  */
*************** vars_ssa_cache::operator() (tree name)
*** 804,812 ****
    bool changed;
    do {
      changed = false;
!     for (auto &e : update_cache_list)
        {
! 	if (update (e.second, e.first))
  	  changed = true;
        }
    } while (changed);
--- 809,819 ----
    bool changed;
    do {
      changed = false;
!     unsigned int i;
!     std::pair<tree,tree> *e;
!     FOR_EACH_VEC_ELT_REVERSE (update_cache_list, i, e)
        {
! 	if (update (e->second, e->first))
  	  changed = true;
        }
    } while (changed);
*************** expand_asm_stmt (gasm *stmt)
*** 3969,3976 ****
  		  start_sequence ();
  		  duplicate_insn_chain (after_rtl_seq, after_rtl_end,
  					NULL, NULL);
! 		  copy = get_insns ();
! 		  end_sequence ();
  		}
  	      prepend_insn_to_edge (copy, e);
  	    }
--- 3976,3982 ----
  		  start_sequence ();
  		  duplicate_insn_chain (after_rtl_seq, after_rtl_end,
  					NULL, NULL);
! 		  copy = end_sequence ();
  		}
  	      prepend_insn_to_edge (copy, e);
  	    }
*************** pass_expand::execute (function *fun)
*** 7017,7024 ****
  
    var_ret_seq = expand_used_vars (forced_stack_vars);
  
!   var_seq = get_insns ();
!   end_sequence ();
    timevar_pop (TV_VAR_EXPAND);
  
    /* Honor stack protection warnings.  */
--- 7023,7029 ----
  
    var_ret_seq = expand_used_vars (forced_stack_vars);
  
!   var_seq = end_sequence ();
    timevar_pop (TV_VAR_EXPAND);
  
    /* Honor stack protection warnings.  */
diff -Nrcpad gcc-16-20250511/gcc/cfgloopanal.cc gcc-16-20250518/gcc/cfgloopanal.cc
*** gcc-16-20250511/gcc/cfgloopanal.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cfgloopanal.cc	Sun May 18 22:32:07 2025
*************** init_set_costs (void)
*** 471,485 ****
  
        start_sequence ();
        emit_move_insn (reg1, reg2);
!       seq = get_insns ();
!       end_sequence ();
        target_reg_cost [speed] = seq_cost (seq, speed);
  
        start_sequence ();
        emit_move_insn (mem, reg1);
        emit_move_insn (reg2, mem);
!       seq = get_insns ();
!       end_sequence ();
        target_spill_cost [speed] = seq_cost (seq, speed);
      }
    default_rtl_profile ();
--- 471,483 ----
  
        start_sequence ();
        emit_move_insn (reg1, reg2);
!       seq = end_sequence ();
        target_reg_cost [speed] = seq_cost (seq, speed);
  
        start_sequence ();
        emit_move_insn (mem, reg1);
        emit_move_insn (reg2, mem);
!       seq = end_sequence ();
        target_spill_cost [speed] = seq_cost (seq, speed);
      }
    default_rtl_profile ();
diff -Nrcpad gcc-16-20250511/gcc/cfgrtl.cc gcc-16-20250518/gcc/cfgrtl.cc
*** gcc-16-20250511/gcc/cfgrtl.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cfgrtl.cc	Sun May 18 22:32:07 2025
*************** insert_insn_on_edge (rtx pattern, edge e
*** 1982,1989 ****
  
    emit_insn (pattern);
  
!   e->insns.r = get_insns ();
!   end_sequence ();
  }
  
  /* Like insert_insn_on_edge, but if there are already queued instructions
--- 1982,1988 ----
  
    emit_insn (pattern);
  
!   e->insns.r = end_sequence ();
  }
  
  /* Like insert_insn_on_edge, but if there are already queued instructions
*************** prepend_insn_to_edge (rtx pattern, edge
*** 2001,2008 ****
    emit_insn (pattern);
    emit_insn (e->insns.r);
  
!   e->insns.r = get_insns ();
!   end_sequence ();
  }
  
  /* Update the CFG for the instructions queued on edge E.  */
--- 2000,2006 ----
    emit_insn (pattern);
    emit_insn (e->insns.r);
  
!   e->insns.r = end_sequence ();
  }
  
  /* Update the CFG for the instructions queued on edge E.  */
*************** rtl_lv_add_condition_to_bb (basic_block
*** 5278,5285 ****
    jump = get_last_insn ();
    JUMP_LABEL (jump) = label;
    LABEL_NUSES (label)++;
!   seq = get_insns ();
!   end_sequence ();
  
    /* Add the new cond, in the new head.  */
    emit_insn_after (seq, BB_END (cond_bb));
--- 5276,5282 ----
    jump = get_last_insn ();
    JUMP_LABEL (jump) = label;
    LABEL_NUSES (label)++;
!   seq = end_sequence ();
  
    /* Add the new cond, in the new head.  */
    emit_insn_after (seq, BB_END (cond_bb));
diff -Nrcpad gcc-16-20250511/gcc/cgraph.cc gcc-16-20250518/gcc/cgraph.cc
*** gcc-16-20250511/gcc/cgraph.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cgraph.cc	Sun May 18 22:32:07 2025
*************** cgraph_node::remove (void)
*** 1879,1885 ****
    clone_info *info, saved_info;
    if (symtab->ipa_clones_dump_file && symtab->cloned_nodes.contains (this))
      fprintf (symtab->ipa_clones_dump_file,
! 	     "Callgraph removal;%s;%d;%s;%d;%d\n", asm_name (), order,
  	     DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl),
  	     DECL_SOURCE_COLUMN (decl));
  
--- 1879,1885 ----
    clone_info *info, saved_info;
    if (symtab->ipa_clones_dump_file && symtab->cloned_nodes.contains (this))
      fprintf (symtab->ipa_clones_dump_file,
! 	     "Callgraph removal;%s;%d;%s;%d;%d\n", asm_name (), get_uid (),
  	     DECL_SOURCE_FILE (decl), DECL_SOURCE_LINE (decl),
  	     DECL_SOURCE_COLUMN (decl));
  
diff -Nrcpad gcc-16-20250511/gcc/cgraph.h gcc-16-20250518/gcc/cgraph.h
*** gcc-16-20250511/gcc/cgraph.h	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cgraph.h	Sun May 18 22:32:07 2025
*************** public:
*** 493,499 ****
    static inline void checking_verify_symtab_nodes (void);
  
    /* Get unique identifier of the node.  */
!   inline int get_uid ()
    {
      return m_uid;
    }
--- 493,499 ----
    static inline void checking_verify_symtab_nodes (void);
  
    /* Get unique identifier of the node.  */
!   inline int get_uid () const
    {
      return m_uid;
    }
diff -Nrcpad gcc-16-20250511/gcc/cgraphclones.cc gcc-16-20250518/gcc/cgraphclones.cc
*** gcc-16-20250511/gcc/cgraphclones.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cgraphclones.cc	Sun May 18 22:32:07 2025
*************** dump_callgraph_transformation (const cgr
*** 324,334 ****
      {
        fprintf (symtab->ipa_clones_dump_file,
  	       "Callgraph clone;%s;%d;%s;%d;%d;%s;%d;%s;%d;%d;%s\n",
! 	       original->asm_name (), original->order,
  	       DECL_SOURCE_FILE (original->decl),
  	       DECL_SOURCE_LINE (original->decl),
  	       DECL_SOURCE_COLUMN (original->decl), clone->asm_name (),
! 	       clone->order, DECL_SOURCE_FILE (clone->decl),
  	       DECL_SOURCE_LINE (clone->decl), DECL_SOURCE_COLUMN (clone->decl),
  	       suffix);
  
--- 324,334 ----
      {
        fprintf (symtab->ipa_clones_dump_file,
  	       "Callgraph clone;%s;%d;%s;%d;%d;%s;%d;%s;%d;%d;%s\n",
! 	       original->asm_name (), original->get_uid (),
  	       DECL_SOURCE_FILE (original->decl),
  	       DECL_SOURCE_LINE (original->decl),
  	       DECL_SOURCE_COLUMN (original->decl), clone->asm_name (),
! 	       clone->get_uid (), DECL_SOURCE_FILE (clone->decl),
  	       DECL_SOURCE_LINE (clone->decl), DECL_SOURCE_COLUMN (clone->decl),
  	       suffix);
  
diff -Nrcpad gcc-16-20250511/gcc/cobol/ChangeLog gcc-16-20250518/gcc/cobol/ChangeLog
*** gcc-16-20250511/gcc/cobol/ChangeLog	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/ChangeLog	Sun May 18 22:32:07 2025
***************
*** 1,3 ****
--- 1,75 ----
+ 2025-05-16  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol1.cc (cobol_langhook_handle_option): Eliminate OPT_M.
+ 	* except.cc (cbl_enabled_exception_t::dump): Formatting.
+ 	(symbol_declaratives_add): Remove.
+ 	(declarative_runtime_match): Change to no-blob processing.
+ 	* exceptg.h (declarative_runtime_match): Change declaration.
+ 	(symbol_declaratives_add): Remove declaration.
+ 	* gcobc: Dialect handling.
+ 	* genapi.cc (parser_compile_ecs): Formatting; add SHOW_IF_PARSE.
+ 	(parser_compile_dcls): Likewise.
+ 	(parser_statement_begin): Avoid unnecessary store_location_stuff() call.
+ 	(gg_get_depending_on_value): Streamline get_depending_on_value_from_odo().
+ 	(depending_on_value): Likewise.
+ 	(parser_display_field): Formatting.
+ 	(parser_display): Handle case ENV_NAME_e.
+ 	(parser_file_open): Avoid unnecessary store_location_stuff.
+ 	(parser_file_close): Likewise.
+ 	(parser_file_read): Likewise.
+ 	(parser_file_write): Likewise.
+ 	(parser_file_delete): Likewise.
+ 	(parser_file_rewrite): Likewise.
+ 	(parser_file_start): Likewise.
+ 	(parser_intrinsic_subst): Streamline get_depending_on_value_from_odo().
+ 	(parser_intrinsic_call_1): Likewise.
+ 	(parser_lsearch_start): Likewise.
+ 	(parser_bsearch_start): Likewise.
+ 	(parser_sort): Likewise.
+ 	(store_location_stuff): Avoid unnecessary assignments.
+ 	(parser_pop_exception): Formatting.
+ 	* genmath.cc (parser_add): Avoid var_decl_default_compute_error assignment
+ 	when doing fast_add().
+ 	(parser_subtract): Likewise.
+ 	* genutil.cc (REFER): Macro for analyzing code generation.
+ 	(get_integer_value): Use data_decl_node for integer value from FldLiteralN.
+ 	(get_data_offset): Streamline exception code processing.
+ 	(get_and_check_refstart_and_reflen): Likewise.
+ 	(get_depending_on_value_from_odo): Likewise.
+ 	(get_depending_on_value): Likewise.
+ 	(refer_is_clean): Formatting.
+ 	(refer_refmod_length): Streamline exception code processing.
+ 	(refer_fill_depends): Likewise.
+ 	(refer_offset): Likewise.
+ 	(refer_size_dest): Likewise.
+ 	(refer_size_source): Likewise.
+ 	* genutil.h (get_depending_on_value_from_odo): Likewise.
+ 	* lang-specs.h: Options definition.
+ 	* lang.opt: -M as in c.opt.
+ 	* lexio.h: Formatting.
+ 	* parse.y: Expand -dialect suggestions; SECTION SEGMENT messages.
+ 	* parse_ante.h (declarative_runtime_match): Dialect handling.
+ 	(labels_dump): Likewise.
+ 	(class current_tokens_t): Likewise.
+ 	(class prog_descr_t): Make program_index size_t to prevent padding bytes.
+ 	* scan.l: POP_FILE directive.
+ 	* scan_ante.h (class enter_leave_t): Better handle line number when
+ 	processing COPY statements.
+ 	* symbols.cc (symbol_elem_cmp): Eliminate SymFunction.
+ 	(symbols_dump): Likewise.
+ 	(symbol_label_section_exists): Likewise.
+ 	* symbols.h (NAME_MAX): Eliminate.  (Was part of SymFunction).
+ 	(dialect_is): Improve dialect handling.
+ 	(dialect_gcc): Likewise.
+ 	(dialect_ibm): Likewise.
+ 	(dialect_gnu): Likewise.
+ 	(enum symbol_type_t): Eliminate SymFunction.
+ 	* util.cc (symbol_type_str): Likewise.
+ 	(class unique_stack): Option -M handling.
+ 	(cobol_set_pp_option): Likewise.
+ 	(parse_file): Likewise.
+ 	* util.h (cobol_set_pp_option): Likewise.
+ 
  2025-05-10  Robert Dubner  <rdubner@symas.com>
  
  	PR cobol/119337
diff -Nrcpad gcc-16-20250511/gcc/cobol/cobol1.cc gcc-16-20250518/gcc/cobol/cobol1.cc
*** gcc-16-20250511/gcc/cobol/cobol1.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/cobol1.cc	Sun May 18 22:32:07 2025
*************** along with GCC; see the file COPYING3.
*** 20,34 ****
  
  
  #include "cobol-system.h"
! #include "coretypes.h"
! #include "tree.h"
! #include "diagnostic.h"
! #include "opts.h"
! #include "debug.h"
! #include "langhooks.h"
! #include "langhooks-def.h"
! #include "target.h"
! #include "stringpool.h"
  #include "../../libgcobol/ec.h"
  #include "../../libgcobol/common-defs.h"
  #include "util.h"
--- 20,34 ----
  
  
  #include "cobol-system.h"
! #include <coretypes.h>
! #include <tree.h>
! #include <diagnostic.h>
! #include <opts.h>
! #include <debug.h>
! #include <langhooks.h>
! #include <langhooks-def.h>
! #include <target.h>
! #include <stringpool.h>
  #include "../../libgcobol/ec.h"
  #include "../../libgcobol/common-defs.h"
  #include "util.h"
*************** along with GCC; see the file COPYING3.
*** 39,45 ****
  #include "genapi.h"
  #include "../../libgcobol/exceptl.h"
  #include "exceptg.h"
- #include "util.h"
  #include "gengen.h"   // This has some GTY(()) markers
  #include "structs.h"  // This has some GTY(()) markers
  
--- 39,44 ----
*************** cobol_langhook_handle_option (size_t sco
*** 357,362 ****
--- 356,365 ----
              copybook_extension_add(cobol_copyext);
              return true;
  
+         case OPT_M:
+ 	    cobol_set_pp_option('M');
+             return true;
+ 
          case OPT_fstatic_call:
              use_static_call( arg? true : false );
              return true;
diff -Nrcpad gcc-16-20250511/gcc/cobol/except.cc gcc-16-20250518/gcc/cobol/except.cc
*** gcc-16-20250511/gcc/cobol/except.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/except.cc	Sun May 18 22:32:07 2025
*************** ec_level( ec_type_t ec ) {
*** 78,87 ****
  void
  cbl_enabled_exception_t::dump( int i ) const {
    cbl_message(2, "cbl_enabled_exception_t: %2d  {%s, %s, %s, %zu}",
! 	      i,
! 	      location? "location" : "    none",
! 	      ec_type_str(ec),
! 	      file );
  }
  
  cbl_enabled_exceptions_t enabled_exceptions;
--- 78,87 ----
  void
  cbl_enabled_exception_t::dump( int i ) const {
    cbl_message(2, "cbl_enabled_exception_t: %2d  {%s, %s, %s, %zu}",
!               i,
!               location? "location" : "    none",
!               ec_type_str(ec),
!               file );
  }
  
  cbl_enabled_exceptions_t enabled_exceptions;
*************** sort_supers_last( const cbl_declarative_
*** 263,328 ****
  }
  
  cbl_field_t * new_temporary_decl();
- 
- /*
-  * For a program, create a "DECLARATIVES" entry in the symbol table,
-  * representing eligible declarative sections in priorty order:
-  * in-program first, followed by any global declaratives in parent
-  * programs.  These decribe the USE criteria declared for each
-  * declarative section.
-  *
-  * The field's initial value is actually an array of
-  * cbl_declarartive_t, in which the first element is unused, except
-  * that array[0].section represents the number of elements, starting
-  * at array[1].
-  *
-  * The returned value is the declarative's symbol index.  It is passed
-  * to match_exception, which scans it for a declarative whose criteria
-  * match the raised exception.  That function returns the
-  * cbl_declarative_t::section, which the program then uses to PERFORM
-  * that section.
-  */
- size_t
- symbol_declaratives_add( size_t program,
-                          const std::list<cbl_declarative_t>& dcls )
- {
-   auto n = dcls.size();
-   if( n == 0 ) return 0;
- 
-   auto blob = new cbl_declarative_t[ 1 + n ];
- 
-   auto pend = std::copy_if( dcls.begin(), dcls.end(), blob + 1,
-                             choose_declarative(program) );
- 
-   std::sort( blob + 1, pend, sort_supers_last );
- 
-   // Overload blob[0].section to be the count.
-   blob[0].section = (pend - blob) - 1;
- 
-   size_t len = reinterpret_cast<char*>(pend)
-              - reinterpret_cast<char*>(blob);
-   assert(len == (blob[0].section + 1) * sizeof(blob[0]));
- 
-   // Construct a "blob" in the symbol table.
-   static int blob_count = 1;
-   char achBlob[32];
-   sprintf(achBlob, "_DECLARATIVE_BLOB%d_", blob_count++);
- 
-   cbl_field_data_t data = {};
-   data.memsize = capacity_cast(len);
-   data.capacity = capacity_cast(len);
-   data.initial = reinterpret_cast<char*>(blob);
-   data.picture = reinterpret_cast<char*>(blob);
-   cbl_field_t field = { 0, FldBlob, FldInvalid, constant_e,
-                         0, 0, 0, cbl_occurs_t(), 0, "",
-                         0, {}, data, NULL };
-   strcpy(field.name, achBlob);
- 
-   auto e = symbol_field_add(program, &field);
-   parser_symbol_add(cbl_field_of(e));
-   return symbol_index(e);
- }
- 
  /*
   * Generate the code to evaluate declaratives.  This is the "secret
   * section" right after END DECLARATIVES.  Its name is
--- 263,268 ----
*************** size_t current_file_index();
*** 345,381 ****
  file_status_t current_file_handled_status();
  
  void
! declarative_runtime_match( cbl_field_t *declaratives, cbl_label_t *lave ) {
    if( getenv("GCOBOL_SHOW") )
      {
      fprintf(stderr, "( %d ) %s: \n", cobol_location().first_line, __func__);
      }
    if( getenv("GCOBOL_TRACE") )
      {
!     gg_printf(">>>>>>( %d )(%s) declaratives:%s lave:%s\n",
                build_int_cst_type(INT, cobol_location().first_line),
                gg_string_literal(__func__),
-               gg_string_literal(declaratives->name),
                gg_string_literal(lave->name),
                NULL_TREE);
      }
    static auto yes = new_temporary(FldConditional);
!   static auto psection = new_temporary(FldNumericBin5);
  
    IF( var_decl_exception_code, ne_op, integer_zero_node ) {
!     // Send blob, get declarative section index.
!     auto index = new_temporary(FldNumericBin5);
      parser_match_exception(index);
-     auto p = declaratives->data.initial;
-     const auto dcls = reinterpret_cast<const cbl_declarative_t *>(p);
-     size_t ndcl = dcls[0].section; // overloaded
  
      // Compare returned index to each section index.
!     for( auto p = dcls + 1; p < dcls + 1 + ndcl; p++ ) {
!       parser_set_numeric( psection, p->section );
!       parser_relop( yes, index, eq_op, psection );
        parser_if( yes );
!       auto section = cbl_label_of(symbol_at(p->section));
        parser_push_exception();
        parser_perform(section);
        parser_pop_exception();
--- 285,326 ----
  file_status_t current_file_handled_status();
  
  void
! declarative_runtime_match( const std::list<cbl_declarative_t>& declaratives,
! 			   cbl_label_t *lave )
! {
    if( getenv("GCOBOL_SHOW") )
      {
      fprintf(stderr, "( %d ) %s: \n", cobol_location().first_line, __func__);
      }
    if( getenv("GCOBOL_TRACE") )
      {
!     gg_printf(">>>>>>( %d )(%s) declaratives: lave:%s\n",
                build_int_cst_type(INT, cobol_location().first_line),
                gg_string_literal(__func__),
                gg_string_literal(lave->name),
                NULL_TREE);
      }
    static auto yes = new_temporary(FldConditional);
!   static auto isection = new_temporary(FldNumericBin5);
!   static auto index = new_temporary(FldNumericBin5);
  
+   /*
+    * Generate a sequence of COBOL IF statements to match the Declarative's
+    * symbol table index to its performable section.  The entire sequence is
+    * guarded by a runtime IF that evaluates to TRUE only if the "current EC" is
+    * nonzero.  This way, when _DECLARATIVES_EVAL is performed, it does nothing
+    * if no EC was raised.
+    */
    IF( var_decl_exception_code, ne_op, integer_zero_node ) {
!     // Get declarative section index matching any raised EC.
      parser_match_exception(index);
  
      // Compare returned index to each section index.
!     for( const auto& dcl : declaratives ) {
!       parser_set_numeric( isection, dcl.section );
!       parser_relop( yes, index, eq_op, isection );
        parser_if( yes );
!       auto section = cbl_label_of(symbol_at(dcl.section));
        parser_push_exception();
        parser_perform(section);
        parser_pop_exception();
*************** declarative_runtime_match( cbl_field_t *
*** 385,401 ****
      }
    }
    ELSE {
!     if( getenv("TRACE1") )
        {
! 	gg_printf(">>>>>>( %d )(%s) __gg__exception_code is zero\n",
! 		  build_int_cst_type(INT, cobol_location().first_line),
! 		  gg_string_literal(__func__),
! 		  NULL_TREE);
        }
    }
    ENDIF
- 
-   parser_label_label(lave);
  }
  
  ec_type_t
--- 330,344 ----
      }
    }
    ELSE {
!     if( getenv("GCOBOL_TRACE") )
        {
!         gg_printf(">>>>>>( %d )(%s) __gg__exception_code is zero\n",
!                   build_int_cst_type(INT, cobol_location().first_line),
!                   gg_string_literal(__func__),
!                   NULL_TREE);
        }
    }
    ENDIF
  }
  
  ec_type_t
diff -Nrcpad gcc-16-20250511/gcc/cobol/exceptg.h gcc-16-20250518/gcc/cobol/exceptg.h
*** gcc-16-20250511/gcc/cobol/exceptg.h	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/exceptg.h	Sun May 18 22:32:07 2025
***************
*** 36,43 ****
  extern const char * ec_type_str( ec_type_t type );
  extern ec_disposition_t ec_type_disposition( ec_type_t type );
  
! extern void declarative_runtime_match(cbl_field_t *declaratives,
!                                       cbl_label_t *lave );
  
  static inline ec_disposition_t
  ec_implemented( ec_disposition_t disposition ) {
--- 36,43 ----
  extern const char * ec_type_str( ec_type_t type );
  extern ec_disposition_t ec_type_disposition( ec_type_t type );
  
! extern void declarative_runtime_match( const std::list<cbl_declarative_t>& declaratives,
! 				       cbl_label_t *lave );
  
  static inline ec_disposition_t
  ec_implemented( ec_disposition_t disposition ) {
*************** class exception_turn_t {
*** 96,104 ****
  
  };
  
- size_t symbol_declaratives_add( size_t program,
-                                 const std::list<cbl_declarative_t>& dcls );
- 
  #endif
  
  
--- 96,101 ----
diff -Nrcpad gcc-16-20250511/gcc/cobol/gcobc gcc-16-20250518/gcc/cobol/gcobc
*** gcc-16-20250511/gcc/cobol/gcobc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/gcobc	Sun May 18 22:32:07 2025
*************** fi
*** 73,79 ****
  
  exit_status=0
  skip_arg=
! opts="$copydir ${dialect:--dialect mf} $includes"
  mode=-shared
  
  incomparable="has no comparable gcobol option"
--- 73,79 ----
  
  exit_status=0
  skip_arg=
! opts="-dialect gnu $copydir ${dialect:--dialect mf} $includes"
  mode=-shared
  
  incomparable="has no comparable gcobol option"
diff -Nrcpad gcc-16-20250511/gcc/cobol/genapi.cc gcc-16-20250518/gcc/cobol/genapi.cc
*** gcc-16-20250511/gcc/cobol/genapi.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/genapi.cc	Sun May 18 22:32:07 2025
*************** bool bSHOW_PARSE = getenv("GCOBOL_SHOW")
*** 80,85 ****
--- 80,87 ----
  bool show_parse_sol = true;
  int  show_parse_indent = 0;
  
+ static bool sv_is_i_o = false;
+ 
  #define DEFAULT_LINE_NUMBER 2
  
  #ifdef LINE_TICK
*************** array_of_long_long(const char *name, con
*** 933,940 ****
   * Performs the matched declarative, and execution continues with the next
   * statement.
   */
! tree parser_compile_ecs( const std::vector<uint64_t>& ecs )
    {
    char ach[32];
    static int counter = 1;
    sprintf(ach, "_ecs_table_%d", counter++);
--- 935,954 ----
   * Performs the matched declarative, and execution continues with the next
   * statement.
   */
! tree
! parser_compile_ecs( const std::vector<uint64_t>& ecs )
    {
+   if( ecs.empty() )
+     {
+     SHOW_IF_PARSE(nullptr)
+       {
+       SHOW_PARSE_HEADER
+       SHOW_PARSE_TEXT("ecs is empty");
+       SHOW_PARSE_END
+       }
+     return NULL_TREE;
+     }
+ 
    char ach[32];
    static int counter = 1;
    sprintf(ach, "_ecs_table_%d", counter++);
*************** tree parser_compile_ecs( const std::vect
*** 968,979 ****
   * invoked, and thus the set of active Declaratives.  By passing them for each
   * statement, code generation is relieved of referring to global variable.
   */
! tree parser_compile_dcls( const std::vector<uint64_t>& dcls )
    {
    char ach[32];
    static int counter = 1;
    sprintf(ach, "_dcls_table_%d", counter++);
- 
    tree retval =  array_of_long_long(ach, dcls);
    SHOW_IF_PARSE(nullptr)
      {
--- 982,1004 ----
   * invoked, and thus the set of active Declaratives.  By passing them for each
   * statement, code generation is relieved of referring to global variable.
   */
! tree
! parser_compile_dcls( const std::vector<uint64_t>& dcls )
    {
+   if( dcls.empty() )
+     {
+     SHOW_IF_PARSE(nullptr)
+       {
+       SHOW_PARSE_HEADER
+       SHOW_PARSE_TEXT("dcls is empty");
+       SHOW_PARSE_END
+       }
+     return NULL_TREE;
+     }
+ 
    char ach[32];
    static int counter = 1;
    sprintf(ach, "_dcls_table_%d", counter++);
    tree retval =  array_of_long_long(ach, dcls);
    SHOW_IF_PARSE(nullptr)
      {
*************** tree parser_compile_dcls( const std::vec
*** 983,989 ****
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_END
      }
- 
    TRACE1
      {
      TRACE1_HEADER
--- 1008,1013 ----
*************** parser_statement_begin( const cbl_name_t
*** 1036,1051 ****
      gg_assign(var_decl_nop, build_int_cst_type(INT, 106));
      }
  
!   store_location_stuff(statement_name);
    gg_set_current_line_number(CURRENT_LINE_NUMBER);
  
!   gg_call(VOID,
!           "__gg__set_exception_environment",
!           ecs  ? gg_get_address_of(ecs) : null_pointer_node,
!           dcls ? gg_get_address_of(dcls) : null_pointer_node,
!           NULL_TREE);
!   
    gcc_assert( gg_trans_unit.function_stack.size() );
    }
  
  static void
--- 1060,1087 ----
      gg_assign(var_decl_nop, build_int_cst_type(INT, 106));
      }
  
!   // At this point, if any exception is enabled, we store the location stuff.
!   // Each file I-O routine calls store_location_stuff explicitly, because
!   // those exceptions can't be defeated.
! 
!   if( enabled_exceptions.size() )
!     {
!     store_location_stuff(statement_name);
!     }
! 
    gg_set_current_line_number(CURRENT_LINE_NUMBER);
  
!   // if( ecs || dcls || sv_is_i_o )
!     {
!     gg_call(VOID,
!             "__gg__set_exception_environment",
!             ecs  ? gg_get_address_of(ecs) : null_pointer_node,
!             dcls ? gg_get_address_of(dcls) : null_pointer_node,
!             NULL_TREE);
!     }
! 
    gcc_assert( gg_trans_unit.function_stack.size() );
+   sv_is_i_o = false;
    }
  
  static void
*************** gg_default_qualification(struct cbl_fiel
*** 1516,1557 ****
  //  gg_attribute_bit_clear(var, refmod_e);
    }
  
! static void
! gg_get_depending_on_value(tree depending_on, cbl_field_t *current_sizer)
    {
    // We have to deal with the possibility of a DEPENDING_ON variable,
    // and we have to apply array bounds whether or not there is a DEPENDING_ON
    // variable:
  
!   tree occurs_lower = gg_define_variable(LONG, "_lower");
!   tree occurs_upper = gg_define_variable(LONG, "_upper");
! 
!   gg_assign(occurs_lower, build_int_cst_type(LONG, current_sizer->occurs.bounds.lower));
!   gg_assign(occurs_upper, build_int_cst_type(LONG, current_sizer->occurs.bounds.upper));
  
    if( current_sizer->occurs.depending_on )
      {
!     // Get the current value of the depending_on data-item:
!     tree value = gg_define_int128();
!     get_binary_value( value,
!                       NULL,
!                       cbl_field_of(symbol_at(current_sizer->occurs.depending_on)),
!                       size_t_zero_node);
!     gg_assign(depending_on, gg_cast(LONG, value));
!     IF( depending_on, lt_op, occurs_lower )
!     // depending_is can be no less than occurs_lower:
!       gg_assign(depending_on, occurs_lower );
!     ELSE
!       ENDIF
!     IF( depending_on, gt_op, occurs_upper )
!     // depending_is can be no greater than occurs_upper:
!       gg_assign(depending_on, occurs_upper );
!     ELSE
!       ENDIF
      }
    else
      {
!     gg_assign(depending_on, occurs_upper);
      }
    }
  
--- 1552,1579 ----
  //  gg_attribute_bit_clear(var, refmod_e);
    }
  
! static
! void
! depending_on_value(tree depending_on, cbl_field_t *current_sizer)
    {
    // We have to deal with the possibility of a DEPENDING_ON variable,
    // and we have to apply array bounds whether or not there is a DEPENDING_ON
    // variable:
  
! //  tree occurs_lower = gg_define_variable(LONG, "_lower");
! //  tree occurs_upper = gg_define_variable(LONG, "_upper");
! //
! //  gg_assign(occurs_lower, build_int_cst_type(LONG, current_sizer->occurs.bounds.lower));
! //  gg_assign(occurs_upper, build_int_cst_type(LONG, current_sizer->occurs.bounds.upper));
  
    if( current_sizer->occurs.depending_on )
      {
!     get_depending_on_value_from_odo(depending_on, current_sizer);
      }
    else
      {
!     gg_assign(depending_on,
!               build_int_cst_type(LONG, current_sizer->occurs.bounds.upper));
      }
    }
  
*************** parser_display_field(cbl_field_t *field)
*** 5107,5113 ****
   *  2.  ARG_VALUE_e, the ARGUMENT-VALUE
   *  3.  ENV_NAME_e, the ENVIRONMENT-NAME
   *  4.  ENV_VALUE_e, the ENVIRONMENT-VALUE
!  * that need special care and feeding. 
   */
  void
  parser_display( const struct cbl_special_name_t *upon,
--- 5129,5135 ----
   *  2.  ARG_VALUE_e, the ARGUMENT-VALUE
   *  3.  ENV_NAME_e, the ENVIRONMENT-NAME
   *  4.  ENV_VALUE_e, the ENVIRONMENT-VALUE
!  * that need special care and feeding.
   */
  void
  parser_display( const struct cbl_special_name_t *upon,
*************** parser_display( const struct cbl_special
*** 5169,5174 ****
--- 5191,5208 ----
          gg_assign(file_descriptor, integer_two_node);
          break;
  
+       case ENV_NAME_e:
+         // This Part I of the slightly absurd method of using DISPLAY...UPON
+         // to fetch, or set, environment variables.
+         gg_call(VOID,
+                 "__gg__set_env_name",
+                 gg_get_address_of(refs[0].field->var_decl_node),
+                 refer_offset(refs[0]),
+                 refer_size_source(refs[0]),
+                 NULL_TREE);
+          return;
+          break;
+ 
        default:
          if( upon->os_filename[0] )
            {
*************** parser_file_open( struct cbl_file_t *fil
*** 9281,9286 ****
--- 9315,9321 ----
      quoted_name = true;
      }
  
+   sv_is_i_o = true;
    store_location_stuff("OPEN");
    gg_call(VOID,
            "__gg__file_open",
*************** parser_file_close( struct cbl_file_t *fi
*** 9332,9337 ****
--- 9367,9373 ----
    // We are done with the filename.  The library routine will free "filename"
    // memory and set it back to null
  
+   sv_is_i_o = true;
    store_location_stuff("CLOSE");
    gg_call(VOID,
            "__gg__file_close",
*************** parser_file_read( struct cbl_file_t *fil
*** 9417,9422 ****
--- 9453,9459 ----
      where = 1;
      }
  
+   sv_is_i_o = true;
    store_location_stuff("READ");
    gg_call(VOID,
            "__gg__file_read",
*************** parser_file_write( cbl_file_t *file,
*** 9551,9556 ****
--- 9588,9594 ----
      record_area = cbl_field_of(symbol_at(file->default_record));
      }
  
+   sv_is_i_o = true;
    store_location_stuff("WRITE");
    gg_call(VOID,
            "__gg__file_write",
*************** parser_file_delete( struct cbl_file_t *f
*** 9620,9625 ****
--- 9658,9664 ----
      SHOW_PARSE_END
      }
  
+   sv_is_i_o = true;
    store_location_stuff("DELETE");
    gg_call(VOID,
            "__gg__file_delete",
*************** parser_file_rewrite(cbl_file_t *file,
*** 9676,9681 ****
--- 9715,9721 ----
      record_area = cbl_field_of(symbol_at(file->default_record));
      }
  
+   sv_is_i_o = true;
    store_location_stuff("REWRITE");
    gg_call(VOID,
            "__gg__file_rewrite",
*************** parser_file_start(struct cbl_file_t *fil
*** 9785,9790 ****
--- 9825,9831 ----
                        refer_offset(length_ref));
      }
  
+   sv_is_i_o = true;
    store_location_stuff("START");
    gg_call(VOID,
            "__gg__file_start",
*************** parser_intrinsic_subst( cbl_field_t *f,
*** 10320,10325 ****
--- 10361,10367 ----
      TRACE1_END
      }
  
+   sv_is_i_o = true;
    store_location_stuff("SUBSTITUTE");
    unsigned char *control_bytes = (unsigned char *)xmalloc(argc * sizeof(unsigned char));
    cbl_refer_t *arg1 = (cbl_refer_t *)xmalloc(argc * sizeof(cbl_refer_t));
*************** parser_intrinsic_call_1( cbl_field_t *tg
*** 10512,10518 ****
      if( is_table(ref1.field) && !ref1.nsubscript )
        {
        static tree depending_on = gg_define_variable(LONG, "..pic1_dep");
!       gg_get_depending_on_value(depending_on, ref1.field);
        gg_call(VOID,
                "__gg__int128_to_field",
                gg_get_address_of(tgt->var_decl_node),
--- 10554,10560 ----
      if( is_table(ref1.field) && !ref1.nsubscript )
        {
        static tree depending_on = gg_define_variable(LONG, "..pic1_dep");
!       depending_on_value(depending_on, ref1.field);
        gg_call(VOID,
                "__gg__int128_to_field",
                gg_get_address_of(tgt->var_decl_node),
*************** parser_lsearch_start(   cbl_label_t *nam
*** 10822,10828 ****
        {
        // Extract the number of elements in that rightmost dimension.
        lsearch->limit = gg_define_variable(LONG);
!       gg_get_depending_on_value(lsearch->limit, current);
        break;
        }
      current = parent_of(current);
--- 10864,10870 ----
        {
        // Extract the number of elements in that rightmost dimension.
        lsearch->limit = gg_define_variable(LONG);
!       depending_on_value(lsearch->limit, current);
        break;
        }
      current = parent_of(current);
*************** parser_bsearch_start(   cbl_label_t* nam
*** 11059,11065 ****
  
    // Assign the left and right values:
    gg_assign(bsearch->left, build_int_cst_type(LONG, 1));
!   gg_get_depending_on_value(bsearch->right, current);
  
    // Create the variable that will take the compare result.
    bsearch->compare_result = gg_define_int();
--- 11101,11107 ----
  
    // Assign the left and right values:
    gg_assign(bsearch->left, build_int_cst_type(LONG, 1));
!   depending_on_value(bsearch->right, current);
  
    // Create the variable that will take the compare result.
    bsearch->compare_result = gg_define_int();
*************** parser_sort(cbl_refer_t tableref,
*** 11344,11350 ****
    tree ascending = gg_array_of_size_t( total_keys, flattened_ascending );
  
    tree depending_on = gg_define_variable(LONG, "_sort_size");
!   gg_get_depending_on_value(depending_on, table);
  
    if( alphabet )
      {
--- 11386,11392 ----
    tree ascending = gg_array_of_size_t( total_keys, flattened_ascending );
  
    tree depending_on = gg_define_variable(LONG, "_sort_size");
!   depending_on_value(depending_on, table);
  
    if( alphabet )
      {
*************** store_location_stuff(const cbl_name_t st
*** 13389,13396 ****
    if( exception_location_active && !current_declarative_section_name() )
      {
      // We need to establish some stuff for EXCEPTION- function processing
-     gg_assign(var_decl_exception_source_file,
-               gg_string_literal(current_filename.back().c_str()));
  
      gg_assign(var_decl_exception_program_id,
                gg_string_literal(current_function->our_unmangled_name));
--- 13431,13436 ----
*************** parser_pop_exception()
*** 13522,13528 ****
    {
    gg_call(VOID, "__gg__exception_pop", NULL_TREE);
    }
!   
  void
  parser_clear_exception()
    {
--- 13562,13568 ----
    {
    gg_call(VOID, "__gg__exception_pop", NULL_TREE);
    }
! 
  void
  parser_clear_exception()
    {
diff -Nrcpad gcc-16-20250511/gcc/cobol/genmath.cc gcc-16-20250518/gcc/cobol/genmath.cc
*** gcc-16-20250511/gcc/cobol/genmath.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/genmath.cc	Sun May 18 22:32:07 2025
*************** parser_add( size_t nC, cbl_num_result_t
*** 756,767 ****
      TRACE1_END
      }
  
-   tree compute_error = (tree)compute_error_p;
-   if( compute_error == NULL )
-     {
-     gg_assign(var_decl_default_compute_error, integer_zero_node);
-     compute_error = gg_get_address_of(var_decl_default_compute_error);
-     }
    bool handled = false;
  
    if( fast_add( nC, C,
--- 756,761 ----
*************** parser_add( size_t nC, cbl_num_result_t
*** 772,777 ****
--- 766,778 ----
      }
    else
      {
+     tree compute_error = (tree)compute_error_p;
+     if( compute_error == NULL )
+       {
+       gg_assign(var_decl_default_compute_error, integer_zero_node);
+       compute_error = gg_get_address_of(var_decl_default_compute_error);
+       }
+ 
      bool computation_is_float =    is_somebody_float(nA, A)
                                  || is_somebody_float(nC, C);
      // We now start deciding which arithmetic routine we are going to use:
*************** parser_subtract(size_t nC, cbl_num_resul
*** 1452,1464 ****
  
    bool handled = false;
  
-   tree compute_error = (tree)compute_error_p;
-   if( compute_error == NULL )
-     {
-     gg_assign(var_decl_default_compute_error, integer_zero_node);
-     compute_error = gg_get_address_of(var_decl_default_compute_error);
-     }
- 
    if( fast_subtract(nC, C,
                      nA, A,
                      nB, B,
--- 1453,1458 ----
*************** parser_subtract(size_t nC, cbl_num_resul
*** 1468,1473 ****
--- 1462,1473 ----
      }
    else
      {
+     tree compute_error = (tree)compute_error_p;
+     if( compute_error == NULL )
+       {
+       gg_assign(var_decl_default_compute_error, integer_zero_node);
+       compute_error = gg_get_address_of(var_decl_default_compute_error);
+       }
      bool computation_is_float =    is_somebody_float(nA, A)
                                  || is_somebody_float(nC, C);
  
diff -Nrcpad gcc-16-20250511/gcc/cobol/genutil.cc gcc-16-20250518/gcc/cobol/genutil.cc
*** gcc-16-20250511/gcc/cobol/genutil.cc	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/genutil.cc	Sun May 18 22:32:07 2025
*************** tree var_decl_nop;                // int
*** 107,119 ****
  tree var_decl_main_called;        // int         __gg__main_called;
  
  #if 0
! #define REFER
  #else
! #define REFER do                                \
    {                                             \
    if( getenv("REFER") )                         \
      {                                           \
!     fprintf(stderr, "REFER %s\n", __func__);    \
      }                                           \
    }while(0);
  #endif
--- 107,119 ----
  tree var_decl_main_called;        // int         __gg__main_called;
  
  #if 0
! #define REFER(a)
  #else
! #define REFER(a) do                                \
    {                                             \
    if( getenv("REFER") )                         \
      {                                           \
!     fprintf(stderr, "REFER %s %s\n", __func__, a);    \
      }                                           \
    }while(0);
  #endif
*************** tree_type_from_digits(size_t digits, int
*** 232,247 ****
    }
  
  void
! get_integer_value(tree value,
                    cbl_field_t *field,
                    tree         offset,
                    bool check_for_fractional_digits)
    {
!   if(field->type == FldLiteralN)
      {
      }
  
- 
    Analyze();
    // Call this routine when you know the result has to be an integer with no
    // rdigits.  This routine became necessary the first time I saw an
--- 232,248 ----
    }
  
  void
! get_integer_value(tree value, // We know this is a LONG
                    cbl_field_t *field,
                    tree         offset,
                    bool check_for_fractional_digits)
    {
!   if( field->type == FldLiteralN && field->data.rdigits==0 )
      {
+     gg_assign(value, gg_cast(LONG, field->data_decl_node));
+     return;
      }
  
    Analyze();
    // Call this routine when you know the result has to be an integer with no
    // rdigits.  This routine became necessary the first time I saw an
*************** get_any_capacity(cbl_field_t *field)
*** 292,306 ****
      }
    }
  
! static tree
! get_data_offset(cbl_refer_t &refer,
!                 int *pflags = NULL)
    {
!   REFER;
!   if( getenv("REFER") )
      {
!     fprintf(stderr, "      %s %s\n", refer.field->name, refer.field->data.initial);
      }
    Analyze();
    // This routine returns a tree which is the size_t offset to the data in the
    // refer/field
--- 293,540 ----
      }
    }
  
! /*  This routine, used by both get_data_offset and refer_refmod_length,
!     fetches the refmod_from and refmod_length.  If ec-bound-ref-mod checking
!     is enabled, it does those checks and sets the exception condition when they
!     are violated.
! 
!     The return value for refstart is the actual offset, that is val(7:3) returns
!     the value 7-1, that is, 6.
!     */
! static
! void
! get_and_check_refstart_and_reflen(  tree         refstart,// LONG returned value
!                                     tree         reflen,  // LONG returned value
!                                     cbl_refer_t &refer)
    {
!   if( !enabled_exceptions.match(ec_bound_ref_mod_e) )
      {
!     // This is normal operation -- no exception checking.  Thus, we won't
!     // be trying to check for boundaries or integerness.  And the programmer
!     // is accepting the responsibility for bad code:  "If you specify
!     // disaster, disaster is what you get."
! 
!     get_integer_value(refstart,
!                       refer.refmod.from->field,
!                       refer_offset(*refer.refmod.from));
!     gg_decrement(refstart);
! 
!     if( refer.refmod.len )
!       {
!       // The length was specified, so that's what we return:
!       get_integer_value(reflen,
!                         refer.refmod.len->field,
!                         refer_offset(*refer.refmod.len));
!       }
!     else
!       {
!       // The length was not specified, so we need to return the distance
!       // between refmod.from and the end of the field:
!       gg_assign(reflen, gg_subtract( get_any_capacity(refer.field), refstart) );
!       }
!     return;
!     }
! 
!   // ec_bound_ref_mode_e checking is enabled:
! 
!   get_integer_value(refstart,
!                     refer.refmod.from->field,
!                     refer_offset(*refer.refmod.from),
!                     CHECK_FOR_FRACTIONAL_DIGITS);
! 
!   IF( var_decl_rdigits,
!       ne_op,
!       integer_zero_node )
!     {
!     // The value for refstart had non-zero decimal places.  This is an
!     // error condition:
!     set_exception_code(ec_bound_ref_mod_e);
!     gg_assign(refstart, gg_cast(LONG, integer_one_node));
!     gg_assign(var_decl_rdigits, integer_zero_node);
!     }
!   ELSE
!     ENDIF
! 
!   // Make refstart zero-based:
!   gg_decrement(refstart);
! 
!   IF( refstart, lt_op, build_int_cst_type(LONG, 0 ) )
!     {
!     // A negative value for refstart is an error condition:
!     set_exception_code(ec_bound_ref_mod_e);
!     gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!     // Set reflen to one here, because otherwise it won't be established.
!     gg_assign(reflen, gg_cast(TREE_TYPE(reflen), integer_one_node));
!     }
!   ELSE
!     {
!     IF( refstart, gt_op, gg_cast(TREE_TYPE(refstart), get_any_capacity(refer.field)) )
!       {
!       // refstart greater than zero is an error condition:
!       set_exception_code(ec_bound_ref_mod_e);
!       gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!       // Set reflen to one here, because otherwise it won't be established.
!       gg_assign(reflen, gg_cast(TREE_TYPE(reflen), integer_one_node));
!       }
!     ELSE
!       {
!       if( refer.refmod.len )
!         {
!         get_integer_value(reflen,
!                           refer.refmod.len->field,
!                           refer_offset(*refer.refmod.len),
!                           CHECK_FOR_FRACTIONAL_DIGITS);
!         IF( var_decl_rdigits,
!             ne_op,
!             integer_zero_node )
!           {
!           // length is not an integer, which is an error condition
!           set_exception_code(ec_bound_ref_mod_e);
!           gg_assign(reflen, gg_cast(LONG, integer_one_node));
!           gg_assign(var_decl_rdigits, integer_zero_node);
!           }
!         ELSE
!           {
!           // The length is an integer, so we can keep going.
!           IF( reflen, lt_op, gg_cast(LONG, integer_one_node) )
!             {
!             // length is too small, which is an error condition.
!             set_exception_code(ec_bound_ref_mod_e);
!             gg_assign(reflen, gg_cast(LONG, integer_one_node));
!             }
!           ELSE
!             {
!             IF( gg_add(refstart, reflen),
!                 gt_op,
!                 gg_cast(TREE_TYPE(refstart), get_any_capacity(refer.field)) )
!               {
!               // Start + Length is too large, which yet again is an error
!               // condition
!               set_exception_code(ec_bound_ref_mod_e);
! 
!               // Our intentions are honorable.  But at this point, where
!               // we notice that start + length is too long, the
!               // get_data_offset routine has already been run and
!               // it's too late to actually change the refstart.  There are
!               // theoretical solutions to this -- mainly,
!               // get_data_offset needs to check the start + len for
!               // validity.  But I am not going to do it now.  Think of this
!               // as the TODO item.
!               gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!               gg_assign(reflen, gg_cast(LONG, integer_one_node));
!               }
!             ELSE
!               {
!               // There are no problems, so there is no error condition, and
!               // refstart and reflen are correct.
!               }
!               ENDIF
!             }
!             ENDIF
!           }
!           ENDIF
!         }
!       else
!         {
!         // There is no refmod length, so we default to the remaining characters
!         gg_assign(reflen, gg_subtract(get_any_capacity(refer.field),
!                                       refstart));
!         }
!       }
!       ENDIF
      }
+     ENDIF
+   }
+ 
+ void
+ get_depending_on_value_from_odo(tree retval, cbl_field_t *odo)
+   {
+   /*  This routine, called only when we know there is an OCCURS DEPENDING ON
+       clause, returns the current value of the DEPENDING ON variable.  When
+       ec_bound_odo_e is turned on, and there is any kind of ec-bound-odo
+       error condition, the value returned is occurs.bounds.lower.
+ 
+       This should ensure that there is no memory violation in the event of a
+       declarative with a RESUME NEXT STATEMENT, or before the default_condition
+       processing can do a controlled exit.
+       */
+   cbl_field_t *depending_on;
+   depending_on = cbl_field_of(symbol_at(odo->occurs.depending_on));
+ 
+   if( !enabled_exceptions.match(ec_bound_odo_e) )
+     {
+     // With no exception testing, just pick up the value.  If there is a
+     // the programmer will simply have to live with the consequences.
+     get_integer_value(retval,
+                       depending_on,
+                       NULL);
+     return;
+     }
+ 
+   // Bounds checking is enabled, so we test the DEPENDING ON value to be between
+   // the lower and upper OCCURS limits:
+   get_integer_value(retval,
+                     depending_on,
+                     NULL,
+                     CHECK_FOR_FRACTIONAL_DIGITS);
+ 
+   IF( var_decl_rdigits, ne_op, integer_zero_node )
+     {
+     // This needs to evaluate to an integer
+     set_exception_code(ec_bound_odo_e);
+     gg_assign(retval, build_int_cst_type(TREE_TYPE(retval), odo->occurs.bounds.lower));
+     gg_assign(var_decl_rdigits, integer_zero_node);
+     }
+   ELSE
+     ENDIF
+ 
+   IF( retval, gt_op, build_int_cst_type(TREE_TYPE(retval), odo->occurs.bounds.upper) )
+     {
+     set_exception_code(ec_bound_odo_e);
+     gg_assign(retval, build_int_cst_type(TREE_TYPE(retval), odo->occurs.bounds.lower));
+     }
+   ELSE
+     {
+     IF( retval, lt_op, build_int_cst_type(TREE_TYPE(retval), odo->occurs.bounds.lower) )
+       {
+       set_exception_code(ec_bound_odo_e);
+       gg_assign(retval, build_int_cst_type(TREE_TYPE(retval), odo->occurs.bounds.lower));
+       }
+     ELSE
+       ENDIF
+     IF( retval, lt_op, gg_cast(TREE_TYPE(retval), integer_zero_node) )
+       {
+       set_exception_code(ec_bound_odo_e);
+       gg_assign(retval, gg_cast(TREE_TYPE(retval), integer_zero_node));
+       }
+     ELSE
+       ENDIF
+     }
+     ENDIF
+   }
+ 
+ static
+ void
+ get_depending_on_value(tree retval, cbl_refer_t &refer)
+   {
+   /*  This routine, called only when we know there is an OCCURS DEPENDING ON
+       clause, returns the current value of the DEPENDING ON variable.  When
+       ec_bound_odo_e is turned on, and there is any kind of ec-bound-odo
+       error condition, the value returned is occurs.bounds.lower.
+ 
+       This should ensure that there is no memory violation in the event of a
+       declarative with a RESUME NEXT STATEMENT, or before the default_condition
+       processing can do a controlled exit.
+       */
+   cbl_field_t *odo = symbol_find_odo(refer.field);
+   get_depending_on_value_from_odo(retval, odo);
+   }
+ 
+ static
+ tree
+ get_data_offset(cbl_refer_t &refer,
+                 int *pflags = NULL)
+   {
    Analyze();
    // This routine returns a tree which is the size_t offset to the data in the
    // refer/field
*************** get_data_offset(cbl_refer_t &refer,
*** 316,325 ****
    int all_flags = 0;
    int all_flag_bit = 1;
  
-   static tree value64 = gg_define_variable(LONG, ".._gdos_value64", vs_file_static);
- 
    if( refer.nsubscript )
      {
      // We have at least one subscript:
  
      // Figure we have three subscripts, so nsubscript is 3
--- 550,558 ----
    int all_flags = 0;
    int all_flag_bit = 1;
  
    if( refer.nsubscript )
      {
+     REFER("subscript");
      // We have at least one subscript:
  
      // Figure we have three subscripts, so nsubscript is 3
*************** get_data_offset(cbl_refer_t &refer,
*** 355,383 ****
        // Pick up the integer value of the subscript:
        tree subscript  = gg_define_variable(LONG);
  
-       get_integer_value(subscript,
-                         refer.subscripts[i].field,
-                         refer_offset(refer.subscripts[i]),
-                         CHECK_FOR_FRACTIONAL_DIGITS);
-       IF( var_decl_rdigits,
-           ne_op,
-           integer_zero_node )
-         {
-         // The subscript isn't an integer
-         set_exception_code(ec_bound_subscript_e);
-         gg_assign(var_decl_rdigits, integer_zero_node);
-         }
-       ELSE
-         {
-         }
-       ENDIF
- 
-       // gg_printf("%s(): We have a subscript of %d from %s\n",
-                   // gg_string_literal(__func__),
-                   // subscript,
-                   // gg_string_literal(refer.subscripts[i].field->name),
-                   // NULL_TREE);
- 
        if( (refer.subscripts[i].field->attr & FIGCONST_MASK) == zero_value_e )
          {
          // This refer is a figconst ZERO; we treat it as an ALL ZERO
--- 588,593 ----
*************** get_data_offset(cbl_refer_t &refer,
*** 389,486 ****
          // Flag this position as ALL
          all_flags |= all_flag_bit;
          }
!       all_flag_bit <<= 1;
! 
!       // Subscript is now a one-based integer
!       // Make it zero-based:
! 
!       gg_decrement(subscript);
!       // gg_printf("process_this_exception is true\n", NULL_TREE);
!       IF( subscript, lt_op, gg_cast(TREE_TYPE(subscript), integer_zero_node) )
!         {
!         // The subscript is too small
!         set_exception_code(ec_bound_subscript_e);
!         gg_assign(subscript, build_int_cst_type(TREE_TYPE(subscript), 0));
!         }
!       ELSE
          {
!         // gg_printf("parent->occurs.ntimes() is %d\n", build_int_cst_type(INT, parent->occurs.ntimes()), NULL_TREE);
!         IF( subscript,
!             ge_op,
!             build_int_cst_type(TREE_TYPE(subscript), parent->occurs.ntimes()) )
            {
!           // The subscript is too large
!           set_exception_code(ec_bound_subscript_e);
!           gg_assign(subscript, build_int_cst_type(TREE_TYPE(subscript), 0));
            }
!         ELSE
            {
!           // We have a good subscript:
!           // Check for an ODO violation:
!           if( parent->occurs.depending_on )
              {
!             cbl_field_t *depending_on = cbl_field_of(symbol_at(parent->occurs.depending_on));
!             get_integer_value(value64, depending_on);
!             IF( subscript, ge_op, value64 )
                {
!               set_exception_code(ec_bound_odo_e);
                }
              ELSE
                ENDIF
              }
  
!           tree augment = gg_multiply(subscript, get_any_capacity(parent));
!           gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, augment)));
            }
-           ENDIF
          }
!         ENDIF
        parent = parent_of(parent);
        }
      }
  
    if( refer.refmod.from )
      {
      // We have a refmod to deal with
      static tree refstart = gg_define_variable(LONG, "..gdo_refstart", vs_file_static);
  
-     get_integer_value(refstart,
-                       refer.refmod.from->field,
-                       refer_offset(*refer.refmod.from),
-                       CHECK_FOR_FRACTIONAL_DIGITS);
-     IF( var_decl_rdigits,
-         ne_op,
-         integer_zero_node )
-       {
-       // refmod offset is not an integer, and has to be
-       set_exception_code(ec_bound_ref_mod_e);
-       gg_assign(var_decl_rdigits, integer_zero_node);
-       }
-     ELSE
-       ENDIF
- 
-     // Make refstart zero-based:
-     gg_decrement(refstart);
- 
-     IF( refstart, lt_op, gg_cast(LONG, integer_zero_node) )
-       {
-       set_exception_code(ec_bound_ref_mod_e);
-       gg_assign(refstart, gg_cast(LONG, integer_zero_node));
-       }
-     ELSE
-       {
-       tree capacity = get_any_capacity(refer.field);  // This is a size_t
-       IF( refstart, gt_op, gg_cast(LONG, capacity) )
-         {
-         set_exception_code(ec_bound_ref_mod_e);
-         gg_assign(refstart, build_int_cst_type(TREE_TYPE(refstart), 0));
-         }
-       ELSE
-         ENDIF
-       }
-       ENDIF
- 
-     // We have a good refstart
      gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, refstart)));
      }
  
--- 599,692 ----
          // Flag this position as ALL
          all_flags |= all_flag_bit;
          }
!       else
          {
!         if( !enabled_exceptions.match(ec_bound_subscript_e) )
            {
!           // With no exception testing, just pick up the value
!           get_integer_value(subscript,
!                             refer.subscripts[i].field,
!                             refer_offset(refer.subscripts[i]));
            }
!         else
            {
!           get_integer_value(subscript,
!                             refer.subscripts[i].field,
!                             refer_offset(refer.subscripts[i]),
!                             CHECK_FOR_FRACTIONAL_DIGITS);
!           IF( var_decl_rdigits,
!               ne_op,
!               integer_zero_node )
              {
!             // The subscript isn't an integer
!             set_exception_code(ec_bound_subscript_e);
!             gg_assign(subscript, build_int_cst_type(TREE_TYPE(subscript), 1));
!             gg_assign(var_decl_rdigits, integer_zero_node);
!             }
!           ELSE
!             {
!             IF( subscript, lt_op, gg_cast(TREE_TYPE(subscript), integer_one_node) )
                {
!               // The subscript is too small
!               set_exception_code(ec_bound_subscript_e);
!               gg_assign(subscript, build_int_cst_type(TREE_TYPE(subscript), 1));
                }
              ELSE
+               {
+               IF( subscript,
+                   ge_op,
+                   build_int_cst_type(TREE_TYPE(subscript), parent->occurs.ntimes()) )
+                 {
+                 // The subscript is too large
+                 set_exception_code(ec_bound_subscript_e);
+                 gg_assign(subscript, build_int_cst_type(TREE_TYPE(subscript), 1));
+                 }
+               ELSE
+                 {
+                 }
+                 ENDIF
+               }
                ENDIF
              }
+           ENDIF
+           }
+         }
  
!       all_flag_bit <<= 1;
! 
!       // Although we strictly don't need to look at the ODO value at this point,
!       // we do want it checked for the purposes of ec-bound-odo
! 
!       if( enabled_exceptions.match(ec_bound_odo_e) )
!         {
!         if( parent->occurs.depending_on )
!           {
!           static tree value64 = gg_define_variable(LONG, ".._gdos_value64", vs_file_static);
!           cbl_field_t *odo = symbol_find_odo(parent);
!           get_depending_on_value_from_odo(value64, odo);
            }
          }
! 
!       // Subscript is now a one-based integer
!       // Make it zero-based:
! 
!       gg_decrement(subscript);
! 
!       tree augment = gg_multiply(subscript, get_any_capacity(parent));
!       gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, augment)));
! 
        parent = parent_of(parent);
        }
      }
  
    if( refer.refmod.from )
      {
+     REFER("refmod refstart");
      // We have a refmod to deal with
      static tree refstart = gg_define_variable(LONG, "..gdo_refstart", vs_file_static);
+     static tree reflen   = gg_define_variable(LONG, "..gdo_reflen", vs_file_static);
+     get_and_check_refstart_and_reflen(refstart, reflen, refer);
  
      gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, refstart)));
      }
  
*************** get_data_offset(cbl_refer_t &refer,
*** 489,499 ****
      *pflags = all_flags;
      }
  
- 
- //  gg_printf("*****>>>>> %s(): returning %p\n",
- //            gg_string_literal(__func__),
- //            retval,
- //            NULL_TREE);
    return retval;
    }
  
--- 695,700 ----
*************** refer_is_clean(cbl_refer_t &refer)
*** 1734,1740 ****
      // It is routine for a refer to have no field.  It happens when the parser
      // passes us a refer for an optional parameter that has been omitted, for
      // example.
!     
      // It is also the case that a FldLiteralN will never have suscripts, or the
      // like.
      return true;
--- 1935,1941 ----
      // It is routine for a refer to have no field.  It happens when the parser
      // passes us a refer for an optional parameter that has been omitted, for
      // example.
! 
      // It is also the case that a FldLiteralN will never have suscripts, or the
      // like.
      return true;
*************** refer_is_clean(cbl_refer_t &refer)
*** 1749,1943 ****
            ;
    }
  
  /*  This routine returns the length portion of a refmod(start:length) reference.
      It extracts both the start and the length so that it can add them together
      to make sure that result falls within refer.capacity.
      */
  static
  tree  // size_t
  refer_refmod_length(cbl_refer_t &refer)
    {
-   REFER;
    Analyze();
!   if( refer.refmod.from || refer.refmod.len )
!     {
!     static tree refstart = gg_define_variable(LONG, "..rrl_refstart", vs_file_static);
!     static tree reflen   = gg_define_variable(LONG, "..rrl_reflen", vs_file_static);
! 
!     tree rt_capacity = get_any_capacity(refer.field); // This is a size_t
! 
!     get_integer_value(refstart,
!                       refer.refmod.from->field,
!                       refer_offset(*refer.refmod.from),
!                       CHECK_FOR_FRACTIONAL_DIGITS);
!     IF( var_decl_rdigits,
!         ne_op,
!         integer_zero_node )
!       {
!       set_exception_code(ec_bound_ref_mod_e);
!       gg_assign(refstart, gg_cast(LONG, integer_one_node));
!       gg_assign(var_decl_rdigits, integer_zero_node);
!       }
!     ELSE
!       ENDIF
! 
!     // Make refstart zero-based:
!     gg_decrement(refstart);
! 
!     IF( refstart, lt_op, build_int_cst_type(LONG, 0 ) )
!       {
!       set_exception_code(ec_bound_ref_mod_e);
!       gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!       // Set reflen to one here, because otherwise it won't be established.
!       gg_assign(reflen, gg_cast(TREE_TYPE(reflen), integer_one_node));
!       }
!     ELSE
!       {
!       IF( refstart, gt_op, gg_cast(TREE_TYPE(refstart), rt_capacity) )
!         {
!         set_exception_code(ec_bound_ref_mod_e);
!         gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!         // Set reflen to one here, because otherwise it won't be established.
!         gg_assign(reflen, gg_cast(TREE_TYPE(reflen), integer_one_node));
!         }
!       ELSE
!         {
!         if( refer.refmod.len )
!           {
!           get_integer_value(reflen,
!                             refer.refmod.len->field,
!                             refer_offset(*refer.refmod.len),
!                             CHECK_FOR_FRACTIONAL_DIGITS);
!           IF( var_decl_rdigits,
!               ne_op,
!               integer_zero_node )
!             {
!             // length is not an integer
!             set_exception_code(ec_bound_ref_mod_e);
!             gg_assign(reflen, gg_cast(LONG, integer_one_node));
!             gg_assign(var_decl_rdigits, integer_zero_node);
!             }
!           ELSE
!             {
!             }
!           ENDIF
! 
!           IF( reflen, lt_op, gg_cast(LONG, integer_one_node) )
!             {
!             // length is too small
!             set_exception_code(ec_bound_ref_mod_e);
!             gg_assign(reflen, gg_cast(LONG, integer_one_node));
!             }
!           ELSE
!             {
!             IF( gg_add(refstart, reflen),
!                 gt_op,
!                 gg_cast(TREE_TYPE(refstart), rt_capacity) )
!               {
!               // Start + Length is too large
!               set_exception_code(ec_bound_ref_mod_e);
  
!               // Our intentions are honorable.  But at this point, where
!               // we notice that start + length is too long, the
!               // get_data_offset routine has already been run and
!               // it's too late to actually change the refstart.  There are
!               // theoretical solutions to this -- mainly,
!               // get_data_offset needs to check the start + len for
!               // validity.  But I am not going to do it now.  Think of this
!               // as the TODO item.
!               gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!               gg_assign(reflen, gg_cast(LONG, integer_one_node));
!               }
!             ELSE
!               ENDIF
!             }
!             ENDIF
!           }
!         else
!           {
!           // There is no refmod length, so we default to the remaining characters
!           tree subtract_expr = gg_subtract( rt_capacity,
!                                             refstart);
!           gg_assign(reflen, subtract_expr);
!           }
!         }
!         ENDIF
!       }
!       ENDIF
  
!     // Arrive here with valid values for refstart and reflen:
  
!     return gg_cast(SIZE_T, reflen);
!     }
!   else
!     {
!     return size_t_zero_node;
!     }
    }
  
  static
  tree // size_t
  refer_fill_depends(cbl_refer_t &refer)
    {
!   REFER;
    // This returns a positive number which is the amount a depends-limited
    // capacity needs to be reduced.
    Analyze();
    cbl_field_t *odo = symbol_find_odo(refer.field);
-   cbl_field_t *depending_on;
-   depending_on = cbl_field_of(symbol_at(odo->occurs.depending_on));
-   // refer.field has a relevant DEPENDING ON clause
- 
-   // gg_printf("var is %s type is %s\n",
-             // gg_string_literal(refer.field->name),
-             // gg_string_literal(cbl_field_type_str(refer.field->type)),
-             // NULL_TREE);
-   // gg_printf("   odo is %s\n", gg_string_literal(odo->name), NULL_TREE);
- 
-   // gg_printf("      depending_on is %s\n", gg_string_literal(depending_on->name), NULL_TREE);
-   // fprintf(stderr,
-           // "symbol_find_odo found %s, with depending_on %s\n",
-           // odo->name,
-           // depending_on->name);
  
    static tree value64 = gg_define_variable(LONG, "..rfd_value64", vs_file_static);
-   get_integer_value(value64,
-                     depending_on,
-                     NULL,
-                     CHECK_FOR_FRACTIONAL_DIGITS);
-   IF( var_decl_rdigits, ne_op, integer_zero_node )
-     {
-     // This needs to evaluate to an integer
-     set_exception_code(ec_bound_odo_e);
-     gg_assign(value64, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.upper));
-     gg_assign(var_decl_rdigits, integer_zero_node);
-     }
-   ELSE
-     ENDIF
  
!   IF( value64, gt_op, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.upper) )
!     {
!     set_exception_code(ec_bound_odo_e);
!     gg_assign(value64, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.upper));
!     }
!   ELSE
!     {
!     IF( value64, lt_op, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.lower) )
!       {
!       set_exception_code(ec_bound_odo_e);
!       gg_assign(value64, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.lower));
!       }
!     ELSE
!       ENDIF
!     IF( value64, lt_op, gg_cast(TREE_TYPE(value64), integer_zero_node) )
!       {
!       set_exception_code(ec_bound_odo_e);
!       gg_assign(value64, gg_cast(TREE_TYPE(value64), integer_zero_node));
!       }
!     ELSE
!       ENDIF
!     }
!     ENDIF
    // value64 is >= zero and < bounds.upper
  
    // We multiply the ODO value by the size of the data capacity to get the
--- 1950,1992 ----
            ;
    }
  
+ 
  /*  This routine returns the length portion of a refmod(start:length) reference.
      It extracts both the start and the length so that it can add them together
      to make sure that result falls within refer.capacity.
+ 
+     This routine shouldn't be called unless there is refmod involved.
      */
  static
  tree  // size_t
  refer_refmod_length(cbl_refer_t &refer)
    {
    Analyze();
!   REFER("refstart and reflen");
!   static tree refstart = gg_define_variable(LONG, "..rrl_refstart", vs_file_static);
!   static tree reflen   = gg_define_variable(LONG, "..rrl_reflen", vs_file_static);
  
!   get_and_check_refstart_and_reflen( refstart, reflen, refer);
  
!   // Arrive here with a valid value for reflen:
  
!   return gg_cast(SIZE_T, reflen);
    }
  
  static
  tree // size_t
  refer_fill_depends(cbl_refer_t &refer)
    {
!   REFER("");
    // This returns a positive number which is the amount a depends-limited
    // capacity needs to be reduced.
    Analyze();
    cbl_field_t *odo = symbol_find_odo(refer.field);
  
    static tree value64 = gg_define_variable(LONG, "..rfd_value64", vs_file_static);
  
!   get_depending_on_value(value64, refer);
! 
    // value64 is >= zero and < bounds.upper
  
    // We multiply the ODO value by the size of the data capacity to get the
*************** refer_offset(cbl_refer_t &refer,
*** 1958,1968 ****
    {
    // This routine calculates the effect of a refer offset on the
    // refer.field->data location.  When there are subscripts, the data location
!   // gets augmented by the (subscript-1)*element_size calculation.  And when 
    // there is a refmod, the data location additionally gets augmented by
    // (refmod.from-1)
  
-   REFER;
    if( !refer.field )
      {
      // It's common for the field to be missing.  It generally means that an
--- 2007,2016 ----
    {
    // This routine calculates the effect of a refer offset on the
    // refer.field->data location.  When there are subscripts, the data location
!   // gets augmented by the (subscript-1)*element_size calculation.  And when
    // there is a refmod, the data location additionally gets augmented by
    // (refmod.from-1)
  
    if( !refer.field )
      {
      // It's common for the field to be missing.  It generally means that an
*************** refer_offset(cbl_refer_t &refer,
*** 1981,1990 ****
    }
  
  static
! tree
  refer_size(cbl_refer_t &refer, refer_type_t refer_type)
    {
-   REFER;
    Analyze();
    static tree retval = gg_define_variable(SIZE_T, "..rs_retval", vs_file_static);
  
--- 2029,2037 ----
    }
  
  static
! tree   // size_t
  refer_size(cbl_refer_t &refer, refer_type_t refer_type)
    {
    Analyze();
    static tree retval = gg_define_variable(SIZE_T, "..rs_retval", vs_file_static);
  
*************** refer_size(cbl_refer_t &refer, refer_typ
*** 2026,2039 ****
  tree  // size_t
  refer_size_dest(cbl_refer_t &refer)
    {
-   REFER;
    return refer_size(refer, refer_dest);
    }
  
  tree  // size_t
  refer_size_source(cbl_refer_t &refer)
    {
-   REFER;
    /*  There are oddities involved with refer_size_source and refer_size_dest.
        See the comments in refer_has_depends for some explanation.  There are
        other considerations, as well.  For example, consider a move, where you
--- 2073,2084 ----
diff -Nrcpad gcc-16-20250511/gcc/cobol/genutil.h gcc-16-20250518/gcc/cobol/genutil.h
*** gcc-16-20250511/gcc/cobol/genutil.h	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/genutil.h	Sun May 18 22:32:07 2025
*************** void      build_array_of_treeplets( int
*** 154,157 ****
--- 154,158 ----
  void      build_array_of_fourplets( int ngroup,
                                      size_t N,
                                      cbl_refer_t *refers);
+ void      get_depending_on_value_from_odo(tree retval, cbl_field_t *odo);
  #endif
diff -Nrcpad gcc-16-20250511/gcc/cobol/lang-specs.h gcc-16-20250518/gcc/cobol/lang-specs.h
*** gcc-16-20250511/gcc/cobol/lang-specs.h	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/lang-specs.h	Sun May 18 22:32:07 2025
***************
*** 34,40 ****
      {".CBL", "@cobol", 0, 0, 0},
      {"@cobol",
          "cobol1 %i %(cc1_options) "
!         "%{D*} %{E} %{I*} %{fmax-errors*} %{fsyntax-only*} "
          "%{fcobol-exceptions*} "
          "%{copyext} "
          "%{fstatic-call} %{fdefaultbyte} "
--- 34,40 ----
      {".CBL", "@cobol", 0, 0, 0},
      {"@cobol",
          "cobol1 %i %(cc1_options) "
!         "%{D*} %{E} %{I*} %{M} %{fmax-errors*} %{fsyntax-only*} "
          "%{fcobol-exceptions*} "
          "%{copyext} "
          "%{fstatic-call} %{fdefaultbyte} "
diff -Nrcpad gcc-16-20250511/gcc/cobol/lang.opt gcc-16-20250518/gcc/cobol/lang.opt
*** gcc-16-20250511/gcc/cobol/lang.opt	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/lang.opt	Sun May 18 22:32:07 2025
*************** Cobol Joined Separate
*** 38,43 ****
--- 38,48 ----
  ;;  -I <dir>	Add copybook search directory
  ; Documented in c.opt
  
+ M
+ Cobol
+ ; Documented in c.opt
+ 
+ 
  dialect
  Cobol Joined Separate Enum(dialect_type) EnumBitSet Var(cobol_dialect)
  Accept COBOL constructs used by non-ISO compilers
diff -Nrcpad gcc-16-20250511/gcc/cobol/lang.opt.urls gcc-16-20250518/gcc/cobol/lang.opt.urls
*** gcc-16-20250511/gcc/cobol/lang.opt.urls	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/lang.opt.urls	Sun May 18 22:32:07 2025
*************** UrlSuffix(gcc/Preprocessor-Options.html#
*** 10,15 ****
--- 10,18 ----
  I
  UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
  
+ M
+ UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+ 
  ffixed-form
  LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-ffixed-form)
  
diff -Nrcpad gcc-16-20250511/gcc/cobol/lexio.h gcc-16-20250518/gcc/cobol/lexio.h
*** gcc-16-20250511/gcc/cobol/lexio.h	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/lexio.h	Sun May 18 22:32:07 2025
***************
*** 43,49 ****
  #define SPACE ' '
  
  bool lexer_echo();
- 
  bool is_reference_format();
  
  static inline bool isquote( char ch ) {
--- 43,48 ----
diff -Nrcpad gcc-16-20250511/gcc/cobol/parse.y gcc-16-20250518/gcc/cobol/parse.y
*** gcc-16-20250511/gcc/cobol/parse.y	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/parse.y	Sun May 18 22:32:07 2025
***************
*** 1346,1353 ****
--- 1346,1361 ----
      // more integer friendly.  Any integer value that can be expressed in 1
      // to MAX_FIXED_POINT_DIGITS digits is converted to a string without a
      // decimal point and no exponent.
+ 
      char *pdot = strchr(psz, '.');
+     gcc_assert(pdot);
      char *pe = strchr(psz, 'e');
+     if( !pe )
+       {
+       // The most likely cause of this is a "0.0" result.
+       strcpy(psz, "0");
+       return;
+       }
      char *pnz = pe-1;
      while(*pnz == '0')
        {
*************** config_paragraphs: config_paragraph
*** 2277,2283 ****
--- 2285,2293 ----
  config_paragraph:
                  SPECIAL_NAMES '.'
          |       SPECIAL_NAMES '.' specials '.'
+         |       SOURCE_COMPUTER  '.' 
          |       SOURCE_COMPUTER  '.' NAME with_debug '.'
+         |       OBJECT_COMPUTER  '.' 
          |       OBJECT_COMPUTER  '.' NAME collating_sequence[name] '.'
                  {
                    if( $name ) {
*************** picture_clause: PIC signed nps[fore] nin
*** 4015,4022 ****
                    cbl_field_t *field = current_field();
  
  		  if( field->type == FldNumericBin5 &&
! 		      field->data.capacity == 0  &&
! 		      dialect_mf() )
  		  { // PIC X COMP-X or COMP-9
  		    if( ! field->has_attr(all_x_e) ) {
  		      error_msg(@2, "COMP PICTURE requires all X's or all 9's");
--- 4025,4032 ----
                    cbl_field_t *field = current_field();
  
  		  if( field->type == FldNumericBin5 &&
! 		      field->data.capacity == 0xFF  &&
! 		      (dialect_gnu() || dialect_mf()) )
  		  { // PIC X COMP-X or COMP-9
  		    if( ! field->has_attr(all_x_e) ) {
  		      error_msg(@2, "COMP PICTURE requires all X's or all 9's");
*************** picture_clause: PIC signed nps[fore] nin
*** 4024,4029 ****
--- 4034,4040 ----
  		    }
  		  } else {
                      if( !field_type_update(field, FldAlphanumeric, @$) ) {
+ 		      dbgmsg("alnum_pic: %s", field_str(field));
                        YYERROR;
                      }
  		  }
*************** usage_clause1:  usage BIT
*** 4240,4260 ****
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        if( dialect_mf() ) {
                            field->type = $comp.type;
  			  field->clear_attr(signable_e);
  		        } else {
  			  error_msg(@comp, "numeric USAGE invalid "
  				           "with Alpnanumeric PICTURE");
! 			  dialect_error(@1, "Alpnanumeric COMP-5 or COMP-X", "mf");
  			  YYERROR;
  		        }
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
! 		          if( ! dialect_mf() ) {
! 				  dialect_error(@1, "COMP-X", "mf");
  		          }
  			}
                          field->type = $comp.type;
--- 4251,4271 ----
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        if( (dialect_mf() || dialect_gnu()) ) {
                            field->type = $comp.type;
  			  field->clear_attr(signable_e);
  		        } else {
  			  error_msg(@comp, "numeric USAGE invalid "
  				           "with Alpnanumeric PICTURE");
! 			  dialect_error(@1, "Alpnanumeric COMP-5 or COMP-X", "mf or gnu");
  			  YYERROR;
  		        }
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
! 		          if( ! (dialect_mf() || dialect_gnu()) ) {
! 				  dialect_error(@1, "COMP-X", "mf or gnu");
  		          }
  			}
                          field->type = $comp.type;
*************** usage_clause1:  usage BIT
*** 4321,4341 ****
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        if( dialect_mf() ) {
                            field->type = $comp.type;
  			  field->clear_attr(signable_e);
  		        } else {
  			  error_msg(@comp, "numeric USAGE invalid "
  				           "with Alpnanumeric PICTURE");
! 			  dialect_error(@1, "Alpnanumeric COMP-5 or COMP-X", "mf");
  			  YYERROR;
  		        }
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
! 		          if( ! dialect_mf() ) {
! 				  dialect_error(@1, "COMP-X", "mf");
  		          }
  			}
                          field->type = $comp.type;
--- 4332,4352 ----
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        if( (dialect_mf() || dialect_gnu()) ) {
                            field->type = $comp.type;
  			  field->clear_attr(signable_e);
  		        } else {
  			  error_msg(@comp, "numeric USAGE invalid "
  				           "with Alpnanumeric PICTURE");
! 			  dialect_error(@1, "Alpnanumeric COMP-5 or COMP-X", "mf or gnu");
  			  YYERROR;
  		        }
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
! 		          if( ! (dialect_mf() || dialect_gnu()) ) {
! 				  dialect_error(@1, "COMP-X", "mf or gnu");
  		          }
  			}
                          field->type = $comp.type;
*************** acceptable:     device_name
*** 5236,5244 ****
                  {
                    $$ = special_of($1);
                    if( !$$ ) {
!                     error_msg(@NAME, "no such environment mnemonic name: %s", $NAME);
!                     YYERROR;
!                   }
                  }
                  ;
  
--- 5247,5265 ----
                  {
                    $$ = special_of($1);
                    if( !$$ ) {
! 		    const special_name_t *special_type = cmd_or_env_special_of($NAME);
! 		    if( !special_type ) {
!                       error_msg(@NAME, "no such special name '%s'", $NAME);
!                       YYERROR;
! 		    }
! 		    // Add the name now, as a convenience. 
! 		    cbl_special_name_t special = { 0, *special_type };
! 		    namcpy(@NAME, special.name, $NAME);
! 
! 		    symbol_elem_t *e = symbol_special_add(PROGRAM, &special);
! 		    $$ = cbl_special_name_of(e);
! 		  }
! 		  assert($$);
                  }
                  ;
  
*************** section_kw:     SECTION
*** 7114,7122 ****
                  {
                    if( $1 ) {
  		    if( *$1 == '-' ) {
! 		      error_msg(@1, "SECTION segment %s is negative", $1);
                      } else {
!                       cbl_unimplementedw("SECTION segment %s was ignored", $1);
                      }
  		  }
                  }
--- 7135,7155 ----
                  {
                    if( $1 ) {
  		    if( *$1 == '-' ) {
! 		      error_msg(@1, "SECTION segment %<%s%> is negative", $1);
                      } else {
! 		      if( dialect_ibm() ) {
! 			int sectno;
! 			sscanf($1, "%u", &sectno);
! 			if( ! (0 <= sectno && sectno <= 99) ) {
! 			  error_msg(@1, "SECTION segment %<%s%> must be 0-99", $1);
! 			} else {
! 			  if(false) { // stand-in for warning, someday.
! 			    yywarn("SECTION segment %<%s%> was ignored", $1);
! 			  }
! 			}
! 		      } else {
! 			cbl_unimplemented("SECTION segment %<%s%> is not ISO syntax", $1);
! 		      }
                      }
  		  }
                  }
*************** perform_except:	perform_start
*** 7498,7515 ****
  		perform_ec_finally
  		END_PERFORM
                  {
! 		  auto perf = perform_current();
! 		  // produce blob, jumped over by FINALLY paragraph
! 		  size_t iblob = symbol_declaratives_add( PROGRAM, perf->dcls );
! 		  auto lave = perf->ec_labels.new_label(LblParagraph, "lave");
! 		  auto handlers = cbl_field_of(symbol_at(iblob));
! 
! 		  // install blob
! 		  parser_label_label(perf->ec_labels.init);
! 		  declarative_runtime_match(handlers, lave);
! 
! 		  // uninstall blob
! 		  parser_label_label(perf->ec_labels.fini);
                  }
  		;
  
--- 7531,7537 ----
  		perform_ec_finally
  		END_PERFORM
                  {
! 		  cbl_unimplemented("PERFORM Format 3");
                  }
  		;
  
*************** mode_syntax_only() {
*** 12920,12929 ****
  
  void
  cobol_dialect_set( cbl_dialect_t dialect ) {
!   cbl_dialect = dialect;
!   if( dialect & dialect_ibm_e ) cobol_gcobol_feature_set(feature_embiggen_e);
  }
- cbl_dialect_t cobol_dialect() { return cbl_dialect; }
  
  static bool internal_ebcdic_locked = false;
  
--- 12942,12963 ----
  
  void
  cobol_dialect_set( cbl_dialect_t dialect ) {
!   switch(dialect) {
!   case dialect_gcc_e:
!     break;
!   case dialect_ibm_e:
!     cobol_gcobol_feature_set(feature_embiggen_e);
!     break;
!   case dialect_mf_e:
!     break;
!   case dialect_gnu_e:
!     if( 0 == (cbl_dialects & dialect) ) { // first time
!       tokens.equate(YYLTYPE(), "BINARY-DOUBLE", "BINARY-C-LONG");
!     }
!     break;
!   }    
!   cbl_dialects |= dialect;
  }
  
  static bool internal_ebcdic_locked = false;
  
diff -Nrcpad gcc-16-20250511/gcc/cobol/parse_ante.h gcc-16-20250518/gcc/cobol/parse_ante.h
*** gcc-16-20250511/gcc/cobol/parse_ante.h	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/parse_ante.h	Sun May 18 22:32:07 2025
***************
*** 47,55 ****
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
  
- extern void declarative_runtime_match(cbl_field_t *declaratives,
-                                       cbl_label_t *lave );
- 
  extern YYLTYPE yylloc;
  
  extern int yylineno, yyleng, yychar;
--- 47,52 ----
*************** void apply_declaratives();
*** 73,79 ****
  const char * keyword_str( int token );
  void labels_dump();
  
! cbl_dialect_t cbl_dialect;
  size_t cbl_gcobol_features;
  
  static enum cbl_division_t current_division;
--- 70,76 ----
  const char * keyword_str( int token );
  void labels_dump();
  
! unsigned int cbl_dialects;
  size_t cbl_gcobol_features;
  
  static enum cbl_division_t current_division;
*************** class current_tokens_t {
*** 1035,1041 ****
    int find( const cbl_name_t name, bool include_intrinsics ) {
      return tokens.find(name, include_intrinsics);
    }
!   bool equate( const YYLTYPE& loc, cbl_name_t keyword, const cbl_name_t alias ) {
      int token; 
      if( 0 == (token = binary_integer_usage_of(keyword)) ) {
        if( 0 == (token = keyword_tok(keyword)) ) {
--- 1032,1038 ----
    int find( const cbl_name_t name, bool include_intrinsics ) {
      return tokens.find(name, include_intrinsics);
    }
!   bool equate( const YYLTYPE& loc, const cbl_name_t keyword, const cbl_name_t alias ) {
      int token; 
      if( 0 == (token = binary_integer_usage_of(keyword)) ) {
        if( 0 == (token = keyword_tok(keyword)) ) {
*************** class current_tokens_t {
*** 1054,1060 ****
    bool undefine( const YYLTYPE& loc, cbl_name_t keyword ) {
      return tokens.undefine(loc, keyword);
    }
!   bool substitute( const YYLTYPE& loc, cbl_name_t keyword, const cbl_name_t alias ) {
      int token; 
      if( 0 == (token = binary_integer_usage_of(keyword)) ) {
        if( 0 == (token = keyword_tok(keyword)) ) {
--- 1051,1057 ----
    bool undefine( const YYLTYPE& loc, cbl_name_t keyword ) {
      return tokens.undefine(loc, keyword);
    }
!   bool substitute( const YYLTYPE& loc, const cbl_name_t keyword, const cbl_name_t alias ) {
      int token; 
      if( 0 == (token = binary_integer_usage_of(keyword)) ) {
        if( 0 == (token = keyword_tok(keyword)) ) {
*************** class prog_descr_t {
*** 1476,1482 ****
    std::set<std::string> call_targets, subprograms;
   public:
    std::set<function_descr_t> function_repository;
!   size_t program_index, declaratives_index;
    cbl_label_t *declaratives_eval, *paragraph, *section;
    const char *collating_sequence;
    struct locale_t {
--- 1473,1479 ----
    std::set<std::string> call_targets, subprograms;
   public:
    std::set<function_descr_t> function_repository;
!   size_t program_index;
    cbl_label_t *declaratives_eval, *paragraph, *section;
    const char *collating_sequence;
    struct locale_t {
*************** class prog_descr_t {
*** 1494,1500 ****
  
    prog_descr_t( size_t isymbol )
      : program_index(isymbol)
-     , declaratives_index(0)
      , declaratives_eval(NULL)
      , paragraph(NULL)
      , section(NULL)
--- 1491,1496 ----
*************** static class current_t {
*** 2101,2110 ****
      assert(!programs.empty());
      return programs.top().program_index;
    }
-   size_t  program_declaratives(void) const {
-     if( programs.empty() ) return 0;
-     return programs.top().declaratives_index;
-   }
    const cbl_label_t * program(void) {
      return programs.empty()?
                  NULL : cbl_label_of(symbol_at(programs.top().program_index));
--- 2097,2102 ----
*************** static class current_t {
*** 2118,2129 ****
  
    bool is_first_statement( const YYLTYPE& loc )  {
      if( ! in_declaratives && first_statement == 0 ) {
!       if( ! symbol_label_section_exists(program_index()) ) {
!         if( ! dialect_ibm() ) {
!           error_msg(loc,
!                     "Per ISO a program with DECLARATIVES must begin with a SECTION, "
!                     "requires -dialect ibm");
!         }
        }
        first_statement = loc.first_line;
        return true;
--- 2110,2125 ----
  
    bool is_first_statement( const YYLTYPE& loc )  {
      if( ! in_declaratives && first_statement == 0 ) {
!       auto eval = programs.top().declaratives_eval;
!       if( eval ) {
! 	size_t ilabel = symbol_index(symbol_elem_of(eval));
! 	if( ! symbol_label_section_exists(ilabel) ) {
! 	  if( ! dialect_ibm() ) {
! 	    error_msg(loc,
! 		      "Per ISO a program with DECLARATIVES must begin with a SECTION, "
! 		      "requires -dialect ibm");
! 	  }
! 	}
        }
        first_statement = loc.first_line;
        return true;
*************** static class current_t {
*** 2214,2237 ****
  
      declaratives.runtime.dcl = parser_compile_dcls(declaratives.encode());
  
-     size_t idcl = symbol_declaratives_add(program_index(), declaratives.as_list());
-     programs.top().declaratives_index = idcl;
- 
      // Create section to evaluate declaratives.  Given them unique names so
      // that we can figure out what is going on in a trace or looking at the
      // assembly language.
!     static int eval_count=1;
!     char eval[32];
!     char lave[32];
      sprintf(eval, "_DECLARATIVES_EVAL%d", eval_count);
!     sprintf(lave, "_DECLARATIVES_LAVE%d", eval_count);
!     eval_count +=1 ;
  
      struct cbl_label_t*& eval_label = programs.top().declaratives_eval;
      eval_label = label_add(LblSection, eval, yylineno);
      struct cbl_label_t * lave_label = label_add(LblSection, lave, yylineno);
      ast_enter_section(eval_label);
!     declarative_runtime_match(cbl_field_of(symbol_at(idcl)), lave_label);
      return lave_label;
    }
  
--- 2210,2234 ----
  
      declaratives.runtime.dcl = parser_compile_dcls(declaratives.encode());
  
      // Create section to evaluate declaratives.  Given them unique names so
      // that we can figure out what is going on in a trace or looking at the
      // assembly language.
!     static int eval_count = 1;
!     char eval[32], lave[32];
!     
      sprintf(eval, "_DECLARATIVES_EVAL%d", eval_count);
!     sprintf(lave, "_DECLARATIVES_LAVE%d", eval_count++);
  
      struct cbl_label_t*& eval_label = programs.top().declaratives_eval;
      eval_label = label_add(LblSection, eval, yylineno);
      struct cbl_label_t * lave_label = label_add(LblSection, lave, yylineno);
+ 
      ast_enter_section(eval_label);
! 
!     declarative_runtime_match(declaratives.as_list(), lave_label);
!     
!     parser_label_label(lave_label);
!     
      return lave_label;
    }
  
*************** static class current_t {
*** 2261,2271 ****
  
    /*
     * END DECLARATIVES causes:
!    *   1. Add DECLARATIVES symbol, containing criteria blob.
!    *   2. Create section _DECLARATIVES_EVAL
     *      and exit label _DECLARATIVES_LAVE
!    *   3. declarative_runtime_match generates runtime evaluation "ladder".
!    *   4. After a declarative is executed, control branches to the exit label.
     *
     * After each verb, we call declaratives_evaluate,
     * which PERFORMs _DECLARATIVES_EVAL.
--- 2258,2267 ----
  
    /*
     * END DECLARATIVES causes:
!    *   1. Create section _DECLARATIVES_EVAL
     *      and exit label _DECLARATIVES_LAVE
!    *   2. declarative_runtime_match generates runtime evaluation "ladder".
!    *   3. After a declarative is executed, control branches to the exit label.
     *
     * After each verb, we call declaratives_evaluate,
     * which PERFORMs _DECLARATIVES_EVAL.
diff -Nrcpad gcc-16-20250511/gcc/cobol/scan.l gcc-16-20250518/gcc/cobol/scan.l
*** gcc-16-20250511/gcc/cobol/scan.l	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/scan.l	Sun May 18 22:32:07 2025
*************** BASIS		{ yy_push_state(basis); return BA
*** 2124,2130 ****
  			input_file_status.enter(filename);
  		}
  
!   {POP_FILE} 	{
  			yy_set_bol(true);
  			input_file_status.leave();
  		}
--- 2124,2130 ----
  			input_file_status.enter(filename);
  		}
  
!   {POP_FILE}{OSPC} 	{
  			yy_set_bol(true);
  			input_file_status.leave();
  		}
diff -Nrcpad gcc-16-20250511/gcc/cobol/scan_ante.h gcc-16-20250518/gcc/cobol/scan_ante.h
*** gcc-16-20250511/gcc/cobol/scan_ante.h	Sun May 11 22:32:08 2025
--- gcc-16-20250518/gcc/cobol/scan_ante.h	Sun May 18 22:32:07 2025
*************** class enter_leave_t {
*** 372,378 ****
    enter_leave_t(parser_leave_file_f *leaving)
      : entering(NULL), leaving(leaving), filename(NULL) {}
  
!   void notify() {
      if( entering ) {
        cobol_filename(filename, 0);
        if( yy_flex_debug ) dbgmsg("starting line %4d of %s",
--- 372,378 ----
    enter_leave_t(parser_leave_file_f *leaving)
      : entering(NULL), leaving(leaving), filename(NULL) {}
  
!   void notify( unsigned int newlines = 0 ) {
      if( entering ) {
        cobol_filename(filename, 0);
        if( yy_flex_debug ) dbgmsg("starting line %4d of %s",
*************** class enter_leave_t {
*** 382,387 ****
--- 382,388 ----
      }
      if( leaving ) {
        auto name = cobol_filename_restore();
+       yylineno += newlines;
        if( yy_flex_debug ) dbgmsg("resuming line %4d of %s",
                                   yylineno, name? name : "<none>");
        leaving();
*************** class enter_leave_t {
*** 392,408 ****
  
  static class input_file_status_t {
    std::queue <enter_leave_t> inputs;
   public:
    void enter(const char *filename) {
      inputs.push( enter_leave_t(parser_enter_file, filename) );
    }
    void leave() {
      inputs.push( parser_leave_file );
    }
    void notify() {
      while( ! inputs.empty() ) {
        auto enter_leave = inputs.front();
!       enter_leave.notify();
        inputs.pop();
      }
    }
--- 393,414 ----
  
  static class input_file_status_t {
    std::queue <enter_leave_t> inputs;
+   unsigned int trailing_newlines = 0;
   public:
    void enter(const char *filename) {
      inputs.push( enter_leave_t(parser_enter_file, filename) );
    }
    void leave() {
+     // Add the number of newlines following the POP to yylineno when it's restored. 
+     trailing_newlines = std::count(yytext, yytext + yyleng, '\n');
+     if( trailing_newlines && yy_flex_debug )
+       dbgmsg("adding %u lines after POP", trailing_newlines);
      inputs.push( parser_leave_file );
    }
    void notify() {
      while( ! inputs.empty() ) {
        auto enter_leave = inputs.front();
!       enter_leave.notify(trailing_newlines);
        inputs.pop();
      }
    }
diff -Nrcpad gcc-16-20250511/gcc/cobol/symbols.cc gcc-16-20250518/gcc/cobol/symbols.cc
*** gcc-16-20250511/gcc/cobol/symbols.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/cobol/symbols.cc	Sun May 18 22:32:07 2025
*************** symbol_elem_cmp( const void *K, const vo
*** 487,495 ****
    case SymDataSection:
      return k->elem.section.type == e->elem.section.type ? 0 : 1;
      break;
-   case SymFunction:
-     return strcmp(k->elem.function.name, e->elem.function.name);
-     break;
    case SymField:
      if( has_parent(k) && cbl_field_of(k)->parent != cbl_field_of(e)->parent ) {
        return 1;
--- 487,492 ----
*************** symbols_dump( size_t first, bool header
*** 1065,1074 ****
        s = xasprintf("%4" GCC_PRISZ "u %-18s line %d", (fmt_size_t)e->program,
                      cbl_section_of(e)->name(), cbl_section_of(e)->line);
        break;
-     case SymFunction:
-       s = xasprintf("%4" GCC_PRISZ "u %-15s %s", (fmt_size_t)e->program,
-                     "Function", e->elem.function.name);
-       break;
      case SymField: {
        auto field = cbl_field_of(e);
        char *odo_str = NULL;
--- 1062,1067 ----
*************** symbol_label_add( size_t program, cbl_la
*** 3749,3787 ****
  }
  
  /*
!  * Under ISO (and not IBM) Declaratives are followed by a Section name.  When
!  * the first statement is parsed, verify, if Declaratives were used, that it
   * was preceeded by a Section name.
   */
  bool
! symbol_label_section_exists( size_t program ) {
!   auto pblob = std::find_if( symbols_begin(program), symbols_end(),
!                                []( const auto& sym ) {
!                                  if( sym.type == SymField ) {
!                                    auto& f( sym.elem.field );
!                                    return f.type == FldBlob;
!                                  }
!                                  return false;
!                                } );
!   if( pblob == symbols_end() ) return true; // Section name not required
! 
!   bool has_section = std::any_of( ++pblob, symbols_end(),
!                                []( const auto& sym ) {
!                                  if( sym.type == SymLabel ) {
                                     auto& L(sym.elem.label);
!                                    if( L.type == LblSection ) {
!                                      if( L.name[0] != '_' ) { // not implicit
!                                        return true; // Section name exists
!                                      }
!                                    }
                                   }
                                   return false;
                                 } );
    if( yydebug && ! has_section ) {
!     symbols_dump(program, true);
    }
!   // Return true if no Declaratives, because the (non-)requirement is met.
!   // Return false if Declaratives exist, because no Section name was found.
    return has_section;
  }
  
--- 3742,3768 ----
  }
  
  /*
!  * Under ISO (and not IBM) Declaratives are followed by a Section name.  If
!  * Declaratives were used, when the first statement is parsed verify that it
   * was preceeded by a Section name.
   */
  bool
! symbol_label_section_exists( size_t eval_label_index ) {
!   auto eval = symbols_begin(eval_label_index);
!   bool has_section = std::any_of( ++eval, symbols_end(),
!                                [program = eval->program]( const auto& sym ) {
!                                  if( program == sym.program && sym.type == SymLabel ) {
                                     auto& L(sym.elem.label);
! 				   // true if the symbol is an explicit label.
!                                    return L.type == LblSection &&  L.name[0] != '_'; 
                                   }
                                   return false;
                                 } );
    if( yydebug && ! has_section ) {
!     symbols_dump(eval_label_index, true);
    }
!   // Return true if a user-defined SECTION was found after the Declaratives
!   // label section. 
    return has_section;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/cobol/symbols.h gcc-16-20250518/gcc/cobol/symbols.h
*** gcc-16-20250511/gcc/cobol/symbols.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/cobol/symbols.h	Sun May 18 22:32:07 2025
***************
*** 46,56 ****
  #include <string>
  #include <vector>
  
- // Provide fallback definition.
- #ifndef NAME_MAX
- #define NAME_MAX 255
- #endif
- 
  #define PICTURE_MAX 64
  
  extern const char *numed_message;
--- 46,51 ----
*************** enum cbl_dialect_t {
*** 62,80 ****
    dialect_gnu_e = 0x04,
  };
  
! extern cbl_dialect_t cbl_dialect;
  void cobol_dialect_set( cbl_dialect_t dialect );
- cbl_dialect_t dialect_is();
  
  static inline bool dialect_gcc() {
!   return dialect_gcc_e  == cbl_dialect;
  }
- 
  static inline bool dialect_ibm() {
!   return dialect_ibm_e == (cbl_dialect & dialect_ibm_e);
  }
  static inline bool dialect_mf() {
!   return dialect_mf_e  == (cbl_dialect & dialect_mf_e );
  }
  
  enum cbl_gcobol_feature_t {
--- 57,78 ----
    dialect_gnu_e = 0x04,
  };
  
! // Dialects may be combined. 
! extern unsigned int cbl_dialects;
  void cobol_dialect_set( cbl_dialect_t dialect );
  
+ // GCC dialect means no other dialects
  static inline bool dialect_gcc() {
!   return dialect_gcc_e == cbl_dialects;
  }
  static inline bool dialect_ibm() {
!   return dialect_ibm_e == (cbl_dialects & dialect_ibm_e);
  }
  static inline bool dialect_mf() {
!   return dialect_mf_e  == (cbl_dialects & dialect_mf_e );
! }
! static inline bool dialect_gnu() {
!   return dialect_gnu_e  == (cbl_dialects & dialect_gnu_e );
  }
  
  enum cbl_gcobol_feature_t {
*************** bool decimal_is_comma();
*** 220,226 ****
  
  enum symbol_type_t {
    SymFilename,
-   SymFunction,
    SymField,
    SymLabel,                     // section, paragraph, or label
    SymSpecial,
--- 218,223 ----
*************** struct cbl_alphabet_t {
*** 1475,1488 ****
    }
  };
  
- // a function pointer
- typedef void ( *cbl_function_ptr ) ( void );
- 
- struct cbl_function_t {
-   char name[NAME_MAX];
-   cbl_function_ptr func;
- };
- 
  static inline const char *
  file_org_str( enum cbl_file_org_t org ) {
    switch ( org ) {
--- 1472,1477 ----
*************** struct symbol_elem_t {
*** 1638,1644 ****
    size_t program;
    union symbol_elem_u {
      char *filename;
-     cbl_function_t     function;
      cbl_field_t        field;
      cbl_label_t        label;
      cbl_special_name_t special;
--- 1627,1632 ----
*************** struct symbol_elem_t {
*** 1692,1700 ****
      case SymFilename:
        elem.filename = that.elem.filename;
        break;
-     case SymFunction:
-       elem.function = that.elem.function;
-       break;
      case SymField:
        elem.field = that.elem.field;
        break;
--- 1680,1685 ----
*************** const cbl_label_t * symbol_program_local
*** 1814,1826 ****
  
  bool redefine_field( cbl_field_t *field );
  
- // Functions to correctly extract the underlying type.
- static inline struct cbl_function_t *
- cbl_function_of( struct symbol_elem_t *e ) {
-   assert(e->type == SymFunction);
-   return &e->elem.function;
- }
- 
  static inline struct cbl_section_t *
  cbl_section_of( struct symbol_elem_t *e ) {
    assert(e->type == SymDataSection);
--- 1799,1804 ----
diff -Nrcpad gcc-16-20250511/gcc/cobol/util.cc gcc-16-20250518/gcc/cobol/util.cc
*** gcc-16-20250511/gcc/cobol/util.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/cobol/util.cc	Sun May 18 22:32:07 2025
*************** symbol_type_str( enum symbol_type_t type
*** 100,107 ****
      switch(type) {
      case SymFilename:
          return "SymFilename";
-     case SymFunction:
-         return "SymFunction";
      case SymField:
          return "SymField";
      case SymLabel:
--- 100,105 ----
*************** struct input_file_t {
*** 1764,1770 ****
--- 1762,1782 ----
  
  class unique_stack : public std::stack<input_file_t>
  {
+   friend void cobol_set_pp_option(int opt);
+   bool option_m;
+   std::set<std::string> all_names;
+   
+   const char *
+   no_wd( const char *wd, const char *name ) {
+     int i;
+     for( i=0; wd[i] == name[i]; i++ ) i++;
+     if( wd[i] == '\0' && name[i] == '/' ) i++;
+     return yydebug? name : name + i;
+   }
+ 
   public:
+   unique_stack() : option_m(false) {}
+   
    bool push( const value_type& value ) {
      auto ok = std::none_of( c.cbegin(), c.cend(),
                              [value]( auto& that ) {
*************** class unique_stack : public std::stack<i
*** 1772,1777 ****
--- 1784,1790 ----
                                  } );
      if( ok ) {
        std::stack<input_file_t>::push(value);
+       all_names.insert(value.name);
        return true;
      }
      size_t n = c.size();
*************** class unique_stack : public std::stack<i
*** 1792,1803 ****
      }
      return false;
    }
!   const char *
!   no_wd( const char *wd, const char *name ) {
!     int i;
!     for( i=0; wd[i] == name[i]; i++ ) i++;
!     if( wd[i] == '\0' && name[i] == '/' ) i++;
!     return yydebug? name : name + i;
    }
  };
  
--- 1805,1827 ----
      }
      return false;
    }
!   
!   void option( int opt ) { // capture other preprocessor options eventually
!     assert(opt == 'M');
!     option_m = true;
!   }
!   int option() const {
!     return option_m?  'M' : 0;
!   }
! 
!   void print() const {
!     std::string input( top().name );
!     printf( "%s: ", input.c_str() );
!     for( auto name : all_names ) {
!       if( name != input ) 
! 	printf( "\\\n\t%s ", name.c_str() );
!     }
!     printf("\n");
    }
  };
  
*************** static unique_stack input_filenames;
*** 1806,1811 ****
--- 1830,1841 ----
  static std::map<std::string, ino_t> old_filenames;
  static const unsigned int sysp = 0;  // not a C header file, cf. line-map.h
  
+ void cobol_set_pp_option(int opt) {
+   // capture other preprocessor options eventually
+   assert(opt == 'M');
+   input_filenames.option_m = true;
+ }
+ 				  
  /*
   * Maintain a stack of input filenames.  Ensure the files are unique (by
   * inode), to prevent copybook cycles. Before pushing a new name, Record the
*************** parse_file( const char filename[] )
*** 2137,2142 ****
--- 2167,2177 ----
  
    parser_enter_file(filename);
  
+   if( input_filenames.option() == 'M' ) {
+     input_filenames.print();
+     return 0;
+   }
+ 
    cbl_timespec start;
  
    int erc = yyparse();
diff -Nrcpad gcc-16-20250511/gcc/cobol/util.h gcc-16-20250518/gcc/cobol/util.h
*** gcc-16-20250511/gcc/cobol/util.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/cobol/util.h	Sun May 18 22:32:07 2025
*************** int  ftolower(int c);
*** 43,48 ****
--- 43,50 ----
  int  ftoupper(int c);
  bool fisprint(int c);
  
+ void cobol_set_pp_option(int opt);
+ 
  const char * cobol_filename_restore();
  const char * cobol_lineno_save();
  
diff -Nrcpad gcc-16-20250511/gcc/common/config/riscv/riscv-common.cc gcc-16-20250518/gcc/common/config/riscv/riscv-common.cc
*** gcc-16-20250511/gcc/common/config/riscv/riscv-common.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/common/config/riscv/riscv-common.cc	Sun May 18 22:32:07 2025
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  
  #include <sstream>
  #include <vector>
+ #include <unordered_map>
  #include <queue>
  
  #define INCLUDE_STRING
*************** along with GCC; see the file COPYING3.
*** 41,268 ****
  #define TARGET_DEFAULT_TARGET_FLAGS (MASK_BIG_ENDIAN)
  #endif
  
  typedef bool (*riscv_implied_predicator_t) (const riscv_subset_list *);
  
  /* Type for implied ISA info.  */
  struct riscv_implied_info_t
  {
!   constexpr riscv_implied_info_t (const char *ext, const char *implied_ext,
  				  riscv_implied_predicator_t predicator
  				  = nullptr)
!     : ext (ext), implied_ext (implied_ext), predicator (predicator){};
  
!   bool match (const riscv_subset_list *subset_list, const char *ext_name) const
    {
-     if (strcmp (ext_name, ext) != 0)
-       return false;
- 
      if (predicator && !predicator (subset_list))
        return false;
  
      return true;
    }
  
-   bool match (const riscv_subset_list *subset_list,
- 	      const riscv_subset_t *subset) const
-   {
-     return match (subset_list, subset->name.c_str());
-   }
- 
-   const char *ext;
    const char *implied_ext;
    riscv_implied_predicator_t predicator;
  };
  
! /* Implied ISA info, must end with NULL sentinel.  */
! static const riscv_implied_info_t riscv_implied_info[] =
! {
!   {"m", "zmmul"},
! 
!   {"d", "f"},
!   {"f", "zicsr"},
!   {"d", "zicsr"},
! 
!   {"a", "zaamo"},
!   {"a", "zalrsc"},
! 
!   {"c", "zca"},
!   {"c", "zcf",
!    [] (const riscv_subset_list *subset_list) -> bool
!    {
!      return subset_list->xlen () == 32 && subset_list->lookup ("f");
!    }},
!   {"c", "zcd",
!    [] (const riscv_subset_list *subset_list) -> bool
!    {
!      return subset_list->lookup ("d");
!    }},
! 
!   {"zabha", "zaamo"},
!   {"zacas", "zaamo"},
!   {"zawrs", "zalrsc"},
! 
!   {"zcmop", "zca"},
! 
!   {"b", "zba"},
!   {"b", "zbb"},
!   {"b", "zbs"},
! 
!   {"zdinx", "zfinx"},
!   {"zfinx", "zicsr"},
!   {"zdinx", "zicsr"},
! 
!   {"zicfiss", "zicsr"},
!   {"zicfiss", "zimop"},
!   {"zicfilp", "zicsr"},
! 
!   {"zk", "zkn"},
!   {"zk", "zkr"},
!   {"zk", "zkt"},
!   {"zkn", "zbkb"},
!   {"zkn", "zbkc"},
!   {"zkn", "zbkx"},
!   {"zkn", "zkne"},
!   {"zkn", "zknd"},
!   {"zkn", "zknh"},
!   {"zks", "zbkb"},
!   {"zks", "zbkc"},
!   {"zks", "zbkx"},
!   {"zks", "zksed"},
!   {"zks", "zksh"},
! 
!   {"v", "zvl128b"},
!   {"v", "zve64d"},
! 
!   {"zve32f", "f"},
!   {"zve64f", "f"},
!   {"zve64d", "d"},
  
!   {"zve32x", "zicsr"},
!   {"zve32x", "zvl32b"},
!   {"zve32f", "zve32x"},
!   {"zve32f", "zvl32b"},
  
!   {"zve64x", "zve32x"},
!   {"zve64x", "zvl64b"},
!   {"zve64f", "zve32f"},
!   {"zve64f", "zve64x"},
!   {"zve64f", "zvl64b"},
!   {"zve64d", "zve64f"},
!   {"zve64d", "zvl64b"},
  
!   {"zvl64b", "zvl32b"},
!   {"zvl128b", "zvl64b"},
!   {"zvl256b", "zvl128b"},
!   {"zvl512b", "zvl256b"},
!   {"zvl1024b", "zvl512b"},
!   {"zvl2048b", "zvl1024b"},
!   {"zvl4096b", "zvl2048b"},
!   {"zvl8192b", "zvl4096b"},
!   {"zvl16384b", "zvl8192b"},
!   {"zvl32768b", "zvl16384b"},
!   {"zvl65536b", "zvl32768b"},
  
!   {"zvkn", "zvkned"},
!   {"zvkn", "zvknhb"},
!   {"zvkn", "zvkb"},
!   {"zvkn", "zvkt"},
!   {"zvknc", "zvkn"},
!   {"zvknc", "zvbc"},
!   {"zvkng", "zvkn"},
!   {"zvkng", "zvkg"},
!   {"zvks", "zvksed"},
!   {"zvks", "zvksh"},
!   {"zvks", "zvkb"},
!   {"zvks", "zvkt"},
!   {"zvksc", "zvks"},
!   {"zvksc", "zvbc"},
!   {"zvksg", "zvks"},
!   {"zvksg", "zvkg"},
!   {"zvbb",  "zvkb"},
!   {"zvbc",   "zve64x"},
!   {"zvkb",   "zve32x"},
!   {"zvkg",   "zve32x"},
!   {"zvkned", "zve32x"},
!   {"zvknha", "zve32x"},
!   {"zvknhb", "zve64x"},
!   {"zvksed", "zve32x"},
!   {"zvksh",  "zve32x"},
  
!   {"zfbfmin", "zfhmin"},
!   {"zfh", "zfhmin"},
!   {"zfhmin", "f"},
  
!   {"zfa", "f"},
  
!   {"zvfbfmin", "zve32f"},
!   {"zvfbfwma", "zvfbfmin"},
!   {"zvfbfwma", "zfbfmin"},
!   {"zvfhmin", "zve32f"},
!   {"zvfh", "zve32f"},
!   {"zvfh", "zfhmin"},
  
!   {"zhinx", "zhinxmin"},
!   {"zhinxmin", "zfinx"},
  
!   {"zce",  "zca"},
!   {"zce",  "zcb"},
!   {"zce",  "zcmp"},
!   {"zce",  "zcmt"},
!   {"zcf",  "zca"},
!   {"zcd",  "zca"},
!   {"zcb",  "zca"},
!   {"zcmp", "zca"},
!   {"zcmt", "zca"},
!   {"zcmt", "zicsr"},
!   {"zce", "zcf",
!    [] (const riscv_subset_list *subset_list) -> bool
!    {
!      return subset_list->xlen () == 32 && subset_list->lookup ("f");
!    }},
!   {"zca", "c",
!    [] (const riscv_subset_list *subset_list) -> bool
!    {
!      /* For RV32 Zca implies C for one of these combinations of
! 	extensions: Zca, F_Zca_Zcf and FD_Zca_Zcf_Zcd.  */
!      if (subset_list->xlen () == 32)
!        {
! 	 if (subset_list->lookup ("d"))
! 	   return subset_list->lookup ("zcf") && subset_list->lookup ("zcd");
  
! 	 if (subset_list->lookup ("f"))
! 	   return subset_list->lookup ("zcf");
  
! 	 return true;
!        }
  
!      /* For RV64 Zca implies C for one of these combinations of
! 	extensions: Zca and FD_Zca_Zcd (Zcf is not available
! 	for RV64).  */
!      if (subset_list->xlen () == 64)
!        {
! 	 if (subset_list->lookup ("d"))
! 	   return subset_list->lookup ("zcd");
  
! 	 return true;
!        }
  
!      /* Do nothing for future RV128 specification. Behaviour
! 	for this case is not yet well defined.  */
!      return false;
!    }},
  
!   {"smaia", "ssaia"},
!   {"smstateen", "ssstateen"},
!   {"smepmp", "zicsr"},
!   {"ssaia", "zicsr"},
!   {"sscofpmf", "zicsr"},
!   {"ssstateen", "zicsr"},
!   {"sstc", "zicsr"},
  
!   {"xsfvcp", "zve32x"},
  
!   {NULL, NULL}
! };
  
  /* This structure holds version information for specific ISA version.  */
  
--- 42,256 ----
  #define TARGET_DEFAULT_TARGET_FLAGS (MASK_BIG_ENDIAN)
  #endif
  
+ /* Type for pointer to member of gcc_options and cl_target_option.  */
+ typedef int (gcc_options::*opt_var_ref_t);
+ typedef int (cl_target_option::*cl_opt_var_ref_t);
+ 
+ /* Types for recording extension to internal flag.  */
+ struct riscv_extra_ext_flag_table_t
+ {
+   const char *ext;
+   opt_var_ref_t var_ref;
+   cl_opt_var_ref_t cl_var_ref;
+   int mask;
+ };
+ 
+ /* Types for recording extension to internal flag.  */
+ struct riscv_ext_flag_table_t
+ {
+   opt_var_ref_t var_ref;
+   cl_opt_var_ref_t cl_var_ref;
+   int mask;
+ 
+   void clean (gcc_options *opts) const { opts->*var_ref &= ~mask; }
+ 
+   void set (gcc_options *opts) const { opts->*var_ref |= mask; }
+ 
+   bool check (cl_target_option *opts) const
+   {
+     return (opts->*cl_var_ref & mask);
+   }
+ };
+ 
+ /* Type for hold RISC-V extension version.  */
+ struct riscv_version_t
+ {
+   riscv_version_t (int major_version, int minor_version,
+ 		   enum riscv_isa_spec_class isa_spec_class
+ 		   = ISA_SPEC_CLASS_NONE)
+     : major_version (major_version), minor_version (minor_version),
+       isa_spec_class (isa_spec_class)
+   {}
+   int major_version;
+   int minor_version;
+   enum riscv_isa_spec_class isa_spec_class;
+ };
+ 
  typedef bool (*riscv_implied_predicator_t) (const riscv_subset_list *);
  
  /* Type for implied ISA info.  */
  struct riscv_implied_info_t
  {
!   constexpr riscv_implied_info_t (const char *implied_ext,
  				  riscv_implied_predicator_t predicator
  				  = nullptr)
!     : implied_ext (implied_ext), predicator (predicator)
!   {}
  
!   bool match (const riscv_subset_list *subset_list) const
    {
      if (predicator && !predicator (subset_list))
        return false;
  
      return true;
    }
  
    const char *implied_ext;
    riscv_implied_predicator_t predicator;
  };
  
! static void
! apply_extra_extension_flags (const char *ext,
! 			     std::vector<riscv_ext_flag_table_t> &flag_table);
  
! /* Class for hold the extension info.  */
! class riscv_ext_info_t
! {
! public:
!   riscv_ext_info_t (const char *ext,
! 		    const std::vector<riscv_implied_info_t> &implied_exts,
! 		    const std::vector<riscv_version_t> &supported_versions,
! 		    const std::vector<riscv_ext_flag_table_t> &flag_table,
! 		    int bitmask_group_id, int bitmask_group_bit_pos,
! 		    unsigned extra_extension_flags)
!     : m_ext (ext), m_implied_exts (implied_exts),
!       m_supported_versions (supported_versions), m_flag_table (flag_table),
!       m_bitmask_group_id (bitmask_group_id),
!       m_bitmask_group_bit_pos (bitmask_group_bit_pos),
!       m_extra_extension_flags (extra_extension_flags)
!   {
!     apply_extra_extension_flags (ext, m_flag_table);
!   }
  
!   /* Return true if any change.  */
!   bool apply_implied_ext (riscv_subset_list *subset_list) const;
  
!   const std::vector<riscv_implied_info_t> implied_exts () const
!   {
!     return m_implied_exts;
!   }
  
!   bool need_combine_p () const
!   {
!      return m_extra_extension_flags & EXT_FLAG_MACRO;
!   }
  
!   riscv_version_t default_version () const
!   {
!     if (m_supported_versions.size () == 1)
!       {
! 	return *m_supported_versions.begin ();
!       }
  
!     for (const riscv_version_t &ver : m_supported_versions)
!       {
! 	if (ver.isa_spec_class == riscv_isa_spec
! 	    || ver.isa_spec_class == ISA_SPEC_CLASS_NONE)
! 	  return ver;
!       }
!     gcc_unreachable ();
!   }
  
!   void clean_opts (gcc_options *opts) const
!   {
!     for (auto &flag : m_flag_table)
!       flag.clean (opts);
!   }
  
!   void set_opts (gcc_options *opts) const
!   {
!     for (auto &flag : m_flag_table)
!       flag.set (opts);
!   }
  
!   bool check_opts (cl_target_option *opts) const
!   {
!     bool result = true;
!     for (auto &flag : m_flag_table)
!       result = result && flag.check (opts);
!     return result;
!   }
  
!   const std::vector<riscv_version_t> &supported_versions () const
!   {
!     return m_supported_versions;
!   }
  
! private:
!   const char *m_ext;
!   std::vector<riscv_implied_info_t> m_implied_exts;
!   std::vector<riscv_version_t> m_supported_versions;
!   std::vector<riscv_ext_flag_table_t> m_flag_table;
!   int m_bitmask_group_id;
!   int m_bitmask_group_bit_pos;
!   unsigned m_extra_extension_flags;
! };
  
! static const std::unordered_map<std::string, riscv_ext_info_t> riscv_ext_infos
!   = {
! #define DEFINE_RISCV_EXT(NAME, UPPERCAE_NAME, FULL_NAME, DESC, URL, DEP_EXTS,  \
! 			 SUPPORTED_VERSIONS, FLAG_GROUP, BITMASK_GROUP_ID,     \
! 			 BITMASK_BIT_POSITION, EXTRA_EXTENSION_FLAGS)          \
!   {std::string (#NAME),                                                        \
!    riscv_ext_info_t (#NAME, std::vector<riscv_implied_info_t> DEP_EXTS,        \
! 		     std::vector<riscv_version_t> SUPPORTED_VERSIONS,          \
! 		     std::vector<riscv_ext_flag_table_t> (                     \
! 		       {{&gcc_options::x_riscv_##FLAG_GROUP##_subext,          \
! 			 &cl_target_option::x_riscv_##FLAG_GROUP##_subext,     \
! 			 MASK_##UPPERCAE_NAME}}),                              \
! 		     BITMASK_GROUP_ID, BITMASK_BIT_POSITION,                   \
! 		     EXTRA_EXTENSION_FLAGS)},
! #include "../../../config/riscv/riscv-ext.def"
! #undef DEFINE_RISCV_EXT
! };
  
! static const riscv_ext_info_t &
! get_riscv_ext_info (const std::string &ext)
! {
!   auto itr = riscv_ext_infos.find (ext);
!   if (itr == riscv_ext_infos.end ())
!     {
!       gcc_unreachable ();
!     }
!   return itr->second;
! }
  
! /* Return true if any change.  */
! bool
! riscv_ext_info_t::apply_implied_ext (riscv_subset_list *subset_list) const
! {
!   bool any_change = false;
!   for (const riscv_implied_info_t &implied_info : m_implied_exts)
!     {
!       /* Skip if implied extension already present.  */
!       if (subset_list->lookup (implied_info.implied_ext))
! 	continue;
  
!       any_change = true;
!       if (!implied_info.match (subset_list))
! 	continue;
  
!       /* Version of implied extension will get from current ISA spec
! 	 version.  */
!       subset_list->add (implied_info.implied_ext, true);
  
!       /* Recursively add implied extension by implied_info->implied_ext.  */
!       const riscv_ext_info_t &implied_ext_info
! 	= get_riscv_ext_info (implied_info.implied_ext);
!       implied_ext_info.apply_implied_ext (subset_list);
!     }
!   return any_change;
! }
  
  /* This structure holds version information for specific ISA version.  */
  
*************** struct riscv_profiles
*** 280,513 ****
    const char *profile_string;
  };
  
- /* All standard extensions defined in all supported ISA spec.  */
- static const struct riscv_ext_version riscv_ext_version_table[] =
- {
-   /* name, ISA spec, major version, minor_version.  */
-   {"e", ISA_SPEC_CLASS_20191213, 2, 0},
-   {"e", ISA_SPEC_CLASS_20190608, 2, 0},
-   {"e", ISA_SPEC_CLASS_2P2,      2, 0},
- 
-   {"i", ISA_SPEC_CLASS_20191213, 2, 1},
-   {"i", ISA_SPEC_CLASS_20190608, 2, 1},
-   {"i", ISA_SPEC_CLASS_2P2,      2, 0},
- 
-   {"m", ISA_SPEC_CLASS_20191213, 2, 0},
-   {"m", ISA_SPEC_CLASS_20190608, 2, 0},
-   {"m", ISA_SPEC_CLASS_2P2,      2, 0},
- 
-   {"a", ISA_SPEC_CLASS_20191213, 2, 1},
-   {"a", ISA_SPEC_CLASS_20190608, 2, 0},
-   {"a", ISA_SPEC_CLASS_2P2,      2, 0},
- 
-   {"f", ISA_SPEC_CLASS_20191213, 2, 2},
-   {"f", ISA_SPEC_CLASS_20190608, 2, 2},
-   {"f", ISA_SPEC_CLASS_2P2,      2, 0},
- 
-   {"d", ISA_SPEC_CLASS_20191213, 2, 2},
-   {"d", ISA_SPEC_CLASS_20190608, 2, 2},
-   {"d", ISA_SPEC_CLASS_2P2,      2, 0},
- 
-   {"c", ISA_SPEC_CLASS_20191213, 2, 0},
-   {"c", ISA_SPEC_CLASS_20190608, 2, 0},
-   {"c", ISA_SPEC_CLASS_2P2,      2, 0},
- 
-   {"b",       ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"h",       ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"v",       ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zicsr", ISA_SPEC_CLASS_20191213, 2, 0},
-   {"zicsr", ISA_SPEC_CLASS_20190608, 2, 0},
- 
-   {"zifencei", ISA_SPEC_CLASS_20191213, 2, 0},
-   {"zifencei", ISA_SPEC_CLASS_20190608, 2, 0},
- 
-   {"zicond", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"za64rs",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"za128rs", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zawrs", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zaamo", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zalrsc", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zabha", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zacas", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zama16b", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zba", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zbb", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zbc", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zbs", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zfinx", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zdinx", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zhinx", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zhinxmin", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zbkb",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zbkc",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zbkx",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zkne",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zknd",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zknh",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zkr",   ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zksed", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zksh",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zkt",   ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zihintntl", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zihintpause", ISA_SPEC_CLASS_NONE, 2, 0},
- 
-   {"zicboz",ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zicbom",ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zicbop",ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zic64b",   ISA_SPEC_CLASS_NONE, 1, 0},
-   {"ziccamoa", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"ziccif",   ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zicclsm",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"ziccrse",  ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zicfiss", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zicfilp", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zimop", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zcmop", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zicntr", ISA_SPEC_CLASS_NONE, 2, 0},
-   {"zihpm",  ISA_SPEC_CLASS_NONE, 2, 0},
- 
-   {"zk",    ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zkn",   ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zks",   ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"ztso",  ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zve32x", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zve32f", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zve64x", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zve64f", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zve64d", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zvbb", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvbc", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvkb", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvkg", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvkned", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvknha", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvknhb", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvksed", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvksh", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvkn", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvknc", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvkng", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvks", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvksc", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvksg", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvkt", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zvl32b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl64b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl128b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl256b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl512b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl1024b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl2048b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl4096b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl8192b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl16384b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl32768b", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvl65536b", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zfbfmin",   ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zfh",       ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zfhmin",    ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvfbfmin",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvfbfwma",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvfhmin",   ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvfh",      ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zfa",     ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zmmul", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"zca",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zcb",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zce",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zcf",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zcd",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zcmp", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zcmt", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"sdtrig",  ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"smaia",     ISA_SPEC_CLASS_NONE, 1, 0},
-   {"smepmp",    ISA_SPEC_CLASS_NONE, 1, 0},
-   {"smstateen", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"ssaia",     ISA_SPEC_CLASS_NONE, 1, 0},
-   {"sscofpmf",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"ssstateen", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"sstc",      ISA_SPEC_CLASS_NONE, 1, 0},
-   {"ssstrict",  ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"svade",   ISA_SPEC_CLASS_NONE, 1, 0},
-   {"svadu",   ISA_SPEC_CLASS_NONE, 1, 0},
-   {"svinval", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"svnapot", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"svpbmt",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"svvptc",  ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"xcvmac", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xcvalu", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xcvelw", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xcvsimd", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xcvbi", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"xtheadba", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadbb", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadbs", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadcmo", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadcondmov", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadfmemidx", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadfmv", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadint", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadmac", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadmemidx", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadmempair", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadsync", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xtheadvector", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"xventanacondops", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   {"xsfvcp",   ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xsfcease", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xsfvqmaccqoq",    ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xsfvqmaccdod",    ISA_SPEC_CLASS_NONE, 1, 0},
-   {"xsfvfnrclipxfqf", ISA_SPEC_CLASS_NONE, 1, 0},
- 
-   /* Terminate the list.  */
-   {NULL, ISA_SPEC_CLASS_NONE, 0, 0}
- };
- 
- /* Combine extensions defined in this table  */
- static const struct riscv_ext_version riscv_combine_info[] =
- {
-   {"a", ISA_SPEC_CLASS_20191213, 2, 1},
-   {"b",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zk",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zkn",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zks",  ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvkn", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvknc", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvkng", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvks", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvksc", ISA_SPEC_CLASS_NONE, 1, 0},
-   {"zvksg", ISA_SPEC_CLASS_NONE, 1, 0},
-   /* Terminate the list.  */
-   {NULL, ISA_SPEC_CLASS_NONE, 0, 0}
- };
- 
  /* This table records the mapping form RISC-V Profiles into march string.  */
  static const riscv_profiles riscv_profiles_table[] =
  {
--- 268,273 ----
*************** riscv_subset_t::riscv_subset_t ()
*** 604,610 ****
  
  riscv_subset_list::riscv_subset_list (const char *arch, location_t loc)
    : m_arch (arch), m_loc (loc), m_head (NULL), m_tail (NULL), m_xlen (0),
!     m_subset_num (0)
  {
  }
  
--- 364,370 ----
  
  riscv_subset_list::riscv_subset_list (const char *arch, location_t loc)
    : m_arch (arch), m_loc (loc), m_head (NULL), m_tail (NULL), m_xlen (0),
!     m_subset_num (0), m_allow_adding_dup (false)
  {
  }
  
*************** subset_cmp (const std::string &a, const
*** 782,792 ****
  static bool
  standard_extensions_p (const char *ext)
  {
!   const riscv_ext_version *ext_ver;
!   for (ext_ver = &riscv_ext_version_table[0]; ext_ver->name != NULL; ++ext_ver)
!     if (strcmp (ext, ext_ver->name) == 0)
!       return true;
!   return false;
  }
  
  /* Add new subset to list.  */
--- 542,549 ----
  static bool
  standard_extensions_p (const char *ext)
  {
!   auto itr = riscv_ext_infos.find (ext);
!   return itr != riscv_ext_infos.end ();
  }
  
  /* Add new subset to list.  */
*************** get_default_version (const char *ext,
*** 916,939 ****
  		     unsigned int *major_version,
  		     unsigned int *minor_version)
  {
!   const riscv_ext_version *ext_ver;
!   for (ext_ver = &riscv_ext_version_table[0];
!        ext_ver->name != NULL;
!        ++ext_ver)
!     if (strcmp (ext, ext_ver->name) == 0)
!       {
! 	if ((ext_ver->isa_spec_class == riscv_isa_spec) ||
! 	    (ext_ver->isa_spec_class == ISA_SPEC_CLASS_NONE))
! 	  {
! 	    *major_version = ext_ver->major_version;
! 	    *minor_version = ext_ver->minor_version;
! 	    return;
! 	  }
!       }
  
!   /* Not found version info.  */
!   *major_version = 0;
!   *minor_version = 0;
  }
  
  /* Add new subset to list, but using default version from ISA spec version.  */
--- 673,691 ----
  		     unsigned int *major_version,
  		     unsigned int *minor_version)
  {
!   auto itr = riscv_ext_infos.find (ext);
!   if (itr == riscv_ext_infos.end ())
!     {
!       /* Not found version info.  */
!       *major_version = 0;
!       *minor_version = 0;
!       return;
!     }
  
!   riscv_version_t ver = itr->second.default_version ();
!   /* Get the version info from riscv_ext_infos.  */
!   *major_version = ver.major_version;
!   *minor_version = ver.minor_version;
  }
  
  /* Add new subset to list, but using default version from ISA spec version.  */
*************** riscv_subset_list::parse_single_std_ext
*** 1337,1361 ****
  void
  riscv_subset_list::handle_implied_ext (const char *ext)
  {
!   const riscv_implied_info_t *implied_info;
!   for (implied_info = &riscv_implied_info[0];
!        implied_info->ext;
!        ++implied_info)
!     {
!       if (!implied_info->match (this, ext))
! 	continue;
! 
!       /* Skip if implied extension already present.  */
!       if (lookup (implied_info->implied_ext))
! 	continue;
! 
!       /* Version of implied extension will get from current ISA spec
! 	 version.  */
!       add (implied_info->implied_ext, true);
! 
!       /* Recursively add implied extension by implied_info->implied_ext.  */
!       handle_implied_ext (implied_info->implied_ext);
!     }
  
    /* For RISC-V ISA version 2.2 or earlier version, zicsr and zifence is
       included in the base ISA.  */
--- 1089,1096 ----
  void
  riscv_subset_list::handle_implied_ext (const char *ext)
  {
!   const riscv_ext_info_t &ext_info = get_riscv_ext_info (ext);
!   ext_info.apply_implied_ext (this);
  
    /* For RISC-V ISA version 2.2 or earlier version, zicsr and zifence is
       included in the base ISA.  */
*************** riscv_subset_list::check_implied_ext ()
*** 1376,1389 ****
    riscv_subset_t *itr;
    for (itr = m_head; itr != NULL; itr = itr->next)
      {
!       const riscv_implied_info_t *implied_info;
!       for (implied_info = &riscv_implied_info[0]; implied_info->ext;
! 	   ++implied_info)
  	{
! 	  if (!implied_info->match (this, itr))
  	    continue;
! 
! 	  if (!lookup (implied_info->implied_ext))
  	    return false;
  	}
      }
--- 1111,1123 ----
    riscv_subset_t *itr;
    for (itr = m_head; itr != NULL; itr = itr->next)
      {
!       auto &ext = *itr;
!       auto &ext_info = get_riscv_ext_info (ext.name);
!       for (auto &implied_ext : ext_info.implied_exts ())
  	{
! 	  if (!implied_ext.match (this))
  	    continue;
! 	  if (lookup (implied_ext.implied_ext) == NULL)
  	    return false;
  	}
      }
*************** riscv_subset_list::check_implied_ext ()
*** 1394,1420 ****
  void
  riscv_subset_list::handle_combine_ext ()
  {
!   const riscv_ext_version *combine_info;
!   const riscv_implied_info_t *implied_info;
!   bool is_combined = false;
! 
!   for (combine_info = &riscv_combine_info[0]; combine_info->name;
!        ++combine_info)
      {
!       /* Skip if combine extensions are present */
!       if (lookup (combine_info->name))
  	continue;
  
!       /* Find all extensions of the combine extension   */
!       for (implied_info = &riscv_implied_info[0]; implied_info->ext;
! 	   ++implied_info)
  	{
! 	  if (!implied_info->match (this, combine_info->name))
  	    continue;
  
! 	  if (lookup (implied_info->implied_ext))
! 	    is_combined = true;
! 	  else
  	    {
  	      is_combined = false;
  	      break;
--- 1128,1150 ----
  void
  riscv_subset_list::handle_combine_ext ()
  {
!   for (const auto &[ext_name, ext_info] : riscv_ext_infos)
      {
!       bool is_combined = true;
!       /* Skip if this extension don't need to combine.  */
!       if (!ext_info.need_combine_p ())
! 	continue;
!       /* Skip if combine extensions are present.  */
!       if (lookup (ext_name.c_str ()))
  	continue;
  
!       /* Check all implied extensions is present.  */
!       for (const auto &implied_ext : ext_info.implied_exts ())
  	{
! 	  if (!implied_ext.match (this))
  	    continue;
  
! 	  if (!lookup (implied_ext.implied_ext))
  	    {
  	      is_combined = false;
  	      break;
*************** riscv_subset_list::handle_combine_ext ()
*** 1424,1434 ****
        /* Add combine extensions */
        if (is_combined)
  	{
! 	  if (lookup (combine_info->name) == NULL)
! 	    {
! 	      add (combine_info->name, combine_info->major_version,
! 		   combine_info->minor_version, false, true);
! 	    }
  	}
      }
  }
--- 1154,1162 ----
        /* Add combine extensions */
        if (is_combined)
  	{
! 	  riscv_version_t ver = ext_info.default_version();
! 	  add (ext_name.c_str (), ver.major_version,
! 	       ver.minor_version, false, true);
  	}
      }
  }
*************** riscv_subset_list::check_conflict_ext ()
*** 1439,1444 ****
--- 1167,1200 ----
    if (lookup ("zcf") && m_xlen == 64)
      error_at (m_loc, "%<-march=%s%>: zcf extension supports in rv32 only",
  	      m_arch);
+   
+   if (lookup ("zilsd") && m_xlen == 64)
+     error_at (m_loc, "%<-march=%s%>: zilsd extension supports in rv32 only",
+ 	      m_arch);
+ 
+   if (lookup ("zclsd") && m_xlen == 64)
+     error_at (m_loc, "%<-march=%s%>: zclsd extension supports in rv32 only",
+ 	      m_arch);
+ 
+   if (lookup ("ssnpm") && m_xlen == 32)
+     error_at (m_loc, "%<-march=%s%>: ssnpm extension supports in rv64 only",
+ 	      m_arch);
+ 
+   if (lookup ("smnpm") && m_xlen == 32)
+     error_at (m_loc, "%<-march=%s%>: smnpm extension supports in rv64 only",
+ 	      m_arch);
+ 
+   if (lookup ("smmpm") && m_xlen == 32)
+     error_at (m_loc, "%<-march=%s%>: smmpm extension supports in rv64 only",
+ 	      m_arch);
+ 
+   if (lookup ("sspm") && m_xlen == 32)
+     error_at (m_loc, "%<-march=%s%>: sspm extension supports in rv64 only",
+ 	      m_arch);
+ 
+   if (lookup ("supm") && m_xlen == 32)
+     error_at (m_loc, "%<-march=%s%>: supm extension supports in rv64 only",
+ 	      m_arch);
  
    if (lookup ("zfinx") && lookup ("f"))
      error_at (m_loc,
*************** riscv_arch_str (bool version_p)
*** 1715,1804 ****
      return std::string();
  }
  
- /* Type for pointer to member of gcc_options and cl_target_option.  */
- typedef int (gcc_options::*opt_var_ref_t);
- typedef int (cl_target_option::*cl_opt_var_ref_t);
- 
- /* Types for recording extension to internal flag.  */
- struct riscv_ext_flag_table_t {
-   const char *ext;
-   opt_var_ref_t var_ref;
-   cl_opt_var_ref_t cl_var_ref;
-   int mask;
- };
- 
  #define RISCV_EXT_FLAG_ENTRY(NAME, VAR, MASK) \
    {NAME, &gcc_options::VAR, &cl_target_option::VAR, MASK}
  
! /* Mapping table between extension to internal flag.  */
! static const riscv_ext_flag_table_t riscv_ext_flag_table[] =
  {
!   RISCV_EXT_FLAG_ENTRY ("e", x_target_flags, MASK_RVE),
!   RISCV_EXT_FLAG_ENTRY ("m", x_target_flags, MASK_MUL),
!   RISCV_EXT_FLAG_ENTRY ("a", x_target_flags, MASK_ATOMIC),
!   RISCV_EXT_FLAG_ENTRY ("f", x_target_flags, MASK_HARD_FLOAT),
!   RISCV_EXT_FLAG_ENTRY ("d", x_target_flags, MASK_DOUBLE_FLOAT),
!   RISCV_EXT_FLAG_ENTRY ("c", x_target_flags, MASK_RVC),
!   RISCV_EXT_FLAG_ENTRY ("v", x_target_flags, MASK_FULL_V),
!   RISCV_EXT_FLAG_ENTRY ("v", x_target_flags, MASK_VECTOR),
! 
!   RISCV_EXT_FLAG_ENTRY ("zicsr",    x_riscv_zi_subext, MASK_ZICSR),
!   RISCV_EXT_FLAG_ENTRY ("zifencei", x_riscv_zi_subext, MASK_ZIFENCEI),
!   RISCV_EXT_FLAG_ENTRY ("zicond",   x_riscv_zi_subext, MASK_ZICOND),
! 
!   RISCV_EXT_FLAG_ENTRY ("za64rs",  x_riscv_za_subext, MASK_ZA64RS),
!   RISCV_EXT_FLAG_ENTRY ("za128rs", x_riscv_za_subext, MASK_ZA128RS),
!   RISCV_EXT_FLAG_ENTRY ("zawrs",   x_riscv_za_subext, MASK_ZAWRS),
!   RISCV_EXT_FLAG_ENTRY ("zaamo",   x_riscv_za_subext, MASK_ZAAMO),
!   RISCV_EXT_FLAG_ENTRY ("zalrsc",  x_riscv_za_subext, MASK_ZALRSC),
!   RISCV_EXT_FLAG_ENTRY ("zabha",   x_riscv_za_subext, MASK_ZABHA),
!   RISCV_EXT_FLAG_ENTRY ("zacas",   x_riscv_za_subext, MASK_ZACAS),
!   RISCV_EXT_FLAG_ENTRY ("zama16b", x_riscv_za_subext, MASK_ZAMA16B),
! 
!   RISCV_EXT_FLAG_ENTRY ("zba", x_riscv_zb_subext, MASK_ZBA),
!   RISCV_EXT_FLAG_ENTRY ("zbb", x_riscv_zb_subext, MASK_ZBB),
!   RISCV_EXT_FLAG_ENTRY ("zbc", x_riscv_zb_subext, MASK_ZBC),
!   RISCV_EXT_FLAG_ENTRY ("zbs", x_riscv_zb_subext, MASK_ZBS),
! 
!   RISCV_EXT_FLAG_ENTRY ("zfinx",    x_riscv_zinx_subext, MASK_ZFINX),
!   RISCV_EXT_FLAG_ENTRY ("zdinx",    x_riscv_zinx_subext, MASK_ZDINX),
!   RISCV_EXT_FLAG_ENTRY ("zhinx",    x_riscv_zinx_subext, MASK_ZHINX),
!   RISCV_EXT_FLAG_ENTRY ("zhinxmin", x_riscv_zinx_subext, MASK_ZHINXMIN),
! 
!   RISCV_EXT_FLAG_ENTRY ("zbkb",  x_riscv_zk_subext, MASK_ZBKB),
!   RISCV_EXT_FLAG_ENTRY ("zbkc",  x_riscv_zk_subext, MASK_ZBKC),
!   RISCV_EXT_FLAG_ENTRY ("zbkx",  x_riscv_zk_subext, MASK_ZBKX),
!   RISCV_EXT_FLAG_ENTRY ("zknd",  x_riscv_zk_subext, MASK_ZKND),
!   RISCV_EXT_FLAG_ENTRY ("zkne",  x_riscv_zk_subext, MASK_ZKNE),
!   RISCV_EXT_FLAG_ENTRY ("zknh",  x_riscv_zk_subext, MASK_ZKNH),
!   RISCV_EXT_FLAG_ENTRY ("zkr",   x_riscv_zk_subext, MASK_ZKR),
!   RISCV_EXT_FLAG_ENTRY ("zksed", x_riscv_zk_subext, MASK_ZKSED),
!   RISCV_EXT_FLAG_ENTRY ("zksh",  x_riscv_zk_subext, MASK_ZKSH),
!   RISCV_EXT_FLAG_ENTRY ("zkt",   x_riscv_zk_subext, MASK_ZKT),
! 
!   RISCV_EXT_FLAG_ENTRY ("zihintntl",   x_riscv_zi_subext, MASK_ZIHINTNTL),
!   RISCV_EXT_FLAG_ENTRY ("zihintpause", x_riscv_zi_subext, MASK_ZIHINTPAUSE),
!   RISCV_EXT_FLAG_ENTRY ("ziccamoa",    x_riscv_zi_subext, MASK_ZICCAMOA),
!   RISCV_EXT_FLAG_ENTRY ("ziccif",      x_riscv_zi_subext, MASK_ZICCIF),
!   RISCV_EXT_FLAG_ENTRY ("zicclsm",     x_riscv_zi_subext, MASK_ZICCLSM),
!   RISCV_EXT_FLAG_ENTRY ("ziccrse",     x_riscv_zi_subext, MASK_ZICCRSE),
! 
!   RISCV_EXT_FLAG_ENTRY ("zicboz", x_riscv_zicmo_subext, MASK_ZICBOZ),
!   RISCV_EXT_FLAG_ENTRY ("zicbom", x_riscv_zicmo_subext, MASK_ZICBOM),
!   RISCV_EXT_FLAG_ENTRY ("zicbop", x_riscv_zicmo_subext, MASK_ZICBOP),
!   RISCV_EXT_FLAG_ENTRY ("zic64b", x_riscv_zicmo_subext, MASK_ZIC64B),
! 
!   RISCV_EXT_FLAG_ENTRY ("zicfiss", x_riscv_zi_subext, MASK_ZICFISS),
!   RISCV_EXT_FLAG_ENTRY ("zicfilp", x_riscv_zi_subext, MASK_ZICFILP),
! 
!   RISCV_EXT_FLAG_ENTRY ("zimop", x_riscv_mop_subext, MASK_ZIMOP),
!   RISCV_EXT_FLAG_ENTRY ("zcmop", x_riscv_mop_subext, MASK_ZCMOP),
! 
!   RISCV_EXT_FLAG_ENTRY ("zve32x", x_target_flags, MASK_VECTOR),
!   RISCV_EXT_FLAG_ENTRY ("zve32f", x_target_flags, MASK_VECTOR),
!   RISCV_EXT_FLAG_ENTRY ("zve64x", x_target_flags, MASK_VECTOR),
!   RISCV_EXT_FLAG_ENTRY ("zve64f", x_target_flags, MASK_VECTOR),
!   RISCV_EXT_FLAG_ENTRY ("zve64d", x_target_flags, MASK_VECTOR),
  
    /* We don't need to put complete ELEN/ELEN_FP info here, due to the
       implication relation of vector extension.
--- 1471,1485 ----
      return std::string();
  }
  
  #define RISCV_EXT_FLAG_ENTRY(NAME, VAR, MASK) \
    {NAME, &gcc_options::VAR, &cl_target_option::VAR, MASK}
  
! /* Mapping table between extension to internal flag,
!    this table is not needed to add manually unless there is speical rule.  */
! static const riscv_extra_ext_flag_table_t riscv_extra_ext_flag_table[] =
  {
!   RISCV_EXT_FLAG_ENTRY ("zve32x", x_riscv_isa_flags, MASK_VECTOR),
!   RISCV_EXT_FLAG_ENTRY ("v", x_riscv_isa_flags, MASK_FULL_V),
  
    /* We don't need to put complete ELEN/ELEN_FP info here, due to the
       implication relation of vector extension.
*************** static const riscv_ext_flag_table_t risc
*** 1815,1922 ****
    RISCV_EXT_FLAG_ENTRY ("zvfhmin",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16),
    RISCV_EXT_FLAG_ENTRY ("zvfh",     x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16),
  
-   RISCV_EXT_FLAG_ENTRY ("zvbb",   x_riscv_zvb_subext, MASK_ZVBB),
-   RISCV_EXT_FLAG_ENTRY ("zvbc",   x_riscv_zvb_subext, MASK_ZVBC),
-   RISCV_EXT_FLAG_ENTRY ("zvkb",   x_riscv_zvb_subext, MASK_ZVKB),
-   RISCV_EXT_FLAG_ENTRY ("zvkg",   x_riscv_zvk_subext, MASK_ZVKG),
-   RISCV_EXT_FLAG_ENTRY ("zvkned", x_riscv_zvk_subext, MASK_ZVKNED),
-   RISCV_EXT_FLAG_ENTRY ("zvknha", x_riscv_zvk_subext, MASK_ZVKNHA),
-   RISCV_EXT_FLAG_ENTRY ("zvknhb", x_riscv_zvk_subext, MASK_ZVKNHB),
-   RISCV_EXT_FLAG_ENTRY ("zvksed", x_riscv_zvk_subext, MASK_ZVKSED),
-   RISCV_EXT_FLAG_ENTRY ("zvksh",  x_riscv_zvk_subext, MASK_ZVKSH),
-   RISCV_EXT_FLAG_ENTRY ("zvkn",   x_riscv_zvk_subext, MASK_ZVKN),
-   RISCV_EXT_FLAG_ENTRY ("zvknc",  x_riscv_zvk_subext, MASK_ZVKNC),
-   RISCV_EXT_FLAG_ENTRY ("zvkng",  x_riscv_zvk_subext, MASK_ZVKNG),
-   RISCV_EXT_FLAG_ENTRY ("zvks",   x_riscv_zvk_subext, MASK_ZVKS),
-   RISCV_EXT_FLAG_ENTRY ("zvksc",  x_riscv_zvk_subext, MASK_ZVKSC),
-   RISCV_EXT_FLAG_ENTRY ("zvksg",  x_riscv_zvk_subext, MASK_ZVKSG),
-   RISCV_EXT_FLAG_ENTRY ("zvkt",   x_riscv_zvk_subext, MASK_ZVKT),
- 
-   RISCV_EXT_FLAG_ENTRY ("zvl32b",    x_riscv_zvl_flags, MASK_ZVL32B),
-   RISCV_EXT_FLAG_ENTRY ("zvl64b",    x_riscv_zvl_flags, MASK_ZVL64B),
-   RISCV_EXT_FLAG_ENTRY ("zvl128b",   x_riscv_zvl_flags, MASK_ZVL128B),
-   RISCV_EXT_FLAG_ENTRY ("zvl256b",   x_riscv_zvl_flags, MASK_ZVL256B),
-   RISCV_EXT_FLAG_ENTRY ("zvl512b",   x_riscv_zvl_flags, MASK_ZVL512B),
-   RISCV_EXT_FLAG_ENTRY ("zvl1024b",  x_riscv_zvl_flags, MASK_ZVL1024B),
-   RISCV_EXT_FLAG_ENTRY ("zvl2048b",  x_riscv_zvl_flags, MASK_ZVL2048B),
-   RISCV_EXT_FLAG_ENTRY ("zvl4096b",  x_riscv_zvl_flags, MASK_ZVL4096B),
-   RISCV_EXT_FLAG_ENTRY ("zvl8192b",  x_riscv_zvl_flags, MASK_ZVL8192B),
-   RISCV_EXT_FLAG_ENTRY ("zvl16384b", x_riscv_zvl_flags, MASK_ZVL16384B),
-   RISCV_EXT_FLAG_ENTRY ("zvl32768b", x_riscv_zvl_flags, MASK_ZVL32768B),
-   RISCV_EXT_FLAG_ENTRY ("zvl65536b", x_riscv_zvl_flags, MASK_ZVL65536B),
- 
-   RISCV_EXT_FLAG_ENTRY ("zfbfmin",  x_riscv_zf_subext, MASK_ZFBFMIN),
-   RISCV_EXT_FLAG_ENTRY ("zfhmin",   x_riscv_zf_subext, MASK_ZFHMIN),
-   RISCV_EXT_FLAG_ENTRY ("zfh",      x_riscv_zf_subext, MASK_ZFH),
-   RISCV_EXT_FLAG_ENTRY ("zvfbfmin", x_riscv_zf_subext, MASK_ZVFBFMIN),
-   RISCV_EXT_FLAG_ENTRY ("zvfbfwma", x_riscv_zf_subext, MASK_ZVFBFWMA),
-   RISCV_EXT_FLAG_ENTRY ("zvfhmin",  x_riscv_zf_subext, MASK_ZVFHMIN),
-   RISCV_EXT_FLAG_ENTRY ("zvfh",     x_riscv_zf_subext, MASK_ZVFH),
- 
-   RISCV_EXT_FLAG_ENTRY ("zfa", x_riscv_zfa_subext, MASK_ZFA),
- 
-   RISCV_EXT_FLAG_ENTRY ("zmmul", x_riscv_zm_subext, MASK_ZMMUL),
- 
-   /* Code-size reduction extensions.  */
-   RISCV_EXT_FLAG_ENTRY ("zca",  x_riscv_zc_subext, MASK_ZCA),
-   RISCV_EXT_FLAG_ENTRY ("zcb",  x_riscv_zc_subext, MASK_ZCB),
-   RISCV_EXT_FLAG_ENTRY ("zce",  x_riscv_zc_subext, MASK_ZCE),
-   RISCV_EXT_FLAG_ENTRY ("zcf",  x_riscv_zc_subext, MASK_ZCF),
-   RISCV_EXT_FLAG_ENTRY ("zcd",  x_riscv_zc_subext, MASK_ZCD),
-   RISCV_EXT_FLAG_ENTRY ("zcmp", x_riscv_zc_subext, MASK_ZCMP),
-   RISCV_EXT_FLAG_ENTRY ("zcmt", x_riscv_zc_subext, MASK_ZCMT),
- 
-   RISCV_EXT_FLAG_ENTRY ("svade",       x_riscv_sv_subext, MASK_SVADE),
-   RISCV_EXT_FLAG_ENTRY ("svadu",       x_riscv_sv_subext, MASK_SVADU),
-   RISCV_EXT_FLAG_ENTRY ("svinval",     x_riscv_sv_subext, MASK_SVINVAL),
-   RISCV_EXT_FLAG_ENTRY ("svnapot",     x_riscv_sv_subext, MASK_SVNAPOT),
-   RISCV_EXT_FLAG_ENTRY ("svvptc",      x_riscv_sv_subext, MASK_SVVPTC),
- 
-   RISCV_EXT_FLAG_ENTRY ("ztso", x_riscv_ztso_subext, MASK_ZTSO),
- 
-   RISCV_EXT_FLAG_ENTRY ("xcvmac",  x_riscv_xcv_subext, MASK_XCVMAC),
-   RISCV_EXT_FLAG_ENTRY ("xcvalu",  x_riscv_xcv_subext, MASK_XCVALU),
-   RISCV_EXT_FLAG_ENTRY ("xcvelw",  x_riscv_xcv_subext, MASK_XCVELW),
-   RISCV_EXT_FLAG_ENTRY ("xcvsimd", x_riscv_xcv_subext, MASK_XCVSIMD),
-   RISCV_EXT_FLAG_ENTRY ("xcvbi",   x_riscv_xcv_subext, MASK_XCVBI),
- 
-   RISCV_EXT_FLAG_ENTRY ("xtheadba",      x_riscv_xthead_subext, MASK_XTHEADBA),
-   RISCV_EXT_FLAG_ENTRY ("xtheadbb",      x_riscv_xthead_subext, MASK_XTHEADBB),
-   RISCV_EXT_FLAG_ENTRY ("xtheadbs",      x_riscv_xthead_subext, MASK_XTHEADBS),
-   RISCV_EXT_FLAG_ENTRY ("xtheadcmo",     x_riscv_xthead_subext, MASK_XTHEADCMO),
-   RISCV_EXT_FLAG_ENTRY ("xtheadcondmov", x_riscv_xthead_subext, MASK_XTHEADCONDMOV),
-   RISCV_EXT_FLAG_ENTRY ("xtheadfmemidx", x_riscv_xthead_subext, MASK_XTHEADFMEMIDX),
-   RISCV_EXT_FLAG_ENTRY ("xtheadfmv",     x_riscv_xthead_subext, MASK_XTHEADFMV),
-   RISCV_EXT_FLAG_ENTRY ("xtheadint",     x_riscv_xthead_subext, MASK_XTHEADINT),
-   RISCV_EXT_FLAG_ENTRY ("xtheadmac",     x_riscv_xthead_subext, MASK_XTHEADMAC),
-   RISCV_EXT_FLAG_ENTRY ("xtheadmemidx",  x_riscv_xthead_subext, MASK_XTHEADMEMIDX),
-   RISCV_EXT_FLAG_ENTRY ("xtheadmempair", x_riscv_xthead_subext, MASK_XTHEADMEMPAIR),
-   RISCV_EXT_FLAG_ENTRY ("xtheadsync",    x_riscv_xthead_subext, MASK_XTHEADSYNC),
-   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_xthead_subext, MASK_XTHEADVECTOR),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_32),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_64),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_32),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_64),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zvl_flags, MASK_ZVL32B),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zvl_flags, MASK_ZVL64B),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zvl_flags, MASK_ZVL128B),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zf_subext, MASK_ZVFHMIN),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zf_subext, MASK_ZVFH),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_target_flags, MASK_FULL_V),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_target_flags, MASK_VECTOR),
! 
!   RISCV_EXT_FLAG_ENTRY ("xventanacondops", x_riscv_xventana_subext, MASK_XVENTANACONDOPS),
! 
!   RISCV_EXT_FLAG_ENTRY ("xsfvcp",   x_riscv_sifive_subext, MASK_XSFVCP),
!   RISCV_EXT_FLAG_ENTRY ("xsfcease", x_riscv_sifive_subext, MASK_XSFCEASE),
!   RISCV_EXT_FLAG_ENTRY ("xsfvqmaccqoq",    x_riscv_sifive_subext, MASK_XSFVQMACCQOQ),
!   RISCV_EXT_FLAG_ENTRY ("xsfvqmaccdod",    x_riscv_sifive_subext, MASK_XSFVQMACCDOD),
!   RISCV_EXT_FLAG_ENTRY ("xsfvfnrclipxfqf", x_riscv_sifive_subext, MASK_XSFVFNRCLIPXFQF),
  
    {NULL, NULL, NULL, 0}
  };
  
  /* Types for recording extension to RISC-V C-API bitmask.  */
  struct riscv_ext_bitmask_table_t {
    const char *ext;
--- 1496,1535 ----
    RISCV_EXT_FLAG_ENTRY ("zvfhmin",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16),
    RISCV_EXT_FLAG_ENTRY ("zvfh",     x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16),
  
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_32),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_64),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_32),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_64),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zvl_subext, MASK_ZVL32B),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zvl_subext, MASK_ZVL64B),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zvl_subext, MASK_ZVL128B),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zvf_subext, MASK_ZVFHMIN),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_zvf_subext, MASK_ZVFH),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_isa_flags, MASK_FULL_V),
!   RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_isa_flags, MASK_VECTOR),
  
    {NULL, NULL, NULL, 0}
  };
  
+ /* Add extra extension flags into FLAG_TABLE for EXT.  */
+ static void
+ apply_extra_extension_flags (const char *ext,
+ 			     std::vector<riscv_ext_flag_table_t> &flag_table)
+ {
+   const riscv_extra_ext_flag_table_t *arch_ext_flag_tab;
+   for (arch_ext_flag_tab = &riscv_extra_ext_flag_table[0];
+        arch_ext_flag_tab->ext; ++arch_ext_flag_tab)
+     {
+       if (strcmp (arch_ext_flag_tab->ext, ext) == 0)
+ 	{
+ 	  flag_table.push_back ({arch_ext_flag_tab->var_ref,
+ 				 arch_ext_flag_tab->cl_var_ref,
+ 				 arch_ext_flag_tab->mask});
+ 	}
+     }
+ }
+ 
  /* Types for recording extension to RISC-V C-API bitmask.  */
  struct riscv_ext_bitmask_table_t {
    const char *ext;
*************** riscv_set_arch_by_subset_list (riscv_sub
*** 1943,1966 ****
  {
    if (opts)
      {
-       const riscv_ext_flag_table_t *arch_ext_flag_tab;
        /* Clean up target flags before we set.  */
!       for (arch_ext_flag_tab = &riscv_ext_flag_table[0]; arch_ext_flag_tab->ext;
! 	   ++arch_ext_flag_tab)
! 	opts->*arch_ext_flag_tab->var_ref &= ~arch_ext_flag_tab->mask;
  
        if (subset_list->xlen () == 32)
! 	opts->x_target_flags &= ~MASK_64BIT;
        else if (subset_list->xlen () == 64)
! 	opts->x_target_flags |= MASK_64BIT;
  
!       for (arch_ext_flag_tab = &riscv_ext_flag_table[0];
! 	   arch_ext_flag_tab->ext;
! 	   ++arch_ext_flag_tab)
! 	{
! 	  if (subset_list->lookup (arch_ext_flag_tab->ext))
! 	    opts->*arch_ext_flag_tab->var_ref |= arch_ext_flag_tab->mask;
! 	}
      }
  }
  
--- 1556,1576 ----
  {
    if (opts)
      {
        /* Clean up target flags before we set.  */
!       for (const auto &[ext_name, ext_info] : riscv_ext_infos)
! 	ext_info.clean_opts (opts);
  
        if (subset_list->xlen () == 32)
! 	opts->x_riscv_isa_flags &= ~MASK_64BIT;
        else if (subset_list->xlen () == 64)
! 	opts->x_riscv_isa_flags |= MASK_64BIT;
  
!       for (const auto &[ext_name, ext_info] : riscv_ext_infos)
! 	if (subset_list->lookup (ext_name.c_str ()))
! 	  {
! 	    /* Set the extension flag.  */
! 	    ext_info.set_opts (opts);
! 	  }
      }
  }
  
*************** bool
*** 1970,2006 ****
  riscv_ext_is_subset (struct cl_target_option *opts,
  		     struct cl_target_option *subset)
  {
!   const riscv_ext_flag_table_t *arch_ext_flag_tab;
!   for (arch_ext_flag_tab = &riscv_ext_flag_table[0];
!        arch_ext_flag_tab->ext;
!        ++arch_ext_flag_tab)
      {
!       if (subset->*arch_ext_flag_tab->cl_var_ref & arch_ext_flag_tab->mask)
! 	{
! 	  if (!(opts->*arch_ext_flag_tab->cl_var_ref & arch_ext_flag_tab->mask))
! 	    return false;
! 	}
      }
    return true;
  }
  
- /* Return the mask of ISA extension in x_target_flags of gcc_options.  */
- 
- int
- riscv_x_target_flags_isa_mask (void)
- {
-   int mask = 0;
-   const riscv_ext_flag_table_t *arch_ext_flag_tab;
-   for (arch_ext_flag_tab = &riscv_ext_flag_table[0];
-        arch_ext_flag_tab->ext;
-        ++arch_ext_flag_tab)
-     {
-       if (arch_ext_flag_tab->var_ref == &gcc_options::x_target_flags)
- 	mask |= arch_ext_flag_tab->mask;
-     }
-   return mask;
- }
- 
  /* Get the minimal feature bits in Linux hwprobe of the given ISA string.
  
     Used for generating Function Multi-Versioning (FMV) dispatcher for RISC-V.
--- 1580,1593 ----
  riscv_ext_is_subset (struct cl_target_option *opts,
  		     struct cl_target_option *subset)
  {
!   for (const auto &[ext_name, ext_info] : riscv_ext_infos)
      {
!       if (ext_info.check_opts (opts) && !ext_info.check_opts (subset))
! 	return false;
      }
    return true;
  }
  
  /* Get the minimal feature bits in Linux hwprobe of the given ISA string.
  
     Used for generating Function Multi-Versioning (FMV) dispatcher for RISC-V.
*************** riscv_minimal_hwprobe_feature_bits (cons
*** 2055,2074 ****
  	  search_q.pop ();
  
  	  /* Iterate through the implied extension table.  */
! 	  const riscv_implied_info_t *implied_info;
! 	  for (implied_info = &riscv_implied_info[0];
! 	      implied_info->ext;
! 	      ++implied_info)
  	    {
  	      /* When the search extension matches the implied extension and
  		 the implied extension has not been visited, mark the implied
  		 extension in the implied_exts set and push it into the
  		 queue.  */
! 	      if (implied_info->match (subset_list, search_ext)
! 		  && implied_exts.count (implied_info->implied_ext) == 0)
  		{
! 		  implied_exts.insert (implied_info->implied_ext);
! 		  search_q.push (implied_info->implied_ext);
  		}
  	    }
  	}
--- 1642,1659 ----
  	  search_q.pop ();
  
  	  /* Iterate through the implied extension table.  */
! 	  auto &ext_info = get_riscv_ext_info (search_ext);
! 	  for (const auto &implied_ext : ext_info.implied_exts ())
  	    {
  	      /* When the search extension matches the implied extension and
  		 the implied extension has not been visited, mark the implied
  		 extension in the implied_exts set and push it into the
  		 queue.  */
! 	      if (implied_ext.match (subset_list)
! 		  && implied_exts.count (implied_ext.implied_ext) == 0)
  		{
! 		  implied_exts.insert (implied_ext.implied_ext);
! 		  search_q.push (implied_ext.implied_ext);
  		}
  	    }
  	}
*************** riscv_arch_help (int, const char **)
*** 2622,2637 ****
      }
    };
    std::map<std::string, std::set<unsigned>, extension_comparator> all_exts;
!   for (const riscv_ext_version &ext : riscv_ext_version_table)
      {
!       if (!ext.name)
! 	break;
!       if (ext.name[0] == 'g')
! 	continue;
!       unsigned version_value = (ext.major_version * RISCV_MAJOR_VERSION_BASE)
! 				+ (ext.minor_version
! 				   * RISCV_MINOR_VERSION_BASE);
!       all_exts[ext.name].insert(version_value);
      }
  
    printf("All available -march extensions for RISC-V:\n");
--- 2207,2221 ----
      }
    };
    std::map<std::string, std::set<unsigned>, extension_comparator> all_exts;
!   for (const auto &[ext_name, ext_info] : riscv_ext_infos)
      {
!       for (auto &supported_version : ext_info.supported_versions ())
! 	{
! 	  unsigned version_value
! 	    = (supported_version.major_version * RISCV_MAJOR_VERSION_BASE)
! 	      + (supported_version.minor_version * RISCV_MINOR_VERSION_BASE);
! 	  all_exts[ext_name].insert (version_value);
! 	}
      }
  
    printf("All available -march extensions for RISC-V:\n");
diff -Nrcpad gcc-16-20250511/gcc/config/aarch64/aarch64-protos.h gcc-16-20250518/gcc/config/aarch64/aarch64-protos.h
*** gcc-16-20250511/gcc/config/aarch64/aarch64-protos.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/aarch64/aarch64-protos.h	Sun May 18 22:32:07 2025
*************** struct sve_vec_cost : simd_vec_cost
*** 290,297 ****
  
    /* The cost of a gather load instruction.  The x32 value is for loads
       of 32-bit elements and the x64 value is for loads of 64-bit elements.  */
!   const int gather_load_x32_cost;
!   const int gather_load_x64_cost;
  
    /* Additional loop initialization cost of using a gather load instruction.  The x32
       value is for loads of 32-bit elements and the x64 value is for loads of
--- 290,297 ----
  
    /* The cost of a gather load instruction.  The x32 value is for loads
       of 32-bit elements and the x64 value is for loads of 64-bit elements.  */
!   const unsigned int gather_load_x32_cost;
!   const unsigned int gather_load_x64_cost;
  
    /* Additional loop initialization cost of using a gather load instruction.  The x32
       value is for loads of 32-bit elements and the x64 value is for loads of
*************** char *aarch64_output_simd_mov_imm (rtx,
*** 933,938 ****
--- 933,939 ----
  char *aarch64_output_simd_orr_imm (rtx, unsigned);
  char *aarch64_output_simd_and_imm (rtx, unsigned);
  char *aarch64_output_simd_xor_imm (rtx, unsigned);
+ char *aarch64_output_fmov (rtx);
  
  char *aarch64_output_sve_mov_immediate (rtx);
  char *aarch64_output_sve_ptrues (rtx);
*************** bool aarch64_simd_scalar_immediate_valid
*** 948,953 ****
--- 949,955 ----
  bool aarch64_simd_shift_imm_p (rtx, machine_mode, bool);
  bool aarch64_sve_ptrue_svpattern_p (rtx, struct simd_immediate_info *);
  bool aarch64_simd_valid_and_imm (rtx);
+ bool aarch64_simd_valid_and_imm_fmov (rtx, unsigned int * = NULL);
  bool aarch64_simd_valid_mov_imm (rtx);
  bool aarch64_simd_valid_orr_imm (rtx);
  bool aarch64_simd_valid_xor_imm (rtx);
diff -Nrcpad gcc-16-20250511/gcc/config/aarch64/aarch64-simd.md gcc-16-20250518/gcc/config/aarch64/aarch64-simd.md
*** gcc-16-20250511/gcc/config/aarch64/aarch64-simd.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/aarch64/aarch64-simd.md	Sun May 18 22:32:07 2025
***************
*** 1117,1133 ****
    [(set_attr "type" "neon_fp_abd_<stype><q>")]
  )
  
! ;; For AND (vector, register) and BIC (vector, immediate)
  (define_insn "and<mode>3<vczle><vczbe>"
    [(set (match_operand:VDQ_I 0 "register_operand")
  	(and:VDQ_I (match_operand:VDQ_I 1 "register_operand")
  		   (match_operand:VDQ_I 2 "aarch64_reg_or_and_imm")))]
    "TARGET_SIMD"
!   {@ [ cons: =0 , 1 , 2   ]
!      [ w        , w , w   ] and\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>
!      [ w        , 0 , Db  ] << aarch64_output_simd_and_imm (operands[2], <bitsize>);
    }
-   [(set_attr "type" "neon_logic<q>")]
  )
  
  ;; For ORR (vector, register) and ORR (vector, immediate)
--- 1117,1133 ----
    [(set_attr "type" "neon_fp_abd_<stype><q>")]
  )
  
! ;; For AND (vector, register), BIC (vector, immediate) and FMOV (register)
  (define_insn "and<mode>3<vczle><vczbe>"
    [(set (match_operand:VDQ_I 0 "register_operand")
  	(and:VDQ_I (match_operand:VDQ_I 1 "register_operand")
  		   (match_operand:VDQ_I 2 "aarch64_reg_or_and_imm")))]
    "TARGET_SIMD"
!   {@ [ cons: =0 , 1 , 2  ; attrs: type   ]
!      [ w        , w , w  ; neon_logic<q> ] and\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>
!      [ w        , w , Df ; fmov          ] << aarch64_output_fmov (operands[2]);
!      [ w        , 0 , Db ; neon_logic<q> ] << aarch64_output_simd_and_imm (operands[2], <bitsize>);
    }
  )
  
  ;; For ORR (vector, register) and ORR (vector, immediate)
diff -Nrcpad gcc-16-20250511/gcc/config/aarch64/aarch64-speculation.cc gcc-16-20250518/gcc/config/aarch64/aarch64-speculation.cc
*** gcc-16-20250511/gcc/config/aarch64/aarch64-speculation.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/aarch64/aarch64-speculation.cc	Sun May 18 22:32:07 2025
*************** aarch64_speculation_clobber_sp ()
*** 160,168 ****
    emit_insn (gen_rtx_SET (scratch, sp));
    emit_insn (gen_anddi3 (scratch, scratch, tracker));
    emit_insn (gen_rtx_SET (sp, scratch));
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
!   return seq;
  }
  
  /* Generate a code sequence to establish the tracker variable from the
--- 160,166 ----
    emit_insn (gen_rtx_SET (scratch, sp));
    emit_insn (gen_anddi3 (scratch, scratch, tracker));
    emit_insn (gen_rtx_SET (sp, scratch));
!   return end_sequence ();
  }
  
  /* Generate a code sequence to establish the tracker variable from the
*************** aarch64_speculation_establish_tracker ()
*** 176,184 ****
    rtx cc = aarch64_gen_compare_reg (EQ, sp, const0_rtx);
    emit_insn (gen_cstoredi_neg (tracker,
  			       gen_rtx_NE (CCmode, cc, const0_rtx), cc));
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
!   return seq;
  }
  
  /* Main speculation tracking pass.  */
--- 174,180 ----
    rtx cc = aarch64_gen_compare_reg (EQ, sp, const0_rtx);
    emit_insn (gen_cstoredi_neg (tracker,
  			       gen_rtx_NE (CCmode, cc, const0_rtx), cc));
!   return end_sequence ();
  }
  
  /* Main speculation tracking pass.  */
*************** aarch64_do_track_speculation ()
*** 405,412 ****
  		    {
  		      start_sequence ();
  		      emit_insn (seq);
! 		      seq = get_insns ();
! 		      end_sequence ();
  		    }
  
  		  for (rtx_insn *list = seq; list; list = NEXT_INSN (list))
--- 401,407 ----
  		    {
  		      start_sequence ();
  		      emit_insn (seq);
! 		      seq = end_sequence ();
  		    }
  
  		  for (rtx_insn *list = seq; list; list = NEXT_INSN (list))
diff -Nrcpad gcc-16-20250511/gcc/config/aarch64/aarch64.cc gcc-16-20250518/gcc/config/aarch64/aarch64.cc
*** gcc-16-20250511/gcc/config/aarch64/aarch64.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/aarch64/aarch64.cc	Sun May 18 22:32:07 2025
*************** aarch64_load_symref_appropriately (rtx d
*** 3201,3208 ****
  	  aarch64_emit_call_insn (gen_tlsgd_small_si (result, imm));
  	else
  	  aarch64_emit_call_insn (gen_tlsgd_small_di (result, imm));
! 	insns = get_insns ();
! 	end_sequence ();
  
  	RTL_CONST_CALL_P (insns) = 1;
  	emit_libcall_block (insns, tmp_reg, result, imm);
--- 3201,3207 ----
  	  aarch64_emit_call_insn (gen_tlsgd_small_si (result, imm));
  	else
  	  aarch64_emit_call_insn (gen_tlsgd_small_di (result, imm));
! 	insns = end_sequence ();
  
  	RTL_CONST_CALL_P (insns) = 1;
  	emit_libcall_block (insns, tmp_reg, result, imm);
*************** aarch64_simd_valid_and_imm (rtx op)
*** 23621,23626 ****
--- 23620,23655 ----
    return aarch64_simd_valid_imm (op, NULL, AARCH64_CHECK_AND);
  }
  
+ /* Return true if OP is a valid SIMD and immediate which allows the and to be
+    optimized as fmov.  If ELT_BITSIZE is nonnull, use it to return the number of
+    bits to move.  */
+ bool
+ aarch64_simd_valid_and_imm_fmov (rtx op, unsigned int *elt_bitsize)
+ {
+   machine_mode mode = GET_MODE (op);
+   gcc_assert (!aarch64_sve_mode_p (mode));
+ 
+   auto_vec<target_unit, 16> buffer;
+   unsigned int n_bytes = GET_MODE_SIZE (mode).to_constant ();
+   buffer.reserve (n_bytes);
+ 
+   bool ok = native_encode_rtx (mode, op, buffer, 0, n_bytes);
+   gcc_assert (ok);
+ 
+   auto mask = native_decode_int (buffer, 0, n_bytes, n_bytes * BITS_PER_UNIT);
+   int set_bit = wi::exact_log2 (mask + 1);
+   if ((set_bit == 16 && TARGET_SIMD_F16INST)
+       || set_bit == 32
+       || set_bit == 64)
+     {
+       if (elt_bitsize)
+ 	*elt_bitsize = set_bit;
+       return true;
+     }
+ 
+   return false;
+ }
+ 
  /* Return true if OP is a valid SIMD xor immediate for SVE.  */
  bool
  aarch64_simd_valid_xor_imm (rtx op)
*************** aarch64_expand_vector_init (rtx target,
*** 24662,24669 ****
        rtx tmp_reg = gen_reg_rtx (GET_MODE (new_vals));
        aarch64_expand_vector_init (tmp_reg, new_vals);
        halves[i] = gen_rtx_SUBREG (mode, tmp_reg, 0);
!       rtx_insn *rec_seq = get_insns ();
!       end_sequence ();
        costs[i] = seq_cost_ignoring_scalar_moves (rec_seq, !optimize_size);
        emit_insn (rec_seq);
      }
--- 24691,24697 ----
        rtx tmp_reg = gen_reg_rtx (GET_MODE (new_vals));
        aarch64_expand_vector_init (tmp_reg, new_vals);
        halves[i] = gen_rtx_SUBREG (mode, tmp_reg, 0);
!       rtx_insn *rec_seq = end_sequence ();
        costs[i] = seq_cost_ignoring_scalar_moves (rec_seq, !optimize_size);
        emit_insn (rec_seq);
      }
*************** aarch64_expand_vector_init (rtx target,
*** 24675,24682 ****
      = (!optimize_size) ? std::max (costs[0], costs[1]) : costs[0] + costs[1];
    seq_total_cost += insn_cost (zip1_insn, !optimize_size);
  
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
  
    start_sequence ();
    aarch64_expand_vector_init_fallback (target, vals);
--- 24703,24709 ----
      = (!optimize_size) ? std::max (costs[0], costs[1]) : costs[0] + costs[1];
    seq_total_cost += insn_cost (zip1_insn, !optimize_size);
  
!   rtx_insn *seq = end_sequence ();
  
    start_sequence ();
    aarch64_expand_vector_init_fallback (target, vals);
*************** aarch64_float_const_representable_p (rtx
*** 25757,25762 ****
--- 25784,25809 ----
    return aarch64_real_float_const_representable_p (r);
  }
  
+ /* Returns the string with the fmov instruction which is equivalent to an and
+    instruction with the SIMD immediate CONST_VECTOR.  */
+ char*
+ aarch64_output_fmov (rtx const_vector)
+ {
+   bool is_valid;
+   static char templ[40];
+   char element_char;
+   unsigned int elt_bitsize;
+ 
+   is_valid = aarch64_simd_valid_and_imm_fmov (const_vector, &elt_bitsize);
+   gcc_assert (is_valid);
+ 
+   element_char = sizetochar (elt_bitsize);
+   snprintf (templ, sizeof (templ), "fmov\t%%%c0, %%%c1", element_char,
+ 	    element_char);
+ 
+   return templ;
+ }
+ 
  /* Returns the string with the instruction for the SIMD immediate
   * CONST_VECTOR of MODE and WIDTH.  WHICH selects a move, and(bic) or orr.  */
  char*
*************** aarch64_evpc_trn (struct expand_vec_perm
*** 26280,26286 ****
  static bool
  aarch64_evpc_reencode (struct expand_vec_perm_d *d)
  {
!   expand_vec_perm_d newd;
  
    /* The subregs that we'd create are not supported for big-endian SVE;
       see aarch64_modes_compatible_p for details.  */
--- 26327,26333 ----
  static bool
  aarch64_evpc_reencode (struct expand_vec_perm_d *d)
  {
!   expand_vec_perm_d newd = {};
  
    /* The subregs that we'd create are not supported for big-endian SVE;
       see aarch64_modes_compatible_p for details.  */
*************** aarch64_evpc_ins (struct expand_vec_perm
*** 26889,26894 ****
--- 26936,26975 ----
    return true;
  }
  
+ /* Recognize patterns suitable for the AND instructions.  */
+ static bool
+ aarch64_evpc_and (struct expand_vec_perm_d *d)
+ {
+   /* Either d->op0 or d->op1 should be a vector of all zeros.  */
+   if (d->one_vector_p || (!d->zero_op0_p && !d->zero_op1_p))
+     return false;
+ 
+   machine_mode mode = d->vmode;
+   machine_mode sel_mode;
+   if (!related_int_vector_mode (mode).exists (&sel_mode))
+     return false;
+ 
+   insn_code and_code = optab_handler (and_optab, sel_mode);
+   rtx and_mask = vec_perm_and_mask (sel_mode, d->perm, d->zero_op0_p);
+   if (and_code == CODE_FOR_nothing || !and_mask)
+     return false;
+ 
+   if (d->testing_p)
+     return true;
+ 
+   class expand_operand ops[3];
+   rtx in = d->zero_op0_p ? d->op1 : d->op0;
+   create_output_operand (&ops[0], gen_lowpart (sel_mode, d->target), sel_mode);
+   create_input_operand (&ops[1], gen_lowpart (sel_mode, in), sel_mode);
+   create_input_operand (&ops[2], and_mask, sel_mode);
+   expand_insn (and_code, 3, ops);
+   rtx result = gen_lowpart (mode, ops[0].value);
+   if (!rtx_equal_p (d->target, result))
+     emit_move_insn (d->target, result);
+ 
+   return true;
+ }
+ 
  static bool
  aarch64_expand_vec_perm_const_1 (struct expand_vec_perm_d *d)
  {
*************** aarch64_expand_vec_perm_const_1 (struct
*** 26924,26929 ****
--- 27005,27012 ----
  	    return true;
  	  else if (aarch64_evpc_uzp (d))
  	    return true;
+ 	  else if (aarch64_evpc_and (d))
+ 	    return true;
  	  else if (aarch64_evpc_trn (d))
  	    return true;
  	  else if (aarch64_evpc_sel (d))
*************** aarch64_gen_ccmp_first (rtx_insn **prep_
*** 27803,27810 ****
        end_sequence ();
        return NULL_RTX;
      }
!   *prep_seq = get_insns ();
!   end_sequence ();
  
    create_fixed_operand (&ops[0], op0);
    create_fixed_operand (&ops[1], op1);
--- 27886,27892 ----
        end_sequence ();
        return NULL_RTX;
      }
!   *prep_seq = end_sequence ();
  
    create_fixed_operand (&ops[0], op0);
    create_fixed_operand (&ops[1], op1);
*************** aarch64_gen_ccmp_first (rtx_insn **prep_
*** 27815,27822 ****
        end_sequence ();
        return NULL_RTX;
      }
!   *gen_seq = get_insns ();
!   end_sequence ();
  
    return gen_rtx_fmt_ee (code, cc_mode,
  			 gen_rtx_REG (cc_mode, CC_REGNUM), const0_rtx);
--- 27897,27903 ----
        end_sequence ();
        return NULL_RTX;
      }
!   *gen_seq = end_sequence ();
  
    return gen_rtx_fmt_ee (code, cc_mode,
  			 gen_rtx_REG (cc_mode, CC_REGNUM), const0_rtx);
*************** aarch64_gen_ccmp_next (rtx_insn **prep_s
*** 27880,27887 ****
        end_sequence ();
        return NULL_RTX;
      }
!   *prep_seq = get_insns ();
!   end_sequence ();
  
    target = gen_rtx_REG (cc_mode, CC_REGNUM);
    aarch64_cond = aarch64_get_condition_code_1 (cc_mode, cmp_code);
--- 27961,27967 ----
        end_sequence ();
        return NULL_RTX;
      }
!   *prep_seq = end_sequence ();
  
    target = gen_rtx_REG (cc_mode, CC_REGNUM);
    aarch64_cond = aarch64_get_condition_code_1 (cc_mode, cmp_code);
*************** aarch64_gen_ccmp_next (rtx_insn **prep_s
*** 27920,27927 ****
        return NULL_RTX;
      }
  
!   *gen_seq = get_insns ();
!   end_sequence ();
  
    return gen_rtx_fmt_ee (cmp_code, VOIDmode, target, const0_rtx);
  }
--- 28000,28006 ----
        return NULL_RTX;
      }
  
!   *gen_seq = end_sequence ();
  
    return gen_rtx_fmt_ee (cmp_code, VOIDmode, target, const0_rtx);
  }
*************** aarch64_mode_emit (int entity, int mode,
*** 30506,30513 ****
  					 aarch64_local_sme_state (prev_mode));
        break;
      }
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
  
    /* Get the set of clobbered registers that are currently live.  */
    HARD_REG_SET clobbers = {};
--- 30585,30591 ----
  					 aarch64_local_sme_state (prev_mode));
        break;
      }
!   rtx_insn *seq = end_sequence ();
  
    /* Get the set of clobbered registers that are currently live.  */
    HARD_REG_SET clobbers = {};
*************** aarch64_md_asm_adjust (vec<rtx> &outputs
*** 30917,30924 ****
  	    emit_insn (REGNO (x) == ZA_REGNUM
  		       ? gen_aarch64_asm_update_za (id_rtx)
  		       : gen_aarch64_asm_update_zt0 (id_rtx));
! 	    seq = get_insns ();
! 	    end_sequence ();
  
  	    auto mode = REGNO (x) == ZA_REGNUM ? VNx16QImode : V8DImode;
  	    uses.safe_push (gen_rtx_REG (mode, REGNO (x)));
--- 30995,31001 ----
  	    emit_insn (REGNO (x) == ZA_REGNUM
  		       ? gen_aarch64_asm_update_za (id_rtx)
  		       : gen_aarch64_asm_update_zt0 (id_rtx));
! 	    seq = end_sequence ();
  
  	    auto mode = REGNO (x) == ZA_REGNUM ? VNx16QImode : V8DImode;
  	    uses.safe_push (gen_rtx_REG (mode, REGNO (x)));
*************** aarch64_switch_pstate_sm_for_landing_pad
*** 30953,30960 ****
    args_switch.emit_epilogue ();
    if (guard_label)
      emit_label (guard_label);
!   auto seq = get_insns ();
!   end_sequence ();
  
    emit_insn_after (seq, bb_note (bb));
    return true;
--- 31030,31036 ----
    args_switch.emit_epilogue ();
    if (guard_label)
      emit_label (guard_label);
!   auto seq = end_sequence ();
  
    emit_insn_after (seq, bb_note (bb));
    return true;
*************** aarch64_switch_pstate_sm_for_jump (rtx_i
*** 30977,30984 ****
    aarch64_switch_pstate_sm (AARCH64_ISA_MODE_SM_ON, AARCH64_ISA_MODE_SM_OFF);
    if (guard_label)
      emit_label (guard_label);
!   auto seq = get_insns ();
!   end_sequence ();
  
    emit_insn_before (seq, jump);
    return true;
--- 31053,31059 ----
    aarch64_switch_pstate_sm (AARCH64_ISA_MODE_SM_ON, AARCH64_ISA_MODE_SM_OFF);
    if (guard_label)
      emit_label (guard_label);
!   auto seq = end_sequence ();
  
    emit_insn_before (seq, jump);
    return true;
*************** aarch64_switch_pstate_sm_for_call (rtx_c
*** 31012,31019 ****
    args_switch.emit_epilogue ();
    if (args_guard_label)
      emit_label (args_guard_label);
!   auto args_seq = get_insns ();
!   end_sequence ();
    emit_insn_before (args_seq, call);
  
    if (find_reg_note (call, REG_NORETURN, NULL_RTX))
--- 31087,31093 ----
    args_switch.emit_epilogue ();
    if (args_guard_label)
      emit_label (args_guard_label);
!   auto args_seq = end_sequence ();
    emit_insn_before (args_seq, call);
  
    if (find_reg_note (call, REG_NORETURN, NULL_RTX))
*************** aarch64_switch_pstate_sm_for_call (rtx_c
*** 31033,31040 ****
    return_switch.emit_epilogue ();
    if (return_guard_label)
      emit_label (return_guard_label);
!   auto result_seq = get_insns ();
!   end_sequence ();
    emit_insn_after (result_seq, call);
    return true;
  }
--- 31107,31113 ----
    return_switch.emit_epilogue ();
    if (return_guard_label)
      emit_label (return_guard_label);
!   auto result_seq = end_sequence ();
    emit_insn_after (result_seq, call);
    return true;
  }
diff -Nrcpad gcc-16-20250511/gcc/config/aarch64/aarch64.md gcc-16-20250518/gcc/config/aarch64/aarch64.md
*** gcc-16-20250511/gcc/config/aarch64/aarch64.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/aarch64/aarch64.md	Sun May 18 22:32:07 2025
***************
*** 4555,4592 ****
    [(set_attr "type" "csel")]
  )
  
- (define_expand "cmov<mode>6"
-   [(set (match_operand:GPI 0 "register_operand")
- 	(if_then_else:GPI
- 	 (match_operator 1 "aarch64_comparison_operator"
- 	  [(match_operand:GPI 2 "register_operand")
- 	   (match_operand:GPI 3 "aarch64_plus_operand")])
- 	 (match_operand:GPI 4 "register_operand")
- 	 (match_operand:GPI 5 "register_operand")))]
-   ""
-   "
-   operands[2] = aarch64_gen_compare_reg (GET_CODE (operands[1]), operands[2],
- 				      operands[3]);
-   operands[3] = const0_rtx;
-   "
- )
- 
- (define_expand "cmov<mode>6"
-   [(set (match_operand:GPF 0 "register_operand")
- 	(if_then_else:GPF
- 	 (match_operator 1 "aarch64_comparison_operator"
- 	  [(match_operand:GPF 2 "register_operand")
- 	   (match_operand:GPF 3 "aarch64_fp_compare_operand")])
- 	 (match_operand:GPF 4 "register_operand")
- 	 (match_operand:GPF 5 "register_operand")))]
-   ""
-   "
-   operands[2] = aarch64_gen_compare_reg (GET_CODE (operands[1]), operands[2],
- 				      operands[3]);
-   operands[3] = const0_rtx;
-   "
- )
- 
  (define_insn "*cmov<mode>_insn"
    [(set (match_operand:ALLI 0 "register_operand")
  	(if_then_else:ALLI
--- 4555,4560 ----
diff -Nrcpad gcc-16-20250511/gcc/config/aarch64/constraints.md gcc-16-20250518/gcc/config/aarch64/constraints.md
*** gcc-16-20250511/gcc/config/aarch64/constraints.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/aarch64/constraints.md	Sun May 18 22:32:07 2025
***************
*** 466,471 ****
--- 466,478 ----
   (and (match_code "const_vector")
        (match_test "aarch64_simd_valid_orr_imm (op)")))
  
+ (define_constraint "Df"
+   "@internal
+    A constraint that matches a vector of immediates for and which can be
+    optimized as fmov."
+  (and (match_code "const_vector")
+       (match_test "aarch64_simd_valid_and_imm_fmov (op)")))
+ 
  (define_constraint "Db"
    "@internal
     A constraint that matches vector of immediates for and/bic."
diff -Nrcpad gcc-16-20250511/gcc/config/aarch64/driver-aarch64.cc gcc-16-20250518/gcc/config/aarch64/driver-aarch64.cc
*** gcc-16-20250511/gcc/config/aarch64/driver-aarch64.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/aarch64/driver-aarch64.cc	Sun May 18 22:32:07 2025
*************** struct aarch64_core_data
*** 63,69 ****
  #define DEFAULT_CPU "generic-armv8-a"
  
  #define AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART, VARIANT) \
!   { CORE_NAME, #ARCH, IMP, PART, VARIANT, feature_deps::cpu_##CORE_IDENT },
  
  static CONSTEXPR const aarch64_core_data aarch64_cpu_data[] =
  {
--- 63,69 ----
  #define DEFAULT_CPU "generic-armv8-a"
  
  #define AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART, VARIANT) \
!   { CORE_NAME, #ARCH, IMP, PART, unsigned(VARIANT), feature_deps::cpu_##CORE_IDENT },
  
  static CONSTEXPR const aarch64_core_data aarch64_cpu_data[] =
  {
diff -Nrcpad gcc-16-20250511/gcc/config/aarch64/predicates.md gcc-16-20250518/gcc/config/aarch64/predicates.md
*** gcc-16-20250511/gcc/config/aarch64/predicates.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/aarch64/predicates.md	Sun May 18 22:32:07 2025
***************
*** 123,129 ****
  (define_predicate "aarch64_reg_or_and_imm"
     (ior (match_operand 0 "register_operand")
  	(and (match_code "const_vector")
! 	     (match_test "aarch64_simd_valid_and_imm (op)"))))
  
  (define_predicate "aarch64_reg_or_xor_imm"
     (ior (match_operand 0 "register_operand")
--- 123,130 ----
  (define_predicate "aarch64_reg_or_and_imm"
     (ior (match_operand 0 "register_operand")
  	(and (match_code "const_vector")
! 	     (ior (match_test "aarch64_simd_valid_and_imm (op)")
! 		  (match_test "aarch64_simd_valid_and_imm_fmov (op)")))))
  
  (define_predicate "aarch64_reg_or_xor_imm"
     (ior (match_operand 0 "register_operand")
diff -Nrcpad gcc-16-20250511/gcc/config/alpha/alpha.cc gcc-16-20250518/gcc/config/alpha/alpha.cc
*** gcc-16-20250511/gcc/config/alpha/alpha.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/alpha/alpha.cc	Sun May 18 22:32:07 2025
*************** alpha_legitimize_address_1 (rtx x, rtx s
*** 1036,1043 ****
  	    RTL_CONST_CALL_P (insn) = 1;
  	    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), r16);
  
! 	    insn = get_insns ();
! 	    end_sequence ();
  
  	    emit_libcall_block (insn, dest, r0, x);
  	    return dest;
--- 1036,1042 ----
  	    RTL_CONST_CALL_P (insn) = 1;
  	    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), r16);
  
! 	    insn = end_sequence ();
  
  	    emit_libcall_block (insn, dest, r0, x);
  	    return dest;
*************** alpha_legitimize_address_1 (rtx x, rtx s
*** 1059,1066 ****
  	    RTL_CONST_CALL_P (insn) = 1;
  	    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), r16);
  
! 	    insn = get_insns ();
! 	    end_sequence ();
  
  	    eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
  				  UNSPEC_TLSLDM_CALL);
--- 1058,1064 ----
  	    RTL_CONST_CALL_P (insn) = 1;
  	    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), r16);
  
! 	    insn = end_sequence ();
  
  	    eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
  				  UNSPEC_TLSLDM_CALL);
*************** alpha_emit_xfloating_libcall (rtx func,
*** 3214,3221 ****
    CALL_INSN_FUNCTION_USAGE (tmp) = usage;
    RTL_CONST_CALL_P (tmp) = 1;
  
!   tmp = get_insns ();
!   end_sequence ();
  
    emit_libcall_block (tmp, target, reg, equiv);
  }
--- 3212,3218 ----
    CALL_INSN_FUNCTION_USAGE (tmp) = usage;
    RTL_CONST_CALL_P (tmp) = 1;
  
!   tmp = end_sequence ();
  
    emit_libcall_block (tmp, target, reg, equiv);
  }
*************** alpha_gp_save_rtx (void)
*** 5596,5603 ****
        m = validize_mem (m);
        emit_move_insn (m, pic_offset_table_rtx);
  
!       seq = get_insns ();
!       end_sequence ();
  
        /* We used to simply emit the sequence after entry_of_function.
  	 However this breaks the CFG if the first instruction in the
--- 5593,5599 ----
        m = validize_mem (m);
        emit_move_insn (m, pic_offset_table_rtx);
  
!       seq = end_sequence ();
  
        /* We used to simply emit the sequence after entry_of_function.
  	 However this breaks the CFG if the first instruction in the
diff -Nrcpad gcc-16-20250511/gcc/config/arc/arc.cc gcc-16-20250518/gcc/config/arc/arc.cc
*** gcc-16-20250511/gcc/config/arc/arc.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arc/arc.cc	Sun May 18 22:32:07 2025
*************** hwloop_optimize (hwloop_info loop)
*** 8218,8225 ****
    insn = emit_insn (gen_arc_lp (loop->start_label,
  				loop->end_label));
  
!   seq = get_insns ();
!   end_sequence ();
  
    entry_after = BB_END (entry_bb);
    if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1
--- 8218,8224 ----
    insn = emit_insn (gen_arc_lp (loop->start_label,
  				loop->end_label));
  
!   seq = end_sequence ();
  
    entry_after = BB_END (entry_bb);
    if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1
diff -Nrcpad gcc-16-20250511/gcc/config/arm/aarch-common.cc gcc-16-20250518/gcc/config/arm/aarch-common.cc
*** gcc-16-20250511/gcc/config/arm/aarch-common.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/aarch-common.cc	Sun May 18 22:32:07 2025
*************** arm_md_asm_adjust (vec<rtx> &outputs, ve
*** 655,662 ****
  	  emit_move_insn (dest, tmp);
  	}
      }
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
  
    return saw_asm_flag ? seq : NULL;
  }
--- 655,661 ----
  	  emit_move_insn (dest, tmp);
  	}
      }
!   rtx_insn *seq = end_sequence ();
  
    return saw_asm_flag ? seq : NULL;
  }
diff -Nrcpad gcc-16-20250511/gcc/config/arm/aout.h gcc-16-20250518/gcc/config/arm/aout.h
*** gcc-16-20250511/gcc/config/arm/aout.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/aout.h	Sun May 18 22:32:07 2025
***************
*** 69,79 ****
    "d20", "?20", "d21", "?21", "d22", "?22", "d23", "?23",	\
    "d24", "?24", "d25", "?25", "d26", "?26", "d27", "?27",	\
    "d28", "?28", "d29", "?29", "d30", "?30", "d31", "?31",	\
-   "wr0",   "wr1",   "wr2",   "wr3",				\
-   "wr4",   "wr5",   "wr6",   "wr7",				\
-   "wr8",   "wr9",   "wr10",  "wr11",				\
-   "wr12",  "wr13",  "wr14",  "wr15",				\
-   "wcgr0", "wcgr1", "wcgr2", "wcgr3",				\
    "cc", "vfpcc", "sfp", "afp", "apsrq", "apsrge", "p0",		\
    "ra_auth_code"						\
  }
--- 69,74 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm-builtins.cc gcc-16-20250518/gcc/config/arm/arm-builtins.cc
*** gcc-16-20250511/gcc/config/arm/arm-builtins.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm-builtins.cc	Sun May 18 22:32:07 2025
*************** static arm_builtin_cde_datum cde_builtin
*** 816,1067 ****
  
  enum arm_builtins
  {
-   ARM_BUILTIN_GETWCGR0,
-   ARM_BUILTIN_GETWCGR1,
-   ARM_BUILTIN_GETWCGR2,
-   ARM_BUILTIN_GETWCGR3,
- 
-   ARM_BUILTIN_SETWCGR0,
-   ARM_BUILTIN_SETWCGR1,
-   ARM_BUILTIN_SETWCGR2,
-   ARM_BUILTIN_SETWCGR3,
- 
-   ARM_BUILTIN_WZERO,
- 
-   ARM_BUILTIN_WAVG2BR,
-   ARM_BUILTIN_WAVG2HR,
-   ARM_BUILTIN_WAVG2B,
-   ARM_BUILTIN_WAVG2H,
- 
-   ARM_BUILTIN_WACCB,
-   ARM_BUILTIN_WACCH,
-   ARM_BUILTIN_WACCW,
- 
-   ARM_BUILTIN_WMACS,
-   ARM_BUILTIN_WMACSZ,
-   ARM_BUILTIN_WMACU,
-   ARM_BUILTIN_WMACUZ,
- 
-   ARM_BUILTIN_WSADB,
-   ARM_BUILTIN_WSADBZ,
-   ARM_BUILTIN_WSADH,
-   ARM_BUILTIN_WSADHZ,
- 
-   ARM_BUILTIN_WALIGNI,
-   ARM_BUILTIN_WALIGNR0,
-   ARM_BUILTIN_WALIGNR1,
-   ARM_BUILTIN_WALIGNR2,
-   ARM_BUILTIN_WALIGNR3,
- 
-   ARM_BUILTIN_TMIA,
-   ARM_BUILTIN_TMIAPH,
-   ARM_BUILTIN_TMIABB,
-   ARM_BUILTIN_TMIABT,
-   ARM_BUILTIN_TMIATB,
-   ARM_BUILTIN_TMIATT,
- 
-   ARM_BUILTIN_TMOVMSKB,
-   ARM_BUILTIN_TMOVMSKH,
-   ARM_BUILTIN_TMOVMSKW,
- 
-   ARM_BUILTIN_TBCSTB,
-   ARM_BUILTIN_TBCSTH,
-   ARM_BUILTIN_TBCSTW,
- 
-   ARM_BUILTIN_WMADDS,
-   ARM_BUILTIN_WMADDU,
- 
-   ARM_BUILTIN_WPACKHSS,
-   ARM_BUILTIN_WPACKWSS,
-   ARM_BUILTIN_WPACKDSS,
-   ARM_BUILTIN_WPACKHUS,
-   ARM_BUILTIN_WPACKWUS,
-   ARM_BUILTIN_WPACKDUS,
- 
-   ARM_BUILTIN_WADDB,
-   ARM_BUILTIN_WADDH,
-   ARM_BUILTIN_WADDW,
-   ARM_BUILTIN_WADDSSB,
-   ARM_BUILTIN_WADDSSH,
-   ARM_BUILTIN_WADDSSW,
-   ARM_BUILTIN_WADDUSB,
-   ARM_BUILTIN_WADDUSH,
-   ARM_BUILTIN_WADDUSW,
-   ARM_BUILTIN_WSUBB,
-   ARM_BUILTIN_WSUBH,
-   ARM_BUILTIN_WSUBW,
-   ARM_BUILTIN_WSUBSSB,
-   ARM_BUILTIN_WSUBSSH,
-   ARM_BUILTIN_WSUBSSW,
-   ARM_BUILTIN_WSUBUSB,
-   ARM_BUILTIN_WSUBUSH,
-   ARM_BUILTIN_WSUBUSW,
- 
-   ARM_BUILTIN_WAND,
-   ARM_BUILTIN_WANDN,
-   ARM_BUILTIN_WOR,
-   ARM_BUILTIN_WXOR,
- 
-   ARM_BUILTIN_WCMPEQB,
-   ARM_BUILTIN_WCMPEQH,
-   ARM_BUILTIN_WCMPEQW,
-   ARM_BUILTIN_WCMPGTUB,
-   ARM_BUILTIN_WCMPGTUH,
-   ARM_BUILTIN_WCMPGTUW,
-   ARM_BUILTIN_WCMPGTSB,
-   ARM_BUILTIN_WCMPGTSH,
-   ARM_BUILTIN_WCMPGTSW,
- 
-   ARM_BUILTIN_TEXTRMSB,
-   ARM_BUILTIN_TEXTRMSH,
-   ARM_BUILTIN_TEXTRMSW,
-   ARM_BUILTIN_TEXTRMUB,
-   ARM_BUILTIN_TEXTRMUH,
-   ARM_BUILTIN_TEXTRMUW,
-   ARM_BUILTIN_TINSRB,
-   ARM_BUILTIN_TINSRH,
-   ARM_BUILTIN_TINSRW,
- 
-   ARM_BUILTIN_WMAXSW,
-   ARM_BUILTIN_WMAXSH,
-   ARM_BUILTIN_WMAXSB,
-   ARM_BUILTIN_WMAXUW,
-   ARM_BUILTIN_WMAXUH,
-   ARM_BUILTIN_WMAXUB,
-   ARM_BUILTIN_WMINSW,
-   ARM_BUILTIN_WMINSH,
-   ARM_BUILTIN_WMINSB,
-   ARM_BUILTIN_WMINUW,
-   ARM_BUILTIN_WMINUH,
-   ARM_BUILTIN_WMINUB,
- 
-   ARM_BUILTIN_WMULUM,
-   ARM_BUILTIN_WMULSM,
-   ARM_BUILTIN_WMULUL,
- 
-   ARM_BUILTIN_PSADBH,
-   ARM_BUILTIN_WSHUFH,
- 
-   ARM_BUILTIN_WSLLH,
-   ARM_BUILTIN_WSLLW,
-   ARM_BUILTIN_WSLLD,
-   ARM_BUILTIN_WSRAH,
-   ARM_BUILTIN_WSRAW,
-   ARM_BUILTIN_WSRAD,
-   ARM_BUILTIN_WSRLH,
-   ARM_BUILTIN_WSRLW,
-   ARM_BUILTIN_WSRLD,
-   ARM_BUILTIN_WRORH,
-   ARM_BUILTIN_WRORW,
-   ARM_BUILTIN_WRORD,
-   ARM_BUILTIN_WSLLHI,
-   ARM_BUILTIN_WSLLWI,
-   ARM_BUILTIN_WSLLDI,
-   ARM_BUILTIN_WSRAHI,
-   ARM_BUILTIN_WSRAWI,
-   ARM_BUILTIN_WSRADI,
-   ARM_BUILTIN_WSRLHI,
-   ARM_BUILTIN_WSRLWI,
-   ARM_BUILTIN_WSRLDI,
-   ARM_BUILTIN_WRORHI,
-   ARM_BUILTIN_WRORWI,
-   ARM_BUILTIN_WRORDI,
- 
-   ARM_BUILTIN_WUNPCKIHB,
-   ARM_BUILTIN_WUNPCKIHH,
-   ARM_BUILTIN_WUNPCKIHW,
-   ARM_BUILTIN_WUNPCKILB,
-   ARM_BUILTIN_WUNPCKILH,
-   ARM_BUILTIN_WUNPCKILW,
- 
-   ARM_BUILTIN_WUNPCKEHSB,
-   ARM_BUILTIN_WUNPCKEHSH,
-   ARM_BUILTIN_WUNPCKEHSW,
-   ARM_BUILTIN_WUNPCKEHUB,
-   ARM_BUILTIN_WUNPCKEHUH,
-   ARM_BUILTIN_WUNPCKEHUW,
-   ARM_BUILTIN_WUNPCKELSB,
-   ARM_BUILTIN_WUNPCKELSH,
-   ARM_BUILTIN_WUNPCKELSW,
-   ARM_BUILTIN_WUNPCKELUB,
-   ARM_BUILTIN_WUNPCKELUH,
-   ARM_BUILTIN_WUNPCKELUW,
- 
-   ARM_BUILTIN_WABSB,
-   ARM_BUILTIN_WABSH,
-   ARM_BUILTIN_WABSW,
- 
-   ARM_BUILTIN_WADDSUBHX,
-   ARM_BUILTIN_WSUBADDHX,
- 
-   ARM_BUILTIN_WABSDIFFB,
-   ARM_BUILTIN_WABSDIFFH,
-   ARM_BUILTIN_WABSDIFFW,
- 
-   ARM_BUILTIN_WADDCH,
-   ARM_BUILTIN_WADDCW,
- 
-   ARM_BUILTIN_WAVG4,
-   ARM_BUILTIN_WAVG4R,
- 
-   ARM_BUILTIN_WMADDSX,
-   ARM_BUILTIN_WMADDUX,
- 
-   ARM_BUILTIN_WMADDSN,
-   ARM_BUILTIN_WMADDUN,
- 
-   ARM_BUILTIN_WMULWSM,
-   ARM_BUILTIN_WMULWUM,
- 
-   ARM_BUILTIN_WMULWSMR,
-   ARM_BUILTIN_WMULWUMR,
- 
-   ARM_BUILTIN_WMULWL,
- 
-   ARM_BUILTIN_WMULSMR,
-   ARM_BUILTIN_WMULUMR,
- 
-   ARM_BUILTIN_WQMULM,
-   ARM_BUILTIN_WQMULMR,
- 
-   ARM_BUILTIN_WQMULWM,
-   ARM_BUILTIN_WQMULWMR,
- 
-   ARM_BUILTIN_WADDBHUSM,
-   ARM_BUILTIN_WADDBHUSL,
- 
-   ARM_BUILTIN_WQMIABB,
-   ARM_BUILTIN_WQMIABT,
-   ARM_BUILTIN_WQMIATB,
-   ARM_BUILTIN_WQMIATT,
- 
-   ARM_BUILTIN_WQMIABBN,
-   ARM_BUILTIN_WQMIABTN,
-   ARM_BUILTIN_WQMIATBN,
-   ARM_BUILTIN_WQMIATTN,
- 
-   ARM_BUILTIN_WMIABB,
-   ARM_BUILTIN_WMIABT,
-   ARM_BUILTIN_WMIATB,
-   ARM_BUILTIN_WMIATT,
- 
-   ARM_BUILTIN_WMIABBN,
-   ARM_BUILTIN_WMIABTN,
-   ARM_BUILTIN_WMIATBN,
-   ARM_BUILTIN_WMIATTN,
- 
-   ARM_BUILTIN_WMIAWBB,
-   ARM_BUILTIN_WMIAWBT,
-   ARM_BUILTIN_WMIAWTB,
-   ARM_BUILTIN_WMIAWTT,
- 
-   ARM_BUILTIN_WMIAWBBN,
-   ARM_BUILTIN_WMIAWBTN,
-   ARM_BUILTIN_WMIAWTBN,
-   ARM_BUILTIN_WMIAWTTN,
- 
-   ARM_BUILTIN_WMERGE,
- 
    ARM_BUILTIN_GET_FPSCR,
    ARM_BUILTIN_SET_FPSCR,
    ARM_BUILTIN_GET_FPSCR_NZCVQC,
--- 816,821 ----
*************** struct builtin_description
*** 1878,1992 ****
  
  static const struct builtin_description bdesc_2arg[] =
  {
- #define IWMMXT_BUILTIN(code, string, builtin) \
-   { isa_bit_iwmmxt, CODE_FOR_##code, \
-     "__builtin_arm_" string,			     \
-     ARM_BUILTIN_##builtin, UNKNOWN, 0 },
- 
- #define IWMMXT2_BUILTIN(code, string, builtin) \
-   { isa_bit_iwmmxt2, CODE_FOR_##code, \
-     "__builtin_arm_" string,			      \
-     ARM_BUILTIN_##builtin, UNKNOWN, 0 },
- 
-   IWMMXT_BUILTIN (addv8qi3, "waddb", WADDB)
-   IWMMXT_BUILTIN (addv4hi3, "waddh", WADDH)
-   IWMMXT_BUILTIN (addv2si3, "waddw", WADDW)
-   IWMMXT_BUILTIN (subv8qi3, "wsubb", WSUBB)
-   IWMMXT_BUILTIN (subv4hi3, "wsubh", WSUBH)
-   IWMMXT_BUILTIN (subv2si3, "wsubw", WSUBW)
-   IWMMXT_BUILTIN (ssaddv8qi3, "waddbss", WADDSSB)
-   IWMMXT_BUILTIN (ssaddv4hi3, "waddhss", WADDSSH)
-   IWMMXT_BUILTIN (ssaddv2si3, "waddwss", WADDSSW)
-   IWMMXT_BUILTIN (sssubv8qi3, "wsubbss", WSUBSSB)
-   IWMMXT_BUILTIN (sssubv4hi3, "wsubhss", WSUBSSH)
-   IWMMXT_BUILTIN (sssubv2si3, "wsubwss", WSUBSSW)
-   IWMMXT_BUILTIN (usaddv8qi3, "waddbus", WADDUSB)
-   IWMMXT_BUILTIN (usaddv4hi3, "waddhus", WADDUSH)
-   IWMMXT_BUILTIN (usaddv2si3, "waddwus", WADDUSW)
-   IWMMXT_BUILTIN (ussubv8qi3, "wsubbus", WSUBUSB)
-   IWMMXT_BUILTIN (ussubv4hi3, "wsubhus", WSUBUSH)
-   IWMMXT_BUILTIN (ussubv2si3, "wsubwus", WSUBUSW)
-   IWMMXT_BUILTIN (mulv4hi3, "wmulul", WMULUL)
-   IWMMXT_BUILTIN (smulv4hi3_highpart, "wmulsm", WMULSM)
-   IWMMXT_BUILTIN (umulv4hi3_highpart, "wmulum", WMULUM)
-   IWMMXT_BUILTIN (eqv8qi3, "wcmpeqb", WCMPEQB)
-   IWMMXT_BUILTIN (eqv4hi3, "wcmpeqh", WCMPEQH)
-   IWMMXT_BUILTIN (eqv2si3, "wcmpeqw", WCMPEQW)
-   IWMMXT_BUILTIN (gtuv8qi3, "wcmpgtub", WCMPGTUB)
-   IWMMXT_BUILTIN (gtuv4hi3, "wcmpgtuh", WCMPGTUH)
-   IWMMXT_BUILTIN (gtuv2si3, "wcmpgtuw", WCMPGTUW)
-   IWMMXT_BUILTIN (gtv8qi3, "wcmpgtsb", WCMPGTSB)
-   IWMMXT_BUILTIN (gtv4hi3, "wcmpgtsh", WCMPGTSH)
-   IWMMXT_BUILTIN (gtv2si3, "wcmpgtsw", WCMPGTSW)
-   IWMMXT_BUILTIN (umaxv8qi3, "wmaxub", WMAXUB)
-   IWMMXT_BUILTIN (smaxv8qi3, "wmaxsb", WMAXSB)
-   IWMMXT_BUILTIN (umaxv4hi3, "wmaxuh", WMAXUH)
-   IWMMXT_BUILTIN (smaxv4hi3, "wmaxsh", WMAXSH)
-   IWMMXT_BUILTIN (umaxv2si3, "wmaxuw", WMAXUW)
-   IWMMXT_BUILTIN (smaxv2si3, "wmaxsw", WMAXSW)
-   IWMMXT_BUILTIN (uminv8qi3, "wminub", WMINUB)
-   IWMMXT_BUILTIN (sminv8qi3, "wminsb", WMINSB)
-   IWMMXT_BUILTIN (uminv4hi3, "wminuh", WMINUH)
-   IWMMXT_BUILTIN (sminv4hi3, "wminsh", WMINSH)
-   IWMMXT_BUILTIN (uminv2si3, "wminuw", WMINUW)
-   IWMMXT_BUILTIN (sminv2si3, "wminsw", WMINSW)
-   IWMMXT_BUILTIN (iwmmxt_anddi3, "wand", WAND)
-   IWMMXT_BUILTIN (iwmmxt_nanddi3, "wandn", WANDN)
-   IWMMXT_BUILTIN (iwmmxt_iordi3, "wor", WOR)
-   IWMMXT_BUILTIN (iwmmxt_xordi3, "wxor", WXOR)
-   IWMMXT_BUILTIN (iwmmxt_uavgv8qi3, "wavg2b", WAVG2B)
-   IWMMXT_BUILTIN (iwmmxt_uavgv4hi3, "wavg2h", WAVG2H)
-   IWMMXT_BUILTIN (iwmmxt_uavgrndv8qi3, "wavg2br", WAVG2BR)
-   IWMMXT_BUILTIN (iwmmxt_uavgrndv4hi3, "wavg2hr", WAVG2HR)
-   IWMMXT_BUILTIN (iwmmxt_wunpckilb, "wunpckilb", WUNPCKILB)
-   IWMMXT_BUILTIN (iwmmxt_wunpckilh, "wunpckilh", WUNPCKILH)
-   IWMMXT_BUILTIN (iwmmxt_wunpckilw, "wunpckilw", WUNPCKILW)
-   IWMMXT_BUILTIN (iwmmxt_wunpckihb, "wunpckihb", WUNPCKIHB)
-   IWMMXT_BUILTIN (iwmmxt_wunpckihh, "wunpckihh", WUNPCKIHH)
-   IWMMXT_BUILTIN (iwmmxt_wunpckihw, "wunpckihw", WUNPCKIHW)
-   IWMMXT2_BUILTIN (iwmmxt_waddsubhx, "waddsubhx", WADDSUBHX)
-   IWMMXT2_BUILTIN (iwmmxt_wsubaddhx, "wsubaddhx", WSUBADDHX)
-   IWMMXT2_BUILTIN (iwmmxt_wabsdiffb, "wabsdiffb", WABSDIFFB)
-   IWMMXT2_BUILTIN (iwmmxt_wabsdiffh, "wabsdiffh", WABSDIFFH)
-   IWMMXT2_BUILTIN (iwmmxt_wabsdiffw, "wabsdiffw", WABSDIFFW)
-   IWMMXT2_BUILTIN (iwmmxt_avg4, "wavg4", WAVG4)
-   IWMMXT2_BUILTIN (iwmmxt_avg4r, "wavg4r", WAVG4R)
-   IWMMXT2_BUILTIN (iwmmxt_wmulwsm, "wmulwsm", WMULWSM)
-   IWMMXT2_BUILTIN (iwmmxt_wmulwum, "wmulwum", WMULWUM)
-   IWMMXT2_BUILTIN (iwmmxt_wmulwsmr, "wmulwsmr", WMULWSMR)
-   IWMMXT2_BUILTIN (iwmmxt_wmulwumr, "wmulwumr", WMULWUMR)
-   IWMMXT2_BUILTIN (iwmmxt_wmulwl, "wmulwl", WMULWL)
-   IWMMXT2_BUILTIN (iwmmxt_wmulsmr, "wmulsmr", WMULSMR)
-   IWMMXT2_BUILTIN (iwmmxt_wmulumr, "wmulumr", WMULUMR)
-   IWMMXT2_BUILTIN (iwmmxt_wqmulm, "wqmulm", WQMULM)
-   IWMMXT2_BUILTIN (iwmmxt_wqmulmr, "wqmulmr", WQMULMR)
-   IWMMXT2_BUILTIN (iwmmxt_wqmulwm, "wqmulwm", WQMULWM)
-   IWMMXT2_BUILTIN (iwmmxt_wqmulwmr, "wqmulwmr", WQMULWMR)
-   IWMMXT_BUILTIN (iwmmxt_walignr0, "walignr0", WALIGNR0)
-   IWMMXT_BUILTIN (iwmmxt_walignr1, "walignr1", WALIGNR1)
-   IWMMXT_BUILTIN (iwmmxt_walignr2, "walignr2", WALIGNR2)
-   IWMMXT_BUILTIN (iwmmxt_walignr3, "walignr3", WALIGNR3)
- 
- #define IWMMXT_BUILTIN2(code, builtin) \
-   { isa_bit_iwmmxt, CODE_FOR_##code, NULL, \
-     ARM_BUILTIN_##builtin, UNKNOWN, 0 },
- 
- #define IWMMXT2_BUILTIN2(code, builtin) \
-   { isa_bit_iwmmxt2, CODE_FOR_##code, NULL, \
-     ARM_BUILTIN_##builtin, UNKNOWN, 0 },
- 
-   IWMMXT2_BUILTIN2 (iwmmxt_waddbhusm, WADDBHUSM)
-   IWMMXT2_BUILTIN2 (iwmmxt_waddbhusl, WADDBHUSL)
-   IWMMXT_BUILTIN2 (iwmmxt_wpackhss, WPACKHSS)
-   IWMMXT_BUILTIN2 (iwmmxt_wpackwss, WPACKWSS)
-   IWMMXT_BUILTIN2 (iwmmxt_wpackdss, WPACKDSS)
-   IWMMXT_BUILTIN2 (iwmmxt_wpackhus, WPACKHUS)
-   IWMMXT_BUILTIN2 (iwmmxt_wpackwus, WPACKWUS)
-   IWMMXT_BUILTIN2 (iwmmxt_wpackdus, WPACKDUS)
-   IWMMXT_BUILTIN2 (iwmmxt_wmacuz, WMACUZ)
-   IWMMXT_BUILTIN2 (iwmmxt_wmacsz, WMACSZ)
- 
- 
  #define FP_BUILTIN(L, U) \
    {isa_nobit, CODE_FOR_##L, "__builtin_arm_"#L, ARM_BUILTIN_##U, \
     UNKNOWN, 0},
--- 1632,1637 ----
*************** static const struct builtin_description
*** 2013,2043 ****
  
  static const struct builtin_description bdesc_1arg[] =
  {
-   IWMMXT_BUILTIN (iwmmxt_tmovmskb, "tmovmskb", TMOVMSKB)
-   IWMMXT_BUILTIN (iwmmxt_tmovmskh, "tmovmskh", TMOVMSKH)
-   IWMMXT_BUILTIN (iwmmxt_tmovmskw, "tmovmskw", TMOVMSKW)
-   IWMMXT_BUILTIN (iwmmxt_waccb, "waccb", WACCB)
-   IWMMXT_BUILTIN (iwmmxt_wacch, "wacch", WACCH)
-   IWMMXT_BUILTIN (iwmmxt_waccw, "waccw", WACCW)
-   IWMMXT_BUILTIN (iwmmxt_wunpckehub, "wunpckehub", WUNPCKEHUB)
-   IWMMXT_BUILTIN (iwmmxt_wunpckehuh, "wunpckehuh", WUNPCKEHUH)
-   IWMMXT_BUILTIN (iwmmxt_wunpckehuw, "wunpckehuw", WUNPCKEHUW)
-   IWMMXT_BUILTIN (iwmmxt_wunpckehsb, "wunpckehsb", WUNPCKEHSB)
-   IWMMXT_BUILTIN (iwmmxt_wunpckehsh, "wunpckehsh", WUNPCKEHSH)
-   IWMMXT_BUILTIN (iwmmxt_wunpckehsw, "wunpckehsw", WUNPCKEHSW)
-   IWMMXT_BUILTIN (iwmmxt_wunpckelub, "wunpckelub", WUNPCKELUB)
-   IWMMXT_BUILTIN (iwmmxt_wunpckeluh, "wunpckeluh", WUNPCKELUH)
-   IWMMXT_BUILTIN (iwmmxt_wunpckeluw, "wunpckeluw", WUNPCKELUW)
-   IWMMXT_BUILTIN (iwmmxt_wunpckelsb, "wunpckelsb", WUNPCKELSB)
-   IWMMXT_BUILTIN (iwmmxt_wunpckelsh, "wunpckelsh", WUNPCKELSH)
-   IWMMXT_BUILTIN (iwmmxt_wunpckelsw, "wunpckelsw", WUNPCKELSW)
-   IWMMXT2_BUILTIN (iwmmxt_wabsv8qi3, "wabsb", WABSB)
-   IWMMXT2_BUILTIN (iwmmxt_wabsv4hi3, "wabsh", WABSH)
-   IWMMXT2_BUILTIN (iwmmxt_wabsv2si3, "wabsw", WABSW)
-   IWMMXT_BUILTIN (tbcstv8qi, "tbcstb", TBCSTB)
-   IWMMXT_BUILTIN (tbcstv4hi, "tbcsth", TBCSTH)
-   IWMMXT_BUILTIN (tbcstv2si, "tbcstw", TBCSTW)
- 
  #define CRYPTO1(L, U, R, A) CRYPTO_BUILTIN (L, U)
  #define CRYPTO2(L, U, R, A1, A2)
  #define CRYPTO3(L, U, R, A1, A2, A3)
--- 1658,1663 ----
*************** static const struct builtin_description
*** 2059,2445 ****
   };
  #undef CRYPTO_BUILTIN
  
- /* Set up all the iWMMXt builtins.  This is not called if
-    TARGET_IWMMXT is zero.  */
- 
- static void
- arm_init_iwmmxt_builtins (void)
- {
-   const struct builtin_description * d;
-   size_t i;
- 
-   tree V2SI_type_node = build_vector_type_for_mode (intSI_type_node, V2SImode);
-   tree V4HI_type_node = build_vector_type_for_mode (intHI_type_node, V4HImode);
-   tree V8QI_type_node = build_vector_type_for_mode (intQI_type_node, V8QImode);
- 
-   tree v8qi_ftype_v8qi_v8qi_int
-     = build_function_type_list (V8QI_type_node,
- 				V8QI_type_node, V8QI_type_node,
- 				integer_type_node, NULL_TREE);
-   tree v4hi_ftype_v4hi_int
-     = build_function_type_list (V4HI_type_node,
- 				V4HI_type_node, integer_type_node, NULL_TREE);
-   tree v2si_ftype_v2si_int
-     = build_function_type_list (V2SI_type_node,
- 				V2SI_type_node, integer_type_node, NULL_TREE);
-   tree v2si_ftype_di_di
-     = build_function_type_list (V2SI_type_node,
- 				long_long_integer_type_node,
- 				long_long_integer_type_node,
- 				NULL_TREE);
-   tree di_ftype_di_int
-     = build_function_type_list (long_long_integer_type_node,
- 				long_long_integer_type_node,
- 				integer_type_node, NULL_TREE);
-   tree di_ftype_di_int_int
-     = build_function_type_list (long_long_integer_type_node,
- 				long_long_integer_type_node,
- 				integer_type_node,
- 				integer_type_node, NULL_TREE);
-   tree int_ftype_v8qi
-     = build_function_type_list (integer_type_node,
- 				V8QI_type_node, NULL_TREE);
-   tree int_ftype_v4hi
-     = build_function_type_list (integer_type_node,
- 				V4HI_type_node, NULL_TREE);
-   tree int_ftype_v2si
-     = build_function_type_list (integer_type_node,
- 				V2SI_type_node, NULL_TREE);
-   tree int_ftype_v8qi_int
-     = build_function_type_list (integer_type_node,
- 				V8QI_type_node, integer_type_node, NULL_TREE);
-   tree int_ftype_v4hi_int
-     = build_function_type_list (integer_type_node,
- 				V4HI_type_node, integer_type_node, NULL_TREE);
-   tree int_ftype_v2si_int
-     = build_function_type_list (integer_type_node,
- 				V2SI_type_node, integer_type_node, NULL_TREE);
-   tree v8qi_ftype_v8qi_int_int
-     = build_function_type_list (V8QI_type_node,
- 				V8QI_type_node, integer_type_node,
- 				integer_type_node, NULL_TREE);
-   tree v4hi_ftype_v4hi_int_int
-     = build_function_type_list (V4HI_type_node,
- 				V4HI_type_node, integer_type_node,
- 				integer_type_node, NULL_TREE);
-   tree v2si_ftype_v2si_int_int
-     = build_function_type_list (V2SI_type_node,
- 				V2SI_type_node, integer_type_node,
- 				integer_type_node, NULL_TREE);
-   /* Miscellaneous.  */
-   tree v8qi_ftype_v4hi_v4hi
-     = build_function_type_list (V8QI_type_node,
- 				V4HI_type_node, V4HI_type_node, NULL_TREE);
-   tree v4hi_ftype_v2si_v2si
-     = build_function_type_list (V4HI_type_node,
- 				V2SI_type_node, V2SI_type_node, NULL_TREE);
-   tree v8qi_ftype_v4hi_v8qi
-     = build_function_type_list (V8QI_type_node,
- 	                        V4HI_type_node, V8QI_type_node, NULL_TREE);
-   tree v2si_ftype_v4hi_v4hi
-     = build_function_type_list (V2SI_type_node,
- 				V4HI_type_node, V4HI_type_node, NULL_TREE);
-   tree v2si_ftype_v8qi_v8qi
-     = build_function_type_list (V2SI_type_node,
- 				V8QI_type_node, V8QI_type_node, NULL_TREE);
-   tree v4hi_ftype_v4hi_di
-     = build_function_type_list (V4HI_type_node,
- 				V4HI_type_node, long_long_integer_type_node,
- 				NULL_TREE);
-   tree v2si_ftype_v2si_di
-     = build_function_type_list (V2SI_type_node,
- 				V2SI_type_node, long_long_integer_type_node,
- 				NULL_TREE);
-   tree di_ftype_void
-     = build_function_type_list (long_long_unsigned_type_node, NULL_TREE);
-   tree int_ftype_void
-     = build_function_type_list (integer_type_node, NULL_TREE);
-   tree di_ftype_v8qi
-     = build_function_type_list (long_long_integer_type_node,
- 				V8QI_type_node, NULL_TREE);
-   tree di_ftype_v4hi
-     = build_function_type_list (long_long_integer_type_node,
- 				V4HI_type_node, NULL_TREE);
-   tree di_ftype_v2si
-     = build_function_type_list (long_long_integer_type_node,
- 				V2SI_type_node, NULL_TREE);
-   tree v2si_ftype_v4hi
-     = build_function_type_list (V2SI_type_node,
- 				V4HI_type_node, NULL_TREE);
-   tree v4hi_ftype_v8qi
-     = build_function_type_list (V4HI_type_node,
- 				V8QI_type_node, NULL_TREE);
-   tree v8qi_ftype_v8qi
-     = build_function_type_list (V8QI_type_node,
- 	                        V8QI_type_node, NULL_TREE);
-   tree v4hi_ftype_v4hi
-     = build_function_type_list (V4HI_type_node,
- 	                        V4HI_type_node, NULL_TREE);
-   tree v2si_ftype_v2si
-     = build_function_type_list (V2SI_type_node,
- 	                        V2SI_type_node, NULL_TREE);
- 
-   tree di_ftype_di_v4hi_v4hi
-     = build_function_type_list (long_long_unsigned_type_node,
- 				long_long_unsigned_type_node,
- 				V4HI_type_node, V4HI_type_node,
- 				NULL_TREE);
- 
-   tree di_ftype_v4hi_v4hi
-     = build_function_type_list (long_long_unsigned_type_node,
- 				V4HI_type_node,V4HI_type_node,
- 				NULL_TREE);
- 
-   tree v2si_ftype_v2si_v4hi_v4hi
-     = build_function_type_list (V2SI_type_node,
-                                 V2SI_type_node, V4HI_type_node,
-                                 V4HI_type_node, NULL_TREE);
- 
-   tree v2si_ftype_v2si_v8qi_v8qi
-     = build_function_type_list (V2SI_type_node,
-                                 V2SI_type_node, V8QI_type_node,
-                                 V8QI_type_node, NULL_TREE);
- 
-   tree di_ftype_di_v2si_v2si
-      = build_function_type_list (long_long_unsigned_type_node,
-                                  long_long_unsigned_type_node,
-                                  V2SI_type_node, V2SI_type_node,
-                                  NULL_TREE);
- 
-    tree di_ftype_di_di_int
-      = build_function_type_list (long_long_unsigned_type_node,
-                                  long_long_unsigned_type_node,
-                                  long_long_unsigned_type_node,
-                                  integer_type_node, NULL_TREE);
- 
-    tree void_ftype_int
-      = build_function_type_list (void_type_node,
-                                  integer_type_node, NULL_TREE);
- 
-    tree v8qi_ftype_char
-      = build_function_type_list (V8QI_type_node,
-                                  signed_char_type_node, NULL_TREE);
- 
-    tree v4hi_ftype_short
-      = build_function_type_list (V4HI_type_node,
-                                  short_integer_type_node, NULL_TREE);
- 
-    tree v2si_ftype_int
-      = build_function_type_list (V2SI_type_node,
-                                  integer_type_node, NULL_TREE);
- 
-   /* Normal vector binops.  */
-   tree v8qi_ftype_v8qi_v8qi
-     = build_function_type_list (V8QI_type_node,
- 				V8QI_type_node, V8QI_type_node, NULL_TREE);
-   tree v4hi_ftype_v4hi_v4hi
-     = build_function_type_list (V4HI_type_node,
- 				V4HI_type_node,V4HI_type_node, NULL_TREE);
-   tree v2si_ftype_v2si_v2si
-     = build_function_type_list (V2SI_type_node,
- 				V2SI_type_node, V2SI_type_node, NULL_TREE);
-   tree di_ftype_di_di
-     = build_function_type_list (long_long_unsigned_type_node,
- 				long_long_unsigned_type_node,
- 				long_long_unsigned_type_node,
- 				NULL_TREE);
- 
-   /* Add all builtins that are more or less simple operations on two
-      operands.  */
-   for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++)
-     {
-       /* Use one of the operands; the target can have a different mode for
- 	 mask-generating compares.  */
-       machine_mode mode;
-       tree type;
- 
-       if (d->name == 0
- 	  || !(d->feature == isa_bit_iwmmxt
- 	       || d->feature == isa_bit_iwmmxt2))
- 	continue;
- 
-       mode = insn_data[d->icode].operand[1].mode;
- 
-       switch (mode)
- 	{
- 	case E_V8QImode:
- 	  type = v8qi_ftype_v8qi_v8qi;
- 	  break;
- 	case E_V4HImode:
- 	  type = v4hi_ftype_v4hi_v4hi;
- 	  break;
- 	case E_V2SImode:
- 	  type = v2si_ftype_v2si_v2si;
- 	  break;
- 	case E_DImode:
- 	  type = di_ftype_di_di;
- 	  break;
- 
- 	default:
- 	  gcc_unreachable ();
- 	}
- 
-       def_mbuiltin (d->feature, d->name, type, d->code);
-     }
- 
-   /* Add the remaining MMX insns with somewhat more complicated types.  */
- #define iwmmx_mbuiltin(NAME, TYPE, CODE)			\
-   def_mbuiltin (isa_bit_iwmmxt, "__builtin_arm_" NAME, \
- 		(TYPE), ARM_BUILTIN_ ## CODE)
- 
- #define iwmmx2_mbuiltin(NAME, TYPE, CODE)                      \
-   def_mbuiltin (isa_bit_iwmmxt2, "__builtin_arm_" NAME, \
- 		(TYPE),	ARM_BUILTIN_ ## CODE)
- 
-   iwmmx_mbuiltin ("wzero", di_ftype_void, WZERO);
-   iwmmx_mbuiltin ("setwcgr0", void_ftype_int, SETWCGR0);
-   iwmmx_mbuiltin ("setwcgr1", void_ftype_int, SETWCGR1);
-   iwmmx_mbuiltin ("setwcgr2", void_ftype_int, SETWCGR2);
-   iwmmx_mbuiltin ("setwcgr3", void_ftype_int, SETWCGR3);
-   iwmmx_mbuiltin ("getwcgr0", int_ftype_void, GETWCGR0);
-   iwmmx_mbuiltin ("getwcgr1", int_ftype_void, GETWCGR1);
-   iwmmx_mbuiltin ("getwcgr2", int_ftype_void, GETWCGR2);
-   iwmmx_mbuiltin ("getwcgr3", int_ftype_void, GETWCGR3);
- 
-   iwmmx_mbuiltin ("wsllh", v4hi_ftype_v4hi_di, WSLLH);
-   iwmmx_mbuiltin ("wsllw", v2si_ftype_v2si_di, WSLLW);
-   iwmmx_mbuiltin ("wslld", di_ftype_di_di, WSLLD);
-   iwmmx_mbuiltin ("wsllhi", v4hi_ftype_v4hi_int, WSLLHI);
-   iwmmx_mbuiltin ("wsllwi", v2si_ftype_v2si_int, WSLLWI);
-   iwmmx_mbuiltin ("wslldi", di_ftype_di_int, WSLLDI);
- 
-   iwmmx_mbuiltin ("wsrlh", v4hi_ftype_v4hi_di, WSRLH);
-   iwmmx_mbuiltin ("wsrlw", v2si_ftype_v2si_di, WSRLW);
-   iwmmx_mbuiltin ("wsrld", di_ftype_di_di, WSRLD);
-   iwmmx_mbuiltin ("wsrlhi", v4hi_ftype_v4hi_int, WSRLHI);
-   iwmmx_mbuiltin ("wsrlwi", v2si_ftype_v2si_int, WSRLWI);
-   iwmmx_mbuiltin ("wsrldi", di_ftype_di_int, WSRLDI);
- 
-   iwmmx_mbuiltin ("wsrah", v4hi_ftype_v4hi_di, WSRAH);
-   iwmmx_mbuiltin ("wsraw", v2si_ftype_v2si_di, WSRAW);
-   iwmmx_mbuiltin ("wsrad", di_ftype_di_di, WSRAD);
-   iwmmx_mbuiltin ("wsrahi", v4hi_ftype_v4hi_int, WSRAHI);
-   iwmmx_mbuiltin ("wsrawi", v2si_ftype_v2si_int, WSRAWI);
-   iwmmx_mbuiltin ("wsradi", di_ftype_di_int, WSRADI);
- 
-   iwmmx_mbuiltin ("wrorh", v4hi_ftype_v4hi_di, WRORH);
-   iwmmx_mbuiltin ("wrorw", v2si_ftype_v2si_di, WRORW);
-   iwmmx_mbuiltin ("wrord", di_ftype_di_di, WRORD);
-   iwmmx_mbuiltin ("wrorhi", v4hi_ftype_v4hi_int, WRORHI);
-   iwmmx_mbuiltin ("wrorwi", v2si_ftype_v2si_int, WRORWI);
-   iwmmx_mbuiltin ("wrordi", di_ftype_di_int, WRORDI);
- 
-   iwmmx_mbuiltin ("wshufh", v4hi_ftype_v4hi_int, WSHUFH);
- 
-   iwmmx_mbuiltin ("wsadb", v2si_ftype_v2si_v8qi_v8qi, WSADB);
-   iwmmx_mbuiltin ("wsadh", v2si_ftype_v2si_v4hi_v4hi, WSADH);
-   iwmmx_mbuiltin ("wmadds", v2si_ftype_v4hi_v4hi, WMADDS);
-   iwmmx2_mbuiltin ("wmaddsx", v2si_ftype_v4hi_v4hi, WMADDSX);
-   iwmmx2_mbuiltin ("wmaddsn", v2si_ftype_v4hi_v4hi, WMADDSN);
-   iwmmx_mbuiltin ("wmaddu", v2si_ftype_v4hi_v4hi, WMADDU);
-   iwmmx2_mbuiltin ("wmaddux", v2si_ftype_v4hi_v4hi, WMADDUX);
-   iwmmx2_mbuiltin ("wmaddun", v2si_ftype_v4hi_v4hi, WMADDUN);
-   iwmmx_mbuiltin ("wsadbz", v2si_ftype_v8qi_v8qi, WSADBZ);
-   iwmmx_mbuiltin ("wsadhz", v2si_ftype_v4hi_v4hi, WSADHZ);
- 
-   iwmmx_mbuiltin ("textrmsb", int_ftype_v8qi_int, TEXTRMSB);
-   iwmmx_mbuiltin ("textrmsh", int_ftype_v4hi_int, TEXTRMSH);
-   iwmmx_mbuiltin ("textrmsw", int_ftype_v2si_int, TEXTRMSW);
-   iwmmx_mbuiltin ("textrmub", int_ftype_v8qi_int, TEXTRMUB);
-   iwmmx_mbuiltin ("textrmuh", int_ftype_v4hi_int, TEXTRMUH);
-   iwmmx_mbuiltin ("textrmuw", int_ftype_v2si_int, TEXTRMUW);
-   iwmmx_mbuiltin ("tinsrb", v8qi_ftype_v8qi_int_int, TINSRB);
-   iwmmx_mbuiltin ("tinsrh", v4hi_ftype_v4hi_int_int, TINSRH);
-   iwmmx_mbuiltin ("tinsrw", v2si_ftype_v2si_int_int, TINSRW);
- 
-   iwmmx_mbuiltin ("waccb", di_ftype_v8qi, WACCB);
-   iwmmx_mbuiltin ("wacch", di_ftype_v4hi, WACCH);
-   iwmmx_mbuiltin ("waccw", di_ftype_v2si, WACCW);
- 
-   iwmmx_mbuiltin ("tmovmskb", int_ftype_v8qi, TMOVMSKB);
-   iwmmx_mbuiltin ("tmovmskh", int_ftype_v4hi, TMOVMSKH);
-   iwmmx_mbuiltin ("tmovmskw", int_ftype_v2si, TMOVMSKW);
- 
-   iwmmx2_mbuiltin ("waddbhusm", v8qi_ftype_v4hi_v8qi, WADDBHUSM);
-   iwmmx2_mbuiltin ("waddbhusl", v8qi_ftype_v4hi_v8qi, WADDBHUSL);
- 
-   iwmmx_mbuiltin ("wpackhss", v8qi_ftype_v4hi_v4hi, WPACKHSS);
-   iwmmx_mbuiltin ("wpackhus", v8qi_ftype_v4hi_v4hi, WPACKHUS);
-   iwmmx_mbuiltin ("wpackwus", v4hi_ftype_v2si_v2si, WPACKWUS);
-   iwmmx_mbuiltin ("wpackwss", v4hi_ftype_v2si_v2si, WPACKWSS);
-   iwmmx_mbuiltin ("wpackdus", v2si_ftype_di_di, WPACKDUS);
-   iwmmx_mbuiltin ("wpackdss", v2si_ftype_di_di, WPACKDSS);
- 
-   iwmmx_mbuiltin ("wunpckehub", v4hi_ftype_v8qi, WUNPCKEHUB);
-   iwmmx_mbuiltin ("wunpckehuh", v2si_ftype_v4hi, WUNPCKEHUH);
-   iwmmx_mbuiltin ("wunpckehuw", di_ftype_v2si, WUNPCKEHUW);
-   iwmmx_mbuiltin ("wunpckehsb", v4hi_ftype_v8qi, WUNPCKEHSB);
-   iwmmx_mbuiltin ("wunpckehsh", v2si_ftype_v4hi, WUNPCKEHSH);
-   iwmmx_mbuiltin ("wunpckehsw", di_ftype_v2si, WUNPCKEHSW);
-   iwmmx_mbuiltin ("wunpckelub", v4hi_ftype_v8qi, WUNPCKELUB);
-   iwmmx_mbuiltin ("wunpckeluh", v2si_ftype_v4hi, WUNPCKELUH);
-   iwmmx_mbuiltin ("wunpckeluw", di_ftype_v2si, WUNPCKELUW);
-   iwmmx_mbuiltin ("wunpckelsb", v4hi_ftype_v8qi, WUNPCKELSB);
-   iwmmx_mbuiltin ("wunpckelsh", v2si_ftype_v4hi, WUNPCKELSH);
-   iwmmx_mbuiltin ("wunpckelsw", di_ftype_v2si, WUNPCKELSW);
- 
-   iwmmx_mbuiltin ("wmacs", di_ftype_di_v4hi_v4hi, WMACS);
-   iwmmx_mbuiltin ("wmacsz", di_ftype_v4hi_v4hi, WMACSZ);
-   iwmmx_mbuiltin ("wmacu", di_ftype_di_v4hi_v4hi, WMACU);
-   iwmmx_mbuiltin ("wmacuz", di_ftype_v4hi_v4hi, WMACUZ);
- 
-   iwmmx_mbuiltin ("walign", v8qi_ftype_v8qi_v8qi_int, WALIGNI);
-   iwmmx_mbuiltin ("tmia", di_ftype_di_int_int, TMIA);
-   iwmmx_mbuiltin ("tmiaph", di_ftype_di_int_int, TMIAPH);
-   iwmmx_mbuiltin ("tmiabb", di_ftype_di_int_int, TMIABB);
-   iwmmx_mbuiltin ("tmiabt", di_ftype_di_int_int, TMIABT);
-   iwmmx_mbuiltin ("tmiatb", di_ftype_di_int_int, TMIATB);
-   iwmmx_mbuiltin ("tmiatt", di_ftype_di_int_int, TMIATT);
- 
-   iwmmx2_mbuiltin ("wabsb", v8qi_ftype_v8qi, WABSB);
-   iwmmx2_mbuiltin ("wabsh", v4hi_ftype_v4hi, WABSH);
-   iwmmx2_mbuiltin ("wabsw", v2si_ftype_v2si, WABSW);
- 
-   iwmmx2_mbuiltin ("wqmiabb", v2si_ftype_v2si_v4hi_v4hi, WQMIABB);
-   iwmmx2_mbuiltin ("wqmiabt", v2si_ftype_v2si_v4hi_v4hi, WQMIABT);
-   iwmmx2_mbuiltin ("wqmiatb", v2si_ftype_v2si_v4hi_v4hi, WQMIATB);
-   iwmmx2_mbuiltin ("wqmiatt", v2si_ftype_v2si_v4hi_v4hi, WQMIATT);
- 
-   iwmmx2_mbuiltin ("wqmiabbn", v2si_ftype_v2si_v4hi_v4hi, WQMIABBN);
-   iwmmx2_mbuiltin ("wqmiabtn", v2si_ftype_v2si_v4hi_v4hi, WQMIABTN);
-   iwmmx2_mbuiltin ("wqmiatbn", v2si_ftype_v2si_v4hi_v4hi, WQMIATBN);
-   iwmmx2_mbuiltin ("wqmiattn", v2si_ftype_v2si_v4hi_v4hi, WQMIATTN);
- 
-   iwmmx2_mbuiltin ("wmiabb", di_ftype_di_v4hi_v4hi, WMIABB);
-   iwmmx2_mbuiltin ("wmiabt", di_ftype_di_v4hi_v4hi, WMIABT);
-   iwmmx2_mbuiltin ("wmiatb", di_ftype_di_v4hi_v4hi, WMIATB);
-   iwmmx2_mbuiltin ("wmiatt", di_ftype_di_v4hi_v4hi, WMIATT);
- 
-   iwmmx2_mbuiltin ("wmiabbn", di_ftype_di_v4hi_v4hi, WMIABBN);
-   iwmmx2_mbuiltin ("wmiabtn", di_ftype_di_v4hi_v4hi, WMIABTN);
-   iwmmx2_mbuiltin ("wmiatbn", di_ftype_di_v4hi_v4hi, WMIATBN);
-   iwmmx2_mbuiltin ("wmiattn", di_ftype_di_v4hi_v4hi, WMIATTN);
- 
-   iwmmx2_mbuiltin ("wmiawbb", di_ftype_di_v2si_v2si, WMIAWBB);
-   iwmmx2_mbuiltin ("wmiawbt", di_ftype_di_v2si_v2si, WMIAWBT);
-   iwmmx2_mbuiltin ("wmiawtb", di_ftype_di_v2si_v2si, WMIAWTB);
-   iwmmx2_mbuiltin ("wmiawtt", di_ftype_di_v2si_v2si, WMIAWTT);
- 
-   iwmmx2_mbuiltin ("wmiawbbn", di_ftype_di_v2si_v2si, WMIAWBBN);
-   iwmmx2_mbuiltin ("wmiawbtn", di_ftype_di_v2si_v2si, WMIAWBTN);
-   iwmmx2_mbuiltin ("wmiawtbn", di_ftype_di_v2si_v2si, WMIAWTBN);
-   iwmmx2_mbuiltin ("wmiawttn", di_ftype_di_v2si_v2si, WMIAWTTN);
- 
-   iwmmx2_mbuiltin ("wmerge", di_ftype_di_di_int, WMERGE);
- 
-   iwmmx_mbuiltin ("tbcstb", v8qi_ftype_char, TBCSTB);
-   iwmmx_mbuiltin ("tbcsth", v4hi_ftype_short, TBCSTH);
-   iwmmx_mbuiltin ("tbcstw", v2si_ftype_int, TBCSTW);
- 
- #undef iwmmx_mbuiltin
- #undef iwmmx2_mbuiltin
- }
- 
  static void
  arm_init_fp16_builtins (void)
  {
--- 1679,1684 ----
*************** arm_init_fp16_builtins (void)
*** 2454,2462 ****
  void
  arm_init_builtins (void)
  {
-   if (TARGET_REALLY_IWMMXT)
-     arm_init_iwmmxt_builtins ();
- 
    /* This creates the arm_simd_floatHF_type_node so must come before
       arm_init_neon_builtins which uses it.  */
    arm_init_fp16_builtins ();
--- 1693,1698 ----
*************** arm_builtin_decl (unsigned code, bool in
*** 2546,2560 ****
     clear instructions.  */
  
  static rtx
! safe_vector_operand (rtx x, machine_mode mode)
  {
    if (x != const0_rtx)
      return x;
!   x = gen_reg_rtx (mode);
! 
!   emit_insn (gen_iwmmxt_clrdi (mode == DImode ? x
! 			       : gen_rtx_SUBREG (DImode, x, 0)));
!   return x;
  }
  
  /* Function to expand ternary builtins.  */
--- 1782,1792 ----
     clear instructions.  */
  
  static rtx
! safe_vector_operand (rtx x, machine_mode mode ATTRIBUTE_UNUSED)
  {
    if (x != const0_rtx)
      return x;
!   __builtin_unreachable ();
  }
  
  /* Function to expand ternary builtins.  */
*************** constant_arg:
*** 3053,3060 ****
       builtin and error out if not.  */
    start_sequence ();
    emit_insn (pat);
!   insn = get_insns ();
!   end_sequence ();
  
    if (recog_memoized (insn) < 0)
      error ("this builtin is not supported for this target");
--- 2285,2291 ----
       builtin and error out if not.  */
    start_sequence ();
    emit_insn (pat);
!   insn = end_sequence ();
  
    if (recog_memoized (insn) < 0)
      error ("this builtin is not supported for this target");
*************** arm_general_expand_builtin (unsigned int
*** 3266,3286 ****
    const struct builtin_description * d;
    enum insn_code    icode;
    tree              arg0;
-   tree              arg1;
-   tree              arg2;
    rtx               op0;
    rtx               op1;
-   rtx               op2;
    rtx               pat;
    size_t            i;
-   machine_mode tmode;
-   machine_mode mode0;
-   machine_mode mode1;
-   machine_mode mode2;
-   int opint;
-   int selector;
-   int mask;
-   int imm;
  
    if (fcode == ARM_BUILTIN_SIMD_LANE_CHECK)
      {
--- 2497,2506 ----
*************** arm_general_expand_builtin (unsigned int
*** 3369,3867 ****
        emit_insn (gen_cstoresi4 (target, op1, target, const0_rtx));
        return target;
  
-     case ARM_BUILTIN_TEXTRMSB:
-     case ARM_BUILTIN_TEXTRMUB:
-     case ARM_BUILTIN_TEXTRMSH:
-     case ARM_BUILTIN_TEXTRMUH:
-     case ARM_BUILTIN_TEXTRMSW:
-     case ARM_BUILTIN_TEXTRMUW:
-       icode = (fcode == ARM_BUILTIN_TEXTRMSB ? CODE_FOR_iwmmxt_textrmsb
- 	       : fcode == ARM_BUILTIN_TEXTRMUB ? CODE_FOR_iwmmxt_textrmub
- 	       : fcode == ARM_BUILTIN_TEXTRMSH ? CODE_FOR_iwmmxt_textrmsh
- 	       : fcode == ARM_BUILTIN_TEXTRMUH ? CODE_FOR_iwmmxt_textrmuh
- 	       : CODE_FOR_iwmmxt_textrmw);
- 
-       arg0 = CALL_EXPR_ARG (exp, 0);
-       arg1 = CALL_EXPR_ARG (exp, 1);
-       op0 = expand_normal (arg0);
-       op1 = expand_normal (arg1);
-       tmode = insn_data[icode].operand[0].mode;
-       mode0 = insn_data[icode].operand[1].mode;
-       mode1 = insn_data[icode].operand[2].mode;
- 
-       if (! (*insn_data[icode].operand[1].predicate) (op0, mode0))
- 	op0 = copy_to_mode_reg (mode0, op0);
-       if (! (*insn_data[icode].operand[2].predicate) (op1, mode1))
- 	{
- 	  /* @@@ better error message */
- 	  error ("selector must be an immediate");
- 	  return gen_reg_rtx (tmode);
- 	}
- 
-       opint = INTVAL (op1);
-       if (fcode == ARM_BUILTIN_TEXTRMSB || fcode == ARM_BUILTIN_TEXTRMUB)
- 	{
- 	  if (opint > 7 || opint < 0)
- 	    error ("the range of selector should be in 0 to 7");
- 	}
-       else if (fcode == ARM_BUILTIN_TEXTRMSH || fcode == ARM_BUILTIN_TEXTRMUH)
- 	{
- 	  if (opint > 3 || opint < 0)
- 	    error ("the range of selector should be in 0 to 3");
- 	}
-       else /* ARM_BUILTIN_TEXTRMSW || ARM_BUILTIN_TEXTRMUW.  */
- 	{
- 	  if (opint > 1 || opint < 0)
- 	    error ("the range of selector should be in 0 to 1");
- 	}
- 
-       if (target == 0
- 	  || GET_MODE (target) != tmode
- 	  || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
- 	target = gen_reg_rtx (tmode);
-       pat = GEN_FCN (icode) (target, op0, op1);
-       if (! pat)
- 	return 0;
-       emit_insn (pat);
-       return target;
- 
-     case ARM_BUILTIN_WALIGNI:
-       /* If op2 is immediate, call walighi, else call walighr.  */
-       arg0 = CALL_EXPR_ARG (exp, 0);
-       arg1 = CALL_EXPR_ARG (exp, 1);
-       arg2 = CALL_EXPR_ARG (exp, 2);
-       op0 = expand_normal (arg0);
-       op1 = expand_normal (arg1);
-       op2 = expand_normal (arg2);
-       if (CONST_INT_P (op2))
-         {
- 	  icode = CODE_FOR_iwmmxt_waligni;
-           tmode = insn_data[icode].operand[0].mode;
- 	  mode0 = insn_data[icode].operand[1].mode;
- 	  mode1 = insn_data[icode].operand[2].mode;
- 	  mode2 = insn_data[icode].operand[3].mode;
-           if (!(*insn_data[icode].operand[1].predicate) (op0, mode0))
- 	    op0 = copy_to_mode_reg (mode0, op0);
-           if (!(*insn_data[icode].operand[2].predicate) (op1, mode1))
- 	    op1 = copy_to_mode_reg (mode1, op1);
-           gcc_assert ((*insn_data[icode].operand[3].predicate) (op2, mode2));
- 	  selector = INTVAL (op2);
- 	  if (selector > 7 || selector < 0)
- 	    error ("the range of selector should be in 0 to 7");
- 	}
-       else
-         {
- 	  icode = CODE_FOR_iwmmxt_walignr;
-           tmode = insn_data[icode].operand[0].mode;
- 	  mode0 = insn_data[icode].operand[1].mode;
- 	  mode1 = insn_data[icode].operand[2].mode;
- 	  mode2 = insn_data[icode].operand[3].mode;
-           if (!(*insn_data[icode].operand[1].predicate) (op0, mode0))
- 	    op0 = copy_to_mode_reg (mode0, op0);
-           if (!(*insn_data[icode].operand[2].predicate) (op1, mode1))
- 	    op1 = copy_to_mode_reg (mode1, op1);
-           if (!(*insn_data[icode].operand[3].predicate) (op2, mode2))
- 	    op2 = copy_to_mode_reg (mode2, op2);
- 	}
-       if (target == 0
- 	  || GET_MODE (target) != tmode
- 	  || !(*insn_data[icode].operand[0].predicate) (target, tmode))
- 	target = gen_reg_rtx (tmode);
-       pat = GEN_FCN (icode) (target, op0, op1, op2);
-       if (!pat)
- 	return 0;
-       emit_insn (pat);
-       return target;
- 
-     case ARM_BUILTIN_TINSRB:
-     case ARM_BUILTIN_TINSRH:
-     case ARM_BUILTIN_TINSRW:
-     case ARM_BUILTIN_WMERGE:
-       icode = (fcode == ARM_BUILTIN_TINSRB ? CODE_FOR_iwmmxt_tinsrb
- 	       : fcode == ARM_BUILTIN_TINSRH ? CODE_FOR_iwmmxt_tinsrh
- 	       : fcode == ARM_BUILTIN_WMERGE ? CODE_FOR_iwmmxt_wmerge
- 	       : CODE_FOR_iwmmxt_tinsrw);
-       arg0 = CALL_EXPR_ARG (exp, 0);
-       arg1 = CALL_EXPR_ARG (exp, 1);
-       arg2 = CALL_EXPR_ARG (exp, 2);
-       op0 = expand_normal (arg0);
-       op1 = expand_normal (arg1);
-       op2 = expand_normal (arg2);
-       tmode = insn_data[icode].operand[0].mode;
-       mode0 = insn_data[icode].operand[1].mode;
-       mode1 = insn_data[icode].operand[2].mode;
-       mode2 = insn_data[icode].operand[3].mode;
- 
-       if (! (*insn_data[icode].operand[1].predicate) (op0, mode0))
- 	op0 = copy_to_mode_reg (mode0, op0);
-       if (! (*insn_data[icode].operand[2].predicate) (op1, mode1))
- 	op1 = copy_to_mode_reg (mode1, op1);
-       if (! (*insn_data[icode].operand[3].predicate) (op2, mode2))
- 	{
- 	  error ("selector must be an immediate");
- 	  return const0_rtx;
- 	}
-       if (icode == CODE_FOR_iwmmxt_wmerge)
- 	{
- 	  selector = INTVAL (op2);
- 	  if (selector > 7 || selector < 0)
- 	    error ("the range of selector should be in 0 to 7");
- 	}
-       if ((icode == CODE_FOR_iwmmxt_tinsrb)
- 	  || (icode == CODE_FOR_iwmmxt_tinsrh)
- 	  || (icode == CODE_FOR_iwmmxt_tinsrw))
-         {
- 	  mask = 0x01;
- 	  selector= INTVAL (op2);
- 	  if (icode == CODE_FOR_iwmmxt_tinsrb && (selector < 0 || selector > 7))
- 	    error ("the range of selector should be in 0 to 7");
- 	  else if (icode == CODE_FOR_iwmmxt_tinsrh && (selector < 0 ||selector > 3))
- 	    error ("the range of selector should be in 0 to 3");
- 	  else if (icode == CODE_FOR_iwmmxt_tinsrw && (selector < 0 ||selector > 1))
- 	    error ("the range of selector should be in 0 to 1");
- 	  mask <<= selector;
- 	  op2 = GEN_INT (mask);
- 	}
-       if (target == 0
- 	  || GET_MODE (target) != tmode
- 	  || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
- 	target = gen_reg_rtx (tmode);
-       pat = GEN_FCN (icode) (target, op0, op1, op2);
-       if (! pat)
- 	return 0;
-       emit_insn (pat);
-       return target;
- 
-     case ARM_BUILTIN_SETWCGR0:
-     case ARM_BUILTIN_SETWCGR1:
-     case ARM_BUILTIN_SETWCGR2:
-     case ARM_BUILTIN_SETWCGR3:
-       icode = (fcode == ARM_BUILTIN_SETWCGR0 ? CODE_FOR_iwmmxt_setwcgr0
- 	       : fcode == ARM_BUILTIN_SETWCGR1 ? CODE_FOR_iwmmxt_setwcgr1
- 	       : fcode == ARM_BUILTIN_SETWCGR2 ? CODE_FOR_iwmmxt_setwcgr2
- 	       : CODE_FOR_iwmmxt_setwcgr3);
-       arg0 = CALL_EXPR_ARG (exp, 0);
-       op0 = expand_normal (arg0);
-       mode0 = insn_data[icode].operand[0].mode;
-       if (!(*insn_data[icode].operand[0].predicate) (op0, mode0))
-         op0 = copy_to_mode_reg (mode0, op0);
-       pat = GEN_FCN (icode) (op0);
-       if (!pat)
- 	return 0;
-       emit_insn (pat);
-       return 0;
- 
-     case ARM_BUILTIN_GETWCGR0:
-     case ARM_BUILTIN_GETWCGR1:
-     case ARM_BUILTIN_GETWCGR2:
-     case ARM_BUILTIN_GETWCGR3:
-       icode = (fcode == ARM_BUILTIN_GETWCGR0 ? CODE_FOR_iwmmxt_getwcgr0
- 	       : fcode == ARM_BUILTIN_GETWCGR1 ? CODE_FOR_iwmmxt_getwcgr1
- 	       : fcode == ARM_BUILTIN_GETWCGR2 ? CODE_FOR_iwmmxt_getwcgr2
- 	       : CODE_FOR_iwmmxt_getwcgr3);
-       tmode = insn_data[icode].operand[0].mode;
-       if (target == 0
- 	  || GET_MODE (target) != tmode
- 	  || !(*insn_data[icode].operand[0].predicate) (target, tmode))
-         target = gen_reg_rtx (tmode);
-       pat = GEN_FCN (icode) (target);
-       if (!pat)
-         return 0;
-       emit_insn (pat);
-       return target;
- 
-     case ARM_BUILTIN_WSHUFH:
-       icode = CODE_FOR_iwmmxt_wshufh;
-       arg0 = CALL_EXPR_ARG (exp, 0);
-       arg1 = CALL_EXPR_ARG (exp, 1);
-       op0 = expand_normal (arg0);
-       op1 = expand_normal (arg1);
-       tmode = insn_data[icode].operand[0].mode;
-       mode1 = insn_data[icode].operand[1].mode;
-       mode2 = insn_data[icode].operand[2].mode;
- 
-       if (! (*insn_data[icode].operand[1].predicate) (op0, mode1))
- 	op0 = copy_to_mode_reg (mode1, op0);
-       if (! (*insn_data[icode].operand[2].predicate) (op1, mode2))
- 	{
- 	  error ("mask must be an immediate");
- 	  return const0_rtx;
- 	}
-       selector = INTVAL (op1);
-       if (selector < 0 || selector > 255)
- 	error ("the range of mask should be in 0 to 255");
-       if (target == 0
- 	  || GET_MODE (target) != tmode
- 	  || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
- 	target = gen_reg_rtx (tmode);
-       pat = GEN_FCN (icode) (target, op0, op1);
-       if (! pat)
- 	return 0;
-       emit_insn (pat);
-       return target;
- 
-     case ARM_BUILTIN_WMADDS:
-       return arm_expand_binop_builtin (CODE_FOR_iwmmxt_wmadds, exp, target);
-     case ARM_BUILTIN_WMADDSX:
-       return arm_expand_binop_builtin (CODE_FOR_iwmmxt_wmaddsx, exp, target);
-     case ARM_BUILTIN_WMADDSN:
-       return arm_expand_binop_builtin (CODE_FOR_iwmmxt_wmaddsn, exp, target);
-     case ARM_BUILTIN_WMADDU:
-       return arm_expand_binop_builtin (CODE_FOR_iwmmxt_wmaddu, exp, target);
-     case ARM_BUILTIN_WMADDUX:
-       return arm_expand_binop_builtin (CODE_FOR_iwmmxt_wmaddux, exp, target);
-     case ARM_BUILTIN_WMADDUN:
-       return arm_expand_binop_builtin (CODE_FOR_iwmmxt_wmaddun, exp, target);
-     case ARM_BUILTIN_WSADBZ:
-       return arm_expand_binop_builtin (CODE_FOR_iwmmxt_wsadbz, exp, target);
-     case ARM_BUILTIN_WSADHZ:
-       return arm_expand_binop_builtin (CODE_FOR_iwmmxt_wsadhz, exp, target);
- 
-       /* Several three-argument builtins.  */
-     case ARM_BUILTIN_WMACS:
-     case ARM_BUILTIN_WMACU:
-     case ARM_BUILTIN_TMIA:
-     case ARM_BUILTIN_TMIAPH:
-     case ARM_BUILTIN_TMIATT:
-     case ARM_BUILTIN_TMIATB:
-     case ARM_BUILTIN_TMIABT:
-     case ARM_BUILTIN_TMIABB:
-     case ARM_BUILTIN_WQMIABB:
-     case ARM_BUILTIN_WQMIABT:
-     case ARM_BUILTIN_WQMIATB:
-     case ARM_BUILTIN_WQMIATT:
-     case ARM_BUILTIN_WQMIABBN:
-     case ARM_BUILTIN_WQMIABTN:
-     case ARM_BUILTIN_WQMIATBN:
-     case ARM_BUILTIN_WQMIATTN:
-     case ARM_BUILTIN_WMIABB:
-     case ARM_BUILTIN_WMIABT:
-     case ARM_BUILTIN_WMIATB:
-     case ARM_BUILTIN_WMIATT:
-     case ARM_BUILTIN_WMIABBN:
-     case ARM_BUILTIN_WMIABTN:
-     case ARM_BUILTIN_WMIATBN:
-     case ARM_BUILTIN_WMIATTN:
-     case ARM_BUILTIN_WMIAWBB:
-     case ARM_BUILTIN_WMIAWBT:
-     case ARM_BUILTIN_WMIAWTB:
-     case ARM_BUILTIN_WMIAWTT:
-     case ARM_BUILTIN_WMIAWBBN:
-     case ARM_BUILTIN_WMIAWBTN:
-     case ARM_BUILTIN_WMIAWTBN:
-     case ARM_BUILTIN_WMIAWTTN:
-     case ARM_BUILTIN_WSADB:
-     case ARM_BUILTIN_WSADH:
-       icode = (fcode == ARM_BUILTIN_WMACS ? CODE_FOR_iwmmxt_wmacs
- 	       : fcode == ARM_BUILTIN_WMACU ? CODE_FOR_iwmmxt_wmacu
- 	       : fcode == ARM_BUILTIN_TMIA ? CODE_FOR_iwmmxt_tmia
- 	       : fcode == ARM_BUILTIN_TMIAPH ? CODE_FOR_iwmmxt_tmiaph
- 	       : fcode == ARM_BUILTIN_TMIABB ? CODE_FOR_iwmmxt_tmiabb
- 	       : fcode == ARM_BUILTIN_TMIABT ? CODE_FOR_iwmmxt_tmiabt
- 	       : fcode == ARM_BUILTIN_TMIATB ? CODE_FOR_iwmmxt_tmiatb
- 	       : fcode == ARM_BUILTIN_TMIATT ? CODE_FOR_iwmmxt_tmiatt
- 	       : fcode == ARM_BUILTIN_WQMIABB ? CODE_FOR_iwmmxt_wqmiabb
- 	       : fcode == ARM_BUILTIN_WQMIABT ? CODE_FOR_iwmmxt_wqmiabt
- 	       : fcode == ARM_BUILTIN_WQMIATB ? CODE_FOR_iwmmxt_wqmiatb
- 	       : fcode == ARM_BUILTIN_WQMIATT ? CODE_FOR_iwmmxt_wqmiatt
- 	       : fcode == ARM_BUILTIN_WQMIABBN ? CODE_FOR_iwmmxt_wqmiabbn
- 	       : fcode == ARM_BUILTIN_WQMIABTN ? CODE_FOR_iwmmxt_wqmiabtn
- 	       : fcode == ARM_BUILTIN_WQMIATBN ? CODE_FOR_iwmmxt_wqmiatbn
- 	       : fcode == ARM_BUILTIN_WQMIATTN ? CODE_FOR_iwmmxt_wqmiattn
- 	       : fcode == ARM_BUILTIN_WMIABB ? CODE_FOR_iwmmxt_wmiabb
- 	       : fcode == ARM_BUILTIN_WMIABT ? CODE_FOR_iwmmxt_wmiabt
- 	       : fcode == ARM_BUILTIN_WMIATB ? CODE_FOR_iwmmxt_wmiatb
- 	       : fcode == ARM_BUILTIN_WMIATT ? CODE_FOR_iwmmxt_wmiatt
- 	       : fcode == ARM_BUILTIN_WMIABBN ? CODE_FOR_iwmmxt_wmiabbn
- 	       : fcode == ARM_BUILTIN_WMIABTN ? CODE_FOR_iwmmxt_wmiabtn
- 	       : fcode == ARM_BUILTIN_WMIATBN ? CODE_FOR_iwmmxt_wmiatbn
- 	       : fcode == ARM_BUILTIN_WMIATTN ? CODE_FOR_iwmmxt_wmiattn
- 	       : fcode == ARM_BUILTIN_WMIAWBB ? CODE_FOR_iwmmxt_wmiawbb
- 	       : fcode == ARM_BUILTIN_WMIAWBT ? CODE_FOR_iwmmxt_wmiawbt
- 	       : fcode == ARM_BUILTIN_WMIAWTB ? CODE_FOR_iwmmxt_wmiawtb
- 	       : fcode == ARM_BUILTIN_WMIAWTT ? CODE_FOR_iwmmxt_wmiawtt
- 	       : fcode == ARM_BUILTIN_WMIAWBBN ? CODE_FOR_iwmmxt_wmiawbbn
- 	       : fcode == ARM_BUILTIN_WMIAWBTN ? CODE_FOR_iwmmxt_wmiawbtn
- 	       : fcode == ARM_BUILTIN_WMIAWTBN ? CODE_FOR_iwmmxt_wmiawtbn
- 	       : fcode == ARM_BUILTIN_WMIAWTTN ? CODE_FOR_iwmmxt_wmiawttn
- 	       : fcode == ARM_BUILTIN_WSADB ? CODE_FOR_iwmmxt_wsadb
- 	       : CODE_FOR_iwmmxt_wsadh);
-       arg0 = CALL_EXPR_ARG (exp, 0);
-       arg1 = CALL_EXPR_ARG (exp, 1);
-       arg2 = CALL_EXPR_ARG (exp, 2);
-       op0 = expand_normal (arg0);
-       op1 = expand_normal (arg1);
-       op2 = expand_normal (arg2);
-       tmode = insn_data[icode].operand[0].mode;
-       mode0 = insn_data[icode].operand[1].mode;
-       mode1 = insn_data[icode].operand[2].mode;
-       mode2 = insn_data[icode].operand[3].mode;
- 
-       if (! (*insn_data[icode].operand[1].predicate) (op0, mode0))
- 	op0 = copy_to_mode_reg (mode0, op0);
-       if (! (*insn_data[icode].operand[2].predicate) (op1, mode1))
- 	op1 = copy_to_mode_reg (mode1, op1);
-       if (! (*insn_data[icode].operand[3].predicate) (op2, mode2))
- 	op2 = copy_to_mode_reg (mode2, op2);
-       if (target == 0
- 	  || GET_MODE (target) != tmode
- 	  || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
- 	target = gen_reg_rtx (tmode);
-       pat = GEN_FCN (icode) (target, op0, op1, op2);
-       if (! pat)
- 	return 0;
-       emit_insn (pat);
-       return target;
- 
-     case ARM_BUILTIN_WZERO:
-       target = gen_reg_rtx (DImode);
-       emit_insn (gen_iwmmxt_clrdi (target));
-       return target;
- 
-     case ARM_BUILTIN_WSRLHI:
-     case ARM_BUILTIN_WSRLWI:
-     case ARM_BUILTIN_WSRLDI:
-     case ARM_BUILTIN_WSLLHI:
-     case ARM_BUILTIN_WSLLWI:
-     case ARM_BUILTIN_WSLLDI:
-     case ARM_BUILTIN_WSRAHI:
-     case ARM_BUILTIN_WSRAWI:
-     case ARM_BUILTIN_WSRADI:
-     case ARM_BUILTIN_WRORHI:
-     case ARM_BUILTIN_WRORWI:
-     case ARM_BUILTIN_WRORDI:
-     case ARM_BUILTIN_WSRLH:
-     case ARM_BUILTIN_WSRLW:
-     case ARM_BUILTIN_WSRLD:
-     case ARM_BUILTIN_WSLLH:
-     case ARM_BUILTIN_WSLLW:
-     case ARM_BUILTIN_WSLLD:
-     case ARM_BUILTIN_WSRAH:
-     case ARM_BUILTIN_WSRAW:
-     case ARM_BUILTIN_WSRAD:
-     case ARM_BUILTIN_WRORH:
-     case ARM_BUILTIN_WRORW:
-     case ARM_BUILTIN_WRORD:
-       icode = (fcode == ARM_BUILTIN_WSRLHI ? CODE_FOR_lshrv4hi3_iwmmxt
- 	       : fcode == ARM_BUILTIN_WSRLWI ? CODE_FOR_lshrv2si3_iwmmxt
- 	       : fcode == ARM_BUILTIN_WSRLDI ? CODE_FOR_lshrdi3_iwmmxt
- 	       : fcode == ARM_BUILTIN_WSLLHI ? CODE_FOR_ashlv4hi3_iwmmxt
- 	       : fcode == ARM_BUILTIN_WSLLWI ? CODE_FOR_ashlv2si3_iwmmxt
- 	       : fcode == ARM_BUILTIN_WSLLDI ? CODE_FOR_ashldi3_iwmmxt
- 	       : fcode == ARM_BUILTIN_WSRAHI ? CODE_FOR_ashrv4hi3_iwmmxt
- 	       : fcode == ARM_BUILTIN_WSRAWI ? CODE_FOR_ashrv2si3_iwmmxt
- 	       : fcode == ARM_BUILTIN_WSRADI ? CODE_FOR_ashrdi3_iwmmxt
- 	       : fcode == ARM_BUILTIN_WRORHI ? CODE_FOR_rorv4hi3
- 	       : fcode == ARM_BUILTIN_WRORWI ? CODE_FOR_rorv2si3
- 	       : fcode == ARM_BUILTIN_WRORDI ? CODE_FOR_rordi3
- 	       : fcode == ARM_BUILTIN_WSRLH  ? CODE_FOR_lshrv4hi3_di
- 	       : fcode == ARM_BUILTIN_WSRLW  ? CODE_FOR_lshrv2si3_di
- 	       : fcode == ARM_BUILTIN_WSRLD  ? CODE_FOR_lshrdi3_di
- 	       : fcode == ARM_BUILTIN_WSLLH  ? CODE_FOR_ashlv4hi3_di
- 	       : fcode == ARM_BUILTIN_WSLLW  ? CODE_FOR_ashlv2si3_di
- 	       : fcode == ARM_BUILTIN_WSLLD  ? CODE_FOR_ashldi3_di
- 	       : fcode == ARM_BUILTIN_WSRAH  ? CODE_FOR_ashrv4hi3_di
- 	       : fcode == ARM_BUILTIN_WSRAW  ? CODE_FOR_ashrv2si3_di
- 	       : fcode == ARM_BUILTIN_WSRAD  ? CODE_FOR_ashrdi3_di
- 	       : fcode == ARM_BUILTIN_WRORH  ? CODE_FOR_rorv4hi3_di
- 	       : fcode == ARM_BUILTIN_WRORW  ? CODE_FOR_rorv2si3_di
- 	       : fcode == ARM_BUILTIN_WRORD  ? CODE_FOR_rordi3_di
- 	       : CODE_FOR_nothing);
-       arg1 = CALL_EXPR_ARG (exp, 1);
-       op1 = expand_normal (arg1);
-       if (GET_MODE (op1) == VOIDmode)
- 	{
- 	  imm = INTVAL (op1);
- 	  if ((fcode == ARM_BUILTIN_WRORWI || fcode == ARM_BUILTIN_WRORW)
- 	      && (imm < 0 || imm > 32))
- 	    {
- 	      const char *builtin = (fcode == ARM_BUILTIN_WRORWI
- 				     ? "_mm_rori_pi32" : "_mm_ror_pi32");
- 	      error ("the range of count should be in 0 to 32; "
- 		     "please check the intrinsic %qs in code", builtin);
- 	    }
- 	  else if ((fcode == ARM_BUILTIN_WRORHI || fcode == ARM_BUILTIN_WRORH)
- 		   && (imm < 0 || imm > 16))
- 	    {
- 	      const char *builtin = (fcode == ARM_BUILTIN_WRORHI
- 				     ? "_mm_rori_pi16" : "_mm_ror_pi16");
- 	      error ("the range of count should be in 0 to 16; "
- 		     "please check the intrinsic %qs in code", builtin);
- 	    }
- 	  else if ((fcode == ARM_BUILTIN_WRORDI || fcode == ARM_BUILTIN_WRORD)
- 		   && (imm < 0 || imm > 64))
- 	    {
- 	      const char *builtin = (fcode == ARM_BUILTIN_WRORDI
- 				     ? "_mm_rori_si64" : "_mm_ror_si64");
- 	      error ("the range of count should be in 0 to 64; "
- 		     "please check the intrinsic %qs in code", builtin);
- 	    }
- 	  else if (imm < 0)
- 	    {
- 	      const char *builtin;
- 	      switch (fcode)
- 		{
- 		  case ARM_BUILTIN_WSRLHI:
- 		    builtin = "_mm_srli_pi16";
- 		    break;
- 		  case ARM_BUILTIN_WSRLWI:
- 		    builtin = "_mm_srli_pi32";
- 		    break;
- 		  case ARM_BUILTIN_WSRLDI:
- 		    builtin = "_mm_srli_si64";
- 		    break;
- 		  case ARM_BUILTIN_WSLLHI:
- 		    builtin = "_mm_slli_pi16";
- 		    break;
- 		  case ARM_BUILTIN_WSLLWI:
- 		    builtin = "_mm_slli_pi32";
- 		    break;
- 		  case ARM_BUILTIN_WSLLDI:
- 		    builtin = "_mm_slli_si64";
- 		    break;
- 		  case ARM_BUILTIN_WSRAHI:
- 		    builtin = "_mm_srai_pi16";
- 		    break;
- 		  case ARM_BUILTIN_WSRAWI:
- 		    builtin = "_mm_srai_pi32";
- 		    break;
- 		  case ARM_BUILTIN_WSRADI:
- 		    builtin = "_mm_srai_si64";
- 		    break;
- 		  case ARM_BUILTIN_WSRLH:
- 		    builtin = "_mm_srl_pi16";
- 		    break;
- 		  case ARM_BUILTIN_WSRLW:
- 		    builtin = "_mm_srl_pi32";
- 		    break;
- 		  case ARM_BUILTIN_WSRLD:
- 		    builtin = "_mm_srl_si64";
- 		    break;
- 		  case ARM_BUILTIN_WSLLH:
- 		    builtin = "_mm_sll_pi16";
- 		    break;
- 		  case ARM_BUILTIN_WSLLW:
- 		    builtin = "_mm_sll_pi32";
- 		    break;
- 		  case ARM_BUILTIN_WSLLD:
- 		    builtin = "_mm_sll_si64";
- 		    break;
- 		  case ARM_BUILTIN_WSRAH:
- 		    builtin = "_mm_sra_pi16";
- 		    break;
- 		  case ARM_BUILTIN_WSRAW:
- 		    builtin = "_mm_sra_si64";
- 		    break;
- 		  default:
- 		    builtin = "_mm_sra_si64";
- 		    break;
- 		}
- 	      error ("the count should be no less than 0; "
- 		     "please check the intrinsic %qs in code", builtin);
- 	    }
- 	}
-       return arm_expand_binop_builtin (icode, exp, target);
- 
      default:
        break;
      }
--- 2589,2594 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm-c.cc gcc-16-20250518/gcc/config/arm/arm-c.cc
*** gcc-16-20250511/gcc/config/arm/arm-c.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm-c.cc	Sun May 18 22:32:07 2025
*************** arm_cpu_builtins (struct cpp_reader* pfi
*** 373,385 ****
    builtin_define (arm_arch_name);
    if (arm_arch_xscale)
      builtin_define ("__XSCALE__");
-   if (arm_arch_iwmmxt)
-     {
-       builtin_define ("__IWMMXT__");
-       builtin_define ("__ARM_WMMX");
-     }
-   if (arm_arch_iwmmxt2)
-     builtin_define ("__IWMMXT2__");
    /* ARMv6KZ was originally identified as the misspelled __ARM_ARCH_6ZK__.  To
       preserve the existing behavior, the misspelled feature macro must still be
       defined.  */
--- 373,378 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm-cpus.in gcc-16-20250518/gcc/config/arm/arm-cpus.in
*** gcc-16-20250511/gcc/config/arm/arm-cpus.in	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm-cpus.in	Sun May 18 22:32:07 2025
*************** define feature armv8
*** 102,113 ****
  # ARMv8 CRC32 instructions.
  define feature crc32
  
- # XScale v2 (Wireless MMX).
- define feature iwmmxt
- 
- # XScale Wireless MMX2.
- define feature iwmmxt2
- 
  # Architecture rel 8.1.
  define feature armv8_1
  
--- 102,107 ----
*************** begin arch armv9-a
*** 778,795 ****
   option bf16 add bf16 FP_ARMv8 DOTPROD
  end arch armv9-a
  
  begin arch iwmmxt
!  tune for iwmmxt
   tune flags LDSCHED STRONG XSCALE
   base 5TE
!  isa ARMv5te xscale iwmmxt
  end arch iwmmxt
  
  begin arch iwmmxt2
!  tune for iwmmxt2
   tune flags LDSCHED STRONG XSCALE
   base 5TE
!  isa ARMv5te xscale iwmmxt iwmmxt2
  end arch iwmmxt2
  
  # CPU entries
--- 772,790 ----
   option bf16 add bf16 FP_ARMv8 DOTPROD
  end arch armv9-a
  
+ # We no-longer support the iwmmxt{,2} extensions, so treat these like xscale.
  begin arch iwmmxt
!  tune for xscale
   tune flags LDSCHED STRONG XSCALE
   base 5TE
!  isa ARMv5te xscale
  end arch iwmmxt
  
  begin arch iwmmxt2
!  tune for xscale
   tune flags LDSCHED STRONG XSCALE
   base 5TE
!  isa ARMv5te xscale
  end arch iwmmxt2
  
  # CPU entries
*************** end cpu arm10e
*** 924,946 ****
  
  begin cpu xscale
   tune flags LDSCHED XSCALE
   architecture armv5te
   isa xscale
   costs xscale
  end cpu xscale
  
- begin cpu iwmmxt
-  tune flags LDSCHED XSCALE
-  architecture iwmmxt
-  costs xscale
- end cpu iwmmxt
- 
- begin cpu iwmmxt2
-  tune flags LDSCHED XSCALE
-  architecture iwmmxt2
-  costs xscale
- end cpu iwmmxt2
- 
  begin cpu fa606te
   tune flags LDSCHED
   architecture armv5te
--- 919,930 ----
  
  begin cpu xscale
   tune flags LDSCHED XSCALE
+  alias iwmmxt iwmmxt2
   architecture armv5te
   isa xscale
   costs xscale
  end cpu xscale
  
  begin cpu fa606te
   tune flags LDSCHED
   architecture armv5te
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm-generic.md gcc-16-20250518/gcc/config/arm/arm-generic.md
*** gcc-16-20250511/gcc/config/arm/arm-generic.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm-generic.md	Sun May 18 22:32:07 2025
***************
*** 96,109 ****
    (and (eq_attr "generic_sched" "yes")
         (and (eq_attr "ldsched" "yes") 
  	    (and (eq_attr "type" "load_byte,load_4")
! 	         (eq_attr "tune" "xscale,iwmmxt,iwmmxt2"))))
    "core")
  
  (define_insn_reservation "load_ldsched" 2
    (and (eq_attr "generic_sched" "yes")
         (and (eq_attr "ldsched" "yes") 
  	    (and (eq_attr "type" "load_byte,load_4")
! 	         (eq_attr "tune" "!xscale,iwmmxt,iwmmxt2"))))
    "core")
  
  (define_insn_reservation "load_or_store" 2
--- 96,109 ----
    (and (eq_attr "generic_sched" "yes")
         (and (eq_attr "ldsched" "yes") 
  	    (and (eq_attr "type" "load_byte,load_4")
! 	         (eq_attr "tune" "xscale"))))
    "core")
  
  (define_insn_reservation "load_ldsched" 2
    (and (eq_attr "generic_sched" "yes")
         (and (eq_attr "ldsched" "yes") 
  	    (and (eq_attr "type" "load_byte,load_4")
! 	         (eq_attr "tune" "!xscale"))))
    "core")
  
  (define_insn_reservation "load_or_store" 2
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm-opts.h gcc-16-20250518/gcc/config/arm/arm-opts.h
*** gcc-16-20250511/gcc/config/arm/arm-opts.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm-opts.h	Sun May 18 22:32:07 2025
*************** enum arm_abi_type
*** 46,52 ****
    ARM_ABI_APCS,
    ARM_ABI_ATPCS,
    ARM_ABI_AAPCS,
-   ARM_ABI_IWMMXT,
    ARM_ABI_AAPCS_LINUX
  };
  
--- 46,51 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm-protos.h gcc-16-20250518/gcc/config/arm/arm-protos.h
*** gcc-16-20250511/gcc/config/arm/arm-protos.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm-protos.h	Sun May 18 22:32:07 2025
*************** extern void arm_output_multireg_pop (rtx
*** 190,197 ****
  extern void arm_set_return_address (rtx, rtx);
  extern int arm_eliminable_register (rtx);
  extern const char *arm_output_shift(rtx *, int);
- extern const char *arm_output_iwmmxt_shift_immediate (const char *, rtx *, bool);
- extern const char *arm_output_iwmmxt_tinsr (rtx *);
  extern unsigned int arm_sync_loop_insns (rtx , rtx *);
  extern int arm_attr_length_push_multi(rtx, rtx);
  extern int arm_attr_length_pop_multi(rtx *, bool, bool);
--- 190,195 ----
*************** extern int arm_ld_sched;
*** 475,486 ****
  /* Nonzero if this chip is a StrongARM.  */
  extern int arm_tune_strongarm;
  
- /* Nonzero if this chip supports Intel Wireless MMX technology.  */
- extern int arm_arch_iwmmxt;
- 
- /* Nonzero if this chip supports Intel Wireless MMX2 technology.  */
- extern int arm_arch_iwmmxt2;
- 
  /* Nonzero if this chip is an XScale.  */
  extern int arm_arch_xscale;
  
--- 473,478 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm-tables.opt gcc-16-20250518/gcc/config/arm/arm-tables.opt
*** gcc-16-20250511/gcc/config/arm/arm-tables.opt	Sun May 11 22:32:52 2025
--- gcc-16-20250518/gcc/config/arm/arm-tables.opt	Sun May 18 22:33:29 2025
*************** EnumValue
*** 67,78 ****
  Enum(processor_type) String(xscale) Value( TARGET_CPU_xscale)
  
  EnumValue
- Enum(processor_type) String(iwmmxt) Value( TARGET_CPU_iwmmxt)
- 
- EnumValue
- Enum(processor_type) String(iwmmxt2) Value( TARGET_CPU_iwmmxt2)
- 
- EnumValue
  Enum(processor_type) String(fa606te) Value( TARGET_CPU_fa606te)
  
  EnumValue
--- 67,72 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm-tune.md gcc-16-20250518/gcc/config/arm/arm-tune.md
*** gcc-16-20250511/gcc/config/arm/arm-tune.md	Sun May 11 22:32:52 2025
--- gcc-16-20250518/gcc/config/arm/arm-tune.md	Sun May 18 22:33:29 2025
***************
*** 25,55 ****
  	fa526,fa626,arm7tdmi,
  	arm710t,arm9,arm9tdmi,
  	arm920t,arm10tdmi,arm9e,
! 	arm10e,xscale,iwmmxt,
! 	iwmmxt2,fa606te,fa626te,
! 	fmp626,fa726te,arm926ejs,
! 	arm1026ejs,arm1136js,arm1136jfs,
! 	arm1176jzs,arm1176jzfs,mpcorenovfp,
! 	mpcore,arm1156t2s,arm1156t2fs,
! 	cortexm1,cortexm0,cortexm0plus,
! 	cortexm1smallmultiply,cortexm0smallmultiply,cortexm0plussmallmultiply,
! 	genericv7a,cortexa5,cortexa7,
! 	cortexa8,cortexa9,cortexa12,
! 	cortexa15,cortexa17,cortexr4,
! 	cortexr4f,cortexr5,cortexr7,
! 	cortexr8,cortexm7,cortexm4,
! 	cortexm3,marvell_pj4,cortexa15cortexa7,
! 	cortexa17cortexa7,cortexa32,cortexa35,
! 	cortexa53,cortexa57,cortexa72,
! 	cortexa73,exynosm1,xgene1,
! 	cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,
! 	cortexa73cortexa53,cortexa55,cortexa75,
! 	cortexa76,cortexa76ae,cortexa77,
! 	cortexa78,cortexa78ae,cortexa78c,
! 	cortexa710,cortexx1,cortexx1c,
! 	neoversen1,cortexa75cortexa55,cortexa76cortexa55,
! 	neoversev1,neoversen2,cortexm23,
! 	cortexm33,cortexm35p,cortexm52,
! 	cortexm55,starmc1,cortexm85,
! 	cortexr52,cortexr52plus"
  	(const (symbol_ref "((enum attr_tune) arm_tune)")))
--- 25,54 ----
  	fa526,fa626,arm7tdmi,
  	arm710t,arm9,arm9tdmi,
  	arm920t,arm10tdmi,arm9e,
! 	arm10e,xscale,fa606te,
! 	fa626te,fmp626,fa726te,
! 	arm926ejs,arm1026ejs,arm1136js,
! 	arm1136jfs,arm1176jzs,arm1176jzfs,
! 	mpcorenovfp,mpcore,arm1156t2s,
! 	arm1156t2fs,cortexm1,cortexm0,
! 	cortexm0plus,cortexm1smallmultiply,cortexm0smallmultiply,
! 	cortexm0plussmallmultiply,genericv7a,cortexa5,
! 	cortexa7,cortexa8,cortexa9,
! 	cortexa12,cortexa15,cortexa17,
! 	cortexr4,cortexr4f,cortexr5,
! 	cortexr7,cortexr8,cortexm7,
! 	cortexm4,cortexm3,marvell_pj4,
! 	cortexa15cortexa7,cortexa17cortexa7,cortexa32,
! 	cortexa35,cortexa53,cortexa57,
! 	cortexa72,cortexa73,exynosm1,
! 	xgene1,cortexa57cortexa53,cortexa72cortexa53,
! 	cortexa73cortexa35,cortexa73cortexa53,cortexa55,
! 	cortexa75,cortexa76,cortexa76ae,
! 	cortexa77,cortexa78,cortexa78ae,
! 	cortexa78c,cortexa710,cortexx1,
! 	cortexx1c,neoversen1,cortexa75cortexa55,
! 	cortexa76cortexa55,neoversev1,neoversen2,
! 	cortexm23,cortexm33,cortexm35p,
! 	cortexm52,cortexm55,starmc1,
! 	cortexm85,cortexr52,cortexr52plus"
  	(const (symbol_ref "((enum attr_tune) arm_tune)")))
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm.cc gcc-16-20250518/gcc/config/arm/arm.cc
*** gcc-16-20250511/gcc/config/arm/arm.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm.cc	Sun May 18 22:32:07 2025
*************** int arm_ld_sched = 0;
*** 948,959 ****
  /* Nonzero if this chip is a StrongARM.  */
  int arm_tune_strongarm = 0;
  
- /* Nonzero if this chip supports Intel Wireless MMX technology.  */
- int arm_arch_iwmmxt = 0;
- 
- /* Nonzero if this chip supports Intel Wireless MMX2 technology.  */
- int arm_arch_iwmmxt2 = 0;
- 
  /* Nonzero if this chip is an XScale.  */
  int arm_arch_xscale = 0;
  
--- 948,953 ----
*************** arm_option_check_internal (struct gcc_op
*** 2970,2980 ****
  {
    int flags = opts->x_target_flags;
  
-   /* iWMMXt and NEON are incompatible.  */
-   if (TARGET_IWMMXT
-       && bitmap_bit_p (arm_active_target.isa, isa_bit_neon))
-     error ("iWMMXt and NEON are incompatible");
- 
    /* Make sure that the processor choice does not conflict with any of the
       other command line choices.  */
    if (TARGET_ARM_P (flags)
--- 2964,2969 ----
*************** arm_option_check_internal (struct gcc_op
*** 2997,3006 ****
      warning (0, "%<-g%> with %<-mno-apcs-frame%> may not give sensible "
  	     "debugging");
  
-   /* iWMMXt unsupported under Thumb mode.  */
-   if (TARGET_THUMB_P (flags) && TARGET_IWMMXT)
-     error ("iWMMXt unsupported under Thumb mode");
- 
    if (TARGET_HARD_TP && TARGET_THUMB1_P (flags))
      error ("cannot use %<-mtp=cp15%> with 16-bit Thumb");
  
--- 2986,2991 ----
*************** arm_option_reconfigure_globals (void)
*** 3928,3935 ****
    arm_arch_thumb1 = bitmap_bit_p (arm_active_target.isa, isa_bit_thumb);
    arm_arch_thumb2 = bitmap_bit_p (arm_active_target.isa, isa_bit_thumb2);
    arm_arch_xscale = bitmap_bit_p (arm_active_target.isa, isa_bit_xscale);
-   arm_arch_iwmmxt = bitmap_bit_p (arm_active_target.isa, isa_bit_iwmmxt);
-   arm_arch_iwmmxt2 = bitmap_bit_p (arm_active_target.isa, isa_bit_iwmmxt2);
    arm_arch_thumb_hwdiv = bitmap_bit_p (arm_active_target.isa, isa_bit_tdiv);
    arm_arch_arm_hwdiv = bitmap_bit_p (arm_active_target.isa, isa_bit_adiv);
    arm_arch_crc = bitmap_bit_p (arm_active_target.isa, isa_bit_crc32);
--- 3913,3918 ----
*************** arm_options_perform_arch_sanity_checks (
*** 3997,4008 ****
    if (arm_arch5t)
      target_flags &= ~MASK_INTERWORK;
  
-   if (TARGET_IWMMXT && !ARM_DOUBLEWORD_ALIGN)
-     error ("iwmmxt requires an AAPCS compatible ABI for proper operation");
- 
-   if (TARGET_IWMMXT_ABI && !TARGET_IWMMXT)
-     error ("iwmmxt abi requires an iwmmxt capable cpu");
- 
    /* BPABI targets use linker tricks to allow interworking on cores
       without thumb support.  */
    if (TARGET_INTERWORK
--- 3980,3985 ----
*************** arm_options_perform_arch_sanity_checks (
*** 4043,4051 ****
  
    if (TARGET_AAPCS_BASED)
      {
!       if (arm_abi == ARM_ABI_IWMMXT)
! 	arm_pcs_default = ARM_PCS_AAPCS_IWMMXT;
!       else if (TARGET_HARD_FLOAT_ABI)
  	{
  	  arm_pcs_default = ARM_PCS_AAPCS_VFP;
  	  if (!bitmap_bit_p (arm_active_target.isa, isa_bit_vfpv2)
--- 4020,4026 ----
  
    if (TARGET_AAPCS_BASED)
      {
!       if (TARGET_HARD_FLOAT_ABI)
  	{
  	  arm_pcs_default = ARM_PCS_AAPCS_VFP;
  	  if (!bitmap_bit_p (arm_active_target.isa, isa_bit_vfpv2)
*************** use_return_insn (int iscond, rtx sibling
*** 4555,4565 ****
        if (reg_needs_saving_p (regno))
  	return 0;
  
-   if (TARGET_REALLY_IWMMXT)
-     for (regno = FIRST_IWMMXT_REGNUM; regno <= LAST_IWMMXT_REGNUM; regno++)
-       if (reg_needs_saving_p (regno))
- 	return 0;
- 
    return 1;
  }
  
--- 4530,4535 ----
*************** arm_libcall_value_1 (machine_mode mode)
*** 6048,6056 ****
  {
    if (TARGET_AAPCS_BASED)
      return aapcs_libcall_value (mode);
-   else if (TARGET_IWMMXT_ABI
- 	   && arm_vector_mode_supported_p (mode))
-     return gen_rtx_REG (mode, FIRST_IWMMXT_REGNUM);
    else
      return gen_rtx_REG (mode, ARG_REGISTER (1));
  }
--- 6018,6023 ----
*************** arm_function_value_regno_p (const unsign
*** 6083,6091 ****
        || (TARGET_32BIT
  	  && TARGET_AAPCS_BASED
  	  && TARGET_HARD_FLOAT
! 	  && regno == FIRST_VFP_REGNUM)
!       || (TARGET_IWMMXT_ABI
! 	  && regno == FIRST_IWMMXT_REGNUM))
      return true;
  
    return false;
--- 6050,6056 ----
        || (TARGET_32BIT
  	  && TARGET_AAPCS_BASED
  	  && TARGET_HARD_FLOAT
! 	  && regno == FIRST_VFP_REGNUM))
      return true;
  
    return false;
*************** arm_apply_result_size (void)
*** 6102,6109 ****
      {
        if (TARGET_HARD_FLOAT_ABI)
  	size += 32;
-       if (TARGET_IWMMXT_ABI)
- 	size += 8;
      }
  
    return size;
--- 6067,6072 ----
*************** const struct pcs_attribute_arg
*** 6265,6271 ****
  #if 0
      /* We could recognize these, but changes would be needed elsewhere
       * to implement them.  */
-     {"aapcs-iwmmxt", ARM_PCS_AAPCS_IWMMXT},
      {"atpcs", ARM_PCS_ATPCS},
      {"apcs", ARM_PCS_APCS},
  #endif
--- 6228,6233 ----
*************** arm_init_cumulative_args (CUMULATIVE_ARG
*** 7195,7220 ****
  
    /* On the ARM, the offset starts at 0.  */
    pcum->nregs = 0;
-   pcum->iwmmxt_nregs = 0;
    pcum->can_split = true;
  
    /* Varargs vectors are treated the same as long long.
       named_count avoids having to change the way arm handles 'named' */
    pcum->named_count = 0;
    pcum->nargs = 0;
- 
-   if (TARGET_REALLY_IWMMXT && fntype)
-     {
-       tree fn_arg;
- 
-       for (fn_arg = TYPE_ARG_TYPES (fntype);
- 	   fn_arg;
- 	   fn_arg = TREE_CHAIN (fn_arg))
- 	pcum->named_count += 1;
- 
-       if (! pcum->named_count)
- 	pcum->named_count = INT_MAX;
-     }
  }
  
  /* Return 2 if double word alignment is required for argument passing,
--- 7157,7168 ----
*************** arm_function_arg (cumulative_args_t pcum
*** 7308,7329 ****
        return pcum->aapcs_reg;
      }
  
-   /* Varargs vectors are treated the same as long long.
-      named_count avoids having to change the way arm handles 'named' */
-   if (TARGET_IWMMXT_ABI
-       && arm_vector_mode_supported_p (arg.mode)
-       && pcum->named_count > pcum->nargs + 1)
-     {
-       if (pcum->iwmmxt_nregs <= 9)
- 	return gen_rtx_REG (arg.mode,
- 			    pcum->iwmmxt_nregs + FIRST_IWMMXT_REGNUM);
-       else
- 	{
- 	  pcum->can_split = false;
- 	  return NULL_RTX;
- 	}
-     }
- 
    /* Put doubleword aligned quantities in even register pairs.  */
    if ((pcum->nregs & 1) && ARM_DOUBLEWORD_ALIGN)
      {
--- 7256,7261 ----
*************** arm_arg_partial_bytes (cumulative_args_t
*** 7383,7391 ****
        return pcum->aapcs_partial;
      }
  
-   if (TARGET_IWMMXT_ABI && arm_vector_mode_supported_p (arg.mode))
-     return 0;
- 
    if (NUM_ARG_REGS > nregs
        && (NUM_ARG_REGS < nregs + ARM_NUM_REGS2 (arg.mode, arg.type))
        && pcum->can_split)
--- 7315,7320 ----
*************** arm_function_arg_advance (cumulative_arg
*** 7422,7433 ****
    else
      {
        pcum->nargs += 1;
!       if (arm_vector_mode_supported_p (arg.mode)
! 	  && pcum->named_count > pcum->nargs
! 	  && TARGET_IWMMXT_ABI)
! 	pcum->iwmmxt_nregs += 1;
!       else
! 	pcum->nregs += ARM_NUM_REGS2 (arg.mode, arg.type);
      }
  }
  
--- 7351,7357 ----
    else
      {
        pcum->nargs += 1;
!       pcum->nregs += ARM_NUM_REGS2 (arg.mode, arg.type);
      }
  }
  
*************** require_pic_register (rtx pic_reg, bool
*** 8149,8156 ****
  	      else
  		arm_load_pic_register (0UL, pic_reg);
  
! 	      seq = get_insns ();
! 	      end_sequence ();
  
  	      for (insn = seq; insn; insn = NEXT_INSN (insn))
  		if (INSN_P (insn))
--- 8073,8079 ----
  	      else
  		arm_load_pic_register (0UL, pic_reg);
  
! 	      seq = end_sequence ();
  
  	      for (insn = seq; insn; insn = NEXT_INSN (insn))
  		if (INSN_P (insn))
*************** arm_legitimate_index_p (machine_mode mod
*** 8906,8917 ****
  	    && INTVAL (index) > -1024
  	    && (INTVAL (index) & 3) == 0);
  
-   if (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (mode))
-     return (code == CONST_INT
- 	    && INTVAL (index) < 1024
- 	    && INTVAL (index) > -1024
- 	    && (INTVAL (index) & 3) == 0);
- 
    if (GET_MODE_SIZE (mode) <= 4
        && ! (arm_arch4
  	    && (mode == HImode
--- 8829,8834 ----
*************** thumb2_legitimate_index_p (machine_mode
*** 8991,9007 ****
  	    && INTVAL (index) > -256
  	    && (INTVAL (index) & 3) == 0);
  
-   if (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (mode))
-     {
-       /* For DImode assume values will usually live in core regs
- 	 and only allow LDRD addressing modes.  */
-       if (!TARGET_LDRD || mode != DImode)
- 	return (code == CONST_INT
- 		&& INTVAL (index) < 1024
- 		&& INTVAL (index) > -1024
- 		&& (INTVAL (index) & 3) == 0);
-     }
- 
    /* For quad modes, we restrict the constant offset to be slightly less
       than what the instruction format permits.  We do this because for
       quad mode moves, we will actually decompose them into two separate
--- 8908,8913 ----
*************** arm_call_tls_get_addr (rtx x, rtx reg, r
*** 9372,9381 ****
  				     LCT_PURE, /* LCT_CONST?  */
  				     Pmode, reg, Pmode);
  
!   rtx_insn *insns = get_insns ();
!   end_sequence ();
! 
!   return insns;
  }
  
  static rtx
--- 9278,9284 ----
  				     LCT_PURE, /* LCT_CONST?  */
  				     Pmode, reg, Pmode);
  
!   return end_sequence ();
  }
  
  static rtx
*************** arm_register_move_cost (machine_mode mod
*** 12463,12473 ****
        if ((IS_VFP_CLASS (from) && !IS_VFP_CLASS (to))
  	  || (!IS_VFP_CLASS (from) && IS_VFP_CLASS (to)))
  	return 15;
-       else if ((from == IWMMXT_REGS && to != IWMMXT_REGS)
- 	       || (from != IWMMXT_REGS && to == IWMMXT_REGS))
- 	return 4;
-       else if (from == IWMMXT_GR_REGS || to == IWMMXT_GR_REGS)
- 	return 20;
        else
  	return 2;
      }
--- 12366,12371 ----
*************** arm_gen_load_multiple_1 (int count, int
*** 14993,15000 ****
  
    if (!multiple_operation_profitable_p (false, count, 0))
      {
-       rtx seq;
- 
        start_sequence ();
  
        for (i = 0; i < count; i++)
--- 14891,14896 ----
*************** arm_gen_load_multiple_1 (int count, int
*** 15003,15012 ****
        if (wback_offset != 0)
  	emit_move_insn (basereg, plus_constant (Pmode, basereg, wback_offset));
  
!       seq = get_insns ();
!       end_sequence ();
! 
!       return seq;
      }
  
    result = gen_rtx_PARALLEL (VOIDmode,
--- 14899,14905 ----
        if (wback_offset != 0)
  	emit_move_insn (basereg, plus_constant (Pmode, basereg, wback_offset));
  
!       return end_sequence ();
      }
  
    result = gen_rtx_PARALLEL (VOIDmode,
*************** arm_gen_store_multiple_1 (int count, int
*** 15044,15051 ****
  
    if (!multiple_operation_profitable_p (false, count, 0))
      {
-       rtx seq;
- 
        start_sequence ();
  
        for (i = 0; i < count; i++)
--- 14937,14942 ----
*************** arm_gen_store_multiple_1 (int count, int
*** 15054,15063 ****
        if (wback_offset != 0)
  	emit_move_insn (basereg, plus_constant (Pmode, basereg, wback_offset));
  
!       seq = get_insns ();
!       end_sequence ();
! 
!       return seq;
      }
  
    result = gen_rtx_PARALLEL (VOIDmode,
--- 14945,14951 ----
        if (wback_offset != 0)
  	emit_move_insn (basereg, plus_constant (Pmode, basereg, wback_offset));
  
!       return end_sequence ();
      }
  
    result = gen_rtx_PARALLEL (VOIDmode,
*************** struct minipool_node
*** 17583,17590 ****
    rtx value;
    /* The mode of value.  */
    machine_mode mode;
!   /* The size of the value.  With iWMMXt enabled
!      sizes > 4 also imply an alignment of 8-bytes.  */
    int fix_size;
  };
  
--- 17471,17477 ----
    rtx value;
    /* The mode of value.  */
    machine_mode mode;
!   /* The size of the value.  */
    int fix_size;
  };
  
*************** cmse_clear_registers (sbitmap to_clear_b
*** 18944,18951 ****
  	      XVECEXP (par, 0, k++) = set;
  	      emit_use (reg);
  	    }
! 	  use_seq = get_insns ();
! 	  end_sequence ();
  
  	  emit_insn_after (use_seq, emit_insn (par));
  	}
--- 18831,18837 ----
  	      XVECEXP (par, 0, k++) = set;
  	      emit_use (reg);
  	    }
! 	  use_seq = end_sequence ();
  
  	  emit_insn_after (use_seq, emit_insn (par));
  	}
*************** cmse_clear_registers (sbitmap to_clear_b
*** 18990,18997 ****
        rtx clobber = gen_rtx_CLOBBER (VOIDmode, ccreg);
        XVECEXP (par, 0, j) = clobber;
  
!       use_seq = get_insns ();
!       end_sequence ();
  
        emit_insn_after (use_seq, emit_insn (par));
      }
--- 18876,18882 ----
        rtx clobber = gen_rtx_CLOBBER (VOIDmode, ccreg);
        XVECEXP (par, 0, j) = clobber;
  
!       use_seq = end_sequence ();
  
        emit_insn_after (use_seq, emit_insn (par));
      }
*************** cmse_nonsecure_call_inline_register_clea
*** 19232,19239 ****
  	  cmse_clear_registers (to_clear_bitmap, padding_bits_to_clear,
  				NUM_ARG_REGS, ip_reg, clearing_reg);
  
! 	  seq = get_insns ();
! 	  end_sequence ();
  	  emit_insn_before (seq, insn);
  
  	  /* The AAPCS requires the callee to widen integral types narrower
--- 19117,19123 ----
  	  cmse_clear_registers (to_clear_bitmap, padding_bits_to_clear,
  				NUM_ARG_REGS, ip_reg, clearing_reg);
  
! 	  seq = end_sequence ();
  	  emit_insn_before (seq, insn);
  
  	  /* The AAPCS requires the callee to widen integral types narrower
*************** output_move_double (rtx *operands, bool
*** 20247,20255 ****
  		}
  	      else
  		{
! 		  /* Use a single insn if we can.
! 		     FIXME: IWMMXT allows offsets larger than ldrd can
! 		     handle, fix these up with a pair of ldr.  */
  		  if (can_ldrd
  		      && (TARGET_THUMB2
  		      || !CONST_INT_P (otherops[2])
--- 20131,20137 ----
  		}
  	      else
  		{
! 		  /* Use a single insn if we can.  */
  		  if (can_ldrd
  		      && (TARGET_THUMB2
  		      || !CONST_INT_P (otherops[2])
*************** output_move_double (rtx *operands, bool
*** 20274,20282 ****
  	    }
  	  else
  	    {
! 	      /* Use a single insn if we can.
! 		 FIXME: IWMMXT allows offsets larger than ldrd can handle,
! 		 fix these up with a pair of ldr.  */
  	      if (can_ldrd
  		  && (TARGET_THUMB2
  		  || !CONST_INT_P (otherops[2])
--- 20156,20162 ----
  	    }
  	  else
  	    {
! 	      /* Use a single insn if we can.  */
  	      if (can_ldrd
  		  && (TARGET_THUMB2
  		  || !CONST_INT_P (otherops[2])
*************** output_move_double (rtx *operands, bool
*** 20514,20521 ****
  	  otherops[1] = XEXP (XEXP (XEXP (operands[0], 0), 1), 0);
  	  otherops[2] = XEXP (XEXP (XEXP (operands[0], 0), 1), 1);
  
- 	  /* IWMMXT allows offsets larger than strd can handle,
- 	     fix these up with a pair of str.  */
  	  if (!TARGET_THUMB2
  	      && CONST_INT_P (otherops[2])
  	      && (INTVAL(otherops[2]) <= -256
--- 20394,20399 ----
*************** arm_compute_save_core_reg_mask (void)
*** 21452,21485 ****
    if (cfun->machine->lr_save_eliminated)
      save_reg_mask &= ~ (1 << LR_REGNUM);
  
-   if (TARGET_REALLY_IWMMXT
-       && ((bit_count (save_reg_mask)
- 	   + ARM_NUM_INTS (crtl->args.pretend_args_size +
- 			   arm_compute_static_chain_stack_bytes())
- 	   ) % 2) != 0)
-     {
-       /* The total number of registers that are going to be pushed
- 	 onto the stack is odd.  We need to ensure that the stack
- 	 is 64-bit aligned before we start to save iWMMXt registers,
- 	 and also before we start to create locals.  (A local variable
- 	 might be a double or long long which we will load/store using
- 	 an iWMMXt instruction).  Therefore we need to push another
- 	 ARM register, so that the stack will be 64-bit aligned.  We
- 	 try to avoid using the arg registers (r0 -r3) as they might be
- 	 used to pass values in a tail call.  */
-       for (reg = 4; reg <= 12; reg++)
- 	if ((save_reg_mask & (1 << reg)) == 0)
- 	  break;
- 
-       if (reg <= 12)
- 	save_reg_mask |= (1 << reg);
-       else
- 	{
- 	  cfun->machine->sibcall_blocked = 1;
- 	  save_reg_mask |= (1 << 3);
- 	}
-     }
- 
    /* We may need to push an additional register for use initializing the
       PIC base register.  */
    if (TARGET_THUMB2 && IS_NESTED (func_type) && flag_pic
--- 21330,21335 ----
*************** output_return_instruction (rtx operand,
*** 21687,21705 ****
  
        if ((live_regs_mask & (1 << IP_REGNUM)) == (1 << IP_REGNUM))
  	{
! 	  /* There are three possible reasons for the IP register
! 	     being saved.  1) a stack frame was created, in which case
! 	     IP contains the old stack pointer, or 2) an ISR routine
! 	     corrupted it, or 3) it was saved to align the stack on
! 	     iWMMXt.  In case 1, restore IP into SP, otherwise just
! 	     restore IP.  */
  	  if (frame_pointer_needed)
  	    {
  	      live_regs_mask &= ~ (1 << IP_REGNUM);
  	      live_regs_mask |=   (1 << SP_REGNUM);
  	    }
  	  else
! 	    gcc_assert (IS_INTERRUPT (func_type) || TARGET_REALLY_IWMMXT);
  	}
  
        /* On some ARM architectures it is faster to use LDR rather than
--- 21537,21553 ----
  
        if ((live_regs_mask & (1 << IP_REGNUM)) == (1 << IP_REGNUM))
  	{
! 	  /* There are two possible reasons for the IP register being saved.
! 	     1) a stack frame was created, in which case IP contains the old
! 	     stack pointer, or 2) an ISR routine corrupted it.  In case 1,
! 	     restore IP into SP, otherwise just restore IP.  */
  	  if (frame_pointer_needed)
  	    {
  	      live_regs_mask &= ~ (1 << IP_REGNUM);
  	      live_regs_mask |=   (1 << SP_REGNUM);
  	    }
  	  else
! 	    gcc_assert (IS_INTERRUPT (func_type));
  	}
  
        /* On some ARM architectures it is faster to use LDR rather than
*************** arm_compute_frame_layout (void)
*** 23151,23158 ****
  
    if (TARGET_32BIT)
      {
-       unsigned int regno;
- 
        offsets->saved_regs_mask = arm_compute_save_core_reg_mask ();
        core_saved = bit_count (offsets->saved_regs_mask) * 4;
        saved = core_saved;
--- 22999,23004 ----
*************** arm_compute_frame_layout (void)
*** 23161,23176 ****
  	 preserve that condition at any subroutine call.  We also require the
  	 soft frame pointer to be doubleword aligned.  */
  
-       if (TARGET_REALLY_IWMMXT)
- 	{
- 	  /* Check for the call-saved iWMMXt registers.  */
- 	  for (regno = FIRST_IWMMXT_REGNUM;
- 	       regno <= LAST_IWMMXT_REGNUM;
- 	       regno++)
- 	    if (reg_needs_saving_p (regno))
- 	      saved += 8;
- 	}
- 
        func_type = arm_current_func_type ();
        /* Space for saved VFP registers.  */
        if (! IS_VOLATILE (func_type)
--- 23007,23012 ----
*************** arm_save_coproc_regs(void)
*** 23386,23403 ****
    int saved_size = 0;
    unsigned reg;
    unsigned start_reg;
-   rtx insn;
- 
-   if (TARGET_REALLY_IWMMXT)
-   for (reg = LAST_IWMMXT_REGNUM; reg >= FIRST_IWMMXT_REGNUM; reg--)
-     if (reg_needs_saving_p (reg))
-       {
- 	insn = gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx);
- 	insn = gen_rtx_MEM (V2SImode, insn);
- 	insn = emit_set_insn (insn, gen_rtx_REG (V2SImode, reg));
- 	RTX_FRAME_RELATED_P (insn) = 1;
- 	saved_size += 8;
-       }
  
    if (TARGET_VFP_BASE)
      {
--- 23222,23227 ----
*************** arm_print_operand (FILE *stream, rtx x,
*** 24556,24597 ****
        return;
  
      case 'U':
-       if (!REG_P (x)
- 	  || REGNO (x) < FIRST_IWMMXT_GR_REGNUM
- 	  || REGNO (x) > LAST_IWMMXT_GR_REGNUM)
- 	/* Bad value for wCG register number.  */
- 	{
- 	  output_operand_lossage ("invalid operand for code '%c'", code);
- 	  return;
- 	}
- 
-       else
- 	fprintf (stream, "%d", REGNO (x) - FIRST_IWMMXT_GR_REGNUM);
-       return;
- 
-       /* Print an iWMMXt control register name.  */
      case 'w':
!       if (!CONST_INT_P (x)
! 	  || INTVAL (x) < 0
! 	  || INTVAL (x) >= 16)
! 	/* Bad value for wC register number.  */
! 	{
! 	  output_operand_lossage ("invalid operand for code '%c'", code);
! 	  return;
! 	}
! 
!       else
! 	{
! 	  static const char * wc_reg_names [16] =
! 	    {
! 	      "wCID",  "wCon",  "wCSSF", "wCASF",
! 	      "wC4",   "wC5",   "wC6",   "wC7",
! 	      "wCGR0", "wCGR1", "wCGR2", "wCGR3",
! 	      "wC12",  "wC13",  "wC14",  "wC15"
! 	    };
! 
! 	  fputs (wc_reg_names [INTVAL (x)], stream);
! 	}
        return;
  
      /* Print the high single-precision register of a VFP double-precision
--- 24380,24388 ----
        return;
  
      case 'U':
      case 'w':
!       /* Former iWMMXT support, removed after GCC-15.  */
!       output_operand_lossage ("obsolete iWMMXT format code '%c'", code);
        return;
  
      /* Print the high single-precision register of a VFP double-precision
*************** arm_hard_regno_mode_ok (unsigned int reg
*** 25926,25940 ****
        return false;
      }
  
-   if (TARGET_REALLY_IWMMXT)
-     {
-       if (IS_IWMMXT_GR_REGNUM (regno))
- 	return mode == SImode;
- 
-       if (IS_IWMMXT_REGNUM (regno))
- 	return VALID_IWMMXT_REG_MODE (mode);
-     }
- 
    /* We allow almost any value to be stored in the general registers.
       Restrict doubleword quantities to even register pairs in ARM state
       so that we can use ldrd. The same restriction applies for MVE
--- 25717,25722 ----
*************** arm_regno_class (int regno)
*** 26040,26051 ****
          return VFP_HI_REGS;
      }
  
-   if (IS_IWMMXT_REGNUM (regno))
-     return IWMMXT_REGS;
- 
-   if (IS_IWMMXT_GR_REGNUM (regno))
-     return IWMMXT_GR_REGS;
- 
    return NO_REGS;
  }
  
--- 25822,25827 ----
*************** arm_expand_epilogue_apcs_frame (bool rea
*** 27963,27989 ****
                                      gen_rtx_REG (SImode, IP_REGNUM));
      }
  
-   if (TARGET_IWMMXT)
-     {
-       /* The frame pointer is guaranteed to be non-double-word aligned, as
-          it is set to double-word-aligned old_stack_pointer - 4.  */
-       rtx_insn *insn;
-       int lrm_count = (num_regs % 2) ? (num_regs + 2) : (num_regs + 1);
- 
-       for (i = LAST_IWMMXT_REGNUM; i >= FIRST_IWMMXT_REGNUM; i--)
- 	if (reg_needs_saving_p (i))
-           {
-             rtx addr = gen_frame_mem (V2SImode,
-                                  plus_constant (Pmode, hard_frame_pointer_rtx,
-                                                 - lrm_count * 4));
-             insn = emit_insn (gen_movsi (gen_rtx_REG (V2SImode, i), addr));
-             REG_NOTES (insn) = alloc_reg_note (REG_CFA_RESTORE,
-                                                gen_rtx_REG (V2SImode, i),
-                                                NULL_RTX);
-             lrm_count += 2;
-           }
-     }
- 
    /* saved_regs_mask should contain IP which contains old stack pointer
       at the time of activation creation.  Since SP and IP are adjacent registers,
       we can restore the value directly into SP.  */
--- 27739,27744 ----
*************** arm_expand_epilogue (bool really_return)
*** 28196,28218 ****
                                      stack_pointer_rtx);
      }
  
-   if (TARGET_IWMMXT)
-     for (i = FIRST_IWMMXT_REGNUM; i <= LAST_IWMMXT_REGNUM; i++)
-       if (reg_needs_saving_p (i))
-         {
-           rtx_insn *insn;
-           rtx addr = gen_rtx_MEM (V2SImode,
-                                   gen_rtx_POST_INC (SImode,
-                                                     stack_pointer_rtx));
-           set_mem_alias_set (addr, get_frame_alias_set ());
-           insn = emit_insn (gen_movsi (gen_rtx_REG (V2SImode, i), addr));
-           REG_NOTES (insn) = alloc_reg_note (REG_CFA_RESTORE,
-                                              gen_rtx_REG (V2SImode, i),
-                                              NULL_RTX);
- 	  arm_add_cfa_adjust_cfa_note (insn, UNITS_PER_WORD,
- 				       stack_pointer_rtx, stack_pointer_rtx);
-         }
- 
    if (saved_regs_mask)
      {
        rtx insn;
--- 27951,27956 ----
*************** arm_vector_mode_supported_p (machine_mod
*** 29853,29859 ****
        || mode == V8BFmode))
      return true;
  
!   if ((TARGET_NEON || TARGET_IWMMXT)
        && ((mode == V2SImode)
  	  || (mode == V4HImode)
  	  || (mode == V8QImode)))
--- 29591,29597 ----
        || mode == V8BFmode))
      return true;
  
!   if (TARGET_NEON
        && ((mode == V2SImode)
  	  || (mode == V4HImode)
  	  || (mode == V8QImode)))
*************** arm_preferred_simd_mode (scalar_mode mod
*** 29945,29963 ****
        default:;
        }
  
-   if (TARGET_REALLY_IWMMXT)
-     switch (mode)
-       {
-       case E_SImode:
- 	return V2SImode;
-       case E_HImode:
- 	return V4HImode;
-       case E_QImode:
- 	return V8QImode;
- 
-       default:;
-       }
- 
    if (TARGET_HAVE_MVE)
      switch (mode)
        {
--- 29683,29688 ----
*************** arm_debugger_regno (unsigned int regno)
*** 30039,30050 ****
  	return 256 + (regno - FIRST_VFP_REGNUM) / 2;
      }
  
-   if (IS_IWMMXT_GR_REGNUM (regno))
-     return 104 + regno - FIRST_IWMMXT_GR_REGNUM;
- 
-   if (IS_IWMMXT_REGNUM (regno))
-     return 112 + regno - FIRST_IWMMXT_REGNUM;
- 
    if (IS_PAC_REGNUM (regno))
      return DWARF_PAC_REGNUM;
  
--- 29764,29769 ----
*************** arm_output_shift(rtx * operands, int set
*** 30631,30725 ****
    return "";
  }
  
- /* Output assembly for a WMMX immediate shift instruction.  */
- const char *
- arm_output_iwmmxt_shift_immediate (const char *insn_name, rtx *operands, bool wror_or_wsra)
- {
-   int shift = INTVAL (operands[2]);
-   char templ[50];
-   machine_mode opmode = GET_MODE (operands[0]);
- 
-   gcc_assert (shift >= 0);
- 
-   /* If the shift value in the register versions is > 63 (for D qualifier),
-      31 (for W qualifier) or 15 (for H qualifier).  */
-   if (((opmode == V4HImode) && (shift > 15))
- 	|| ((opmode == V2SImode) && (shift > 31))
- 	|| ((opmode == DImode) && (shift > 63)))
-   {
-     if (wror_or_wsra)
-       {
-         sprintf (templ, "%s\t%%0, %%1, #%d", insn_name, 32);
-         output_asm_insn (templ, operands);
-         if (opmode == DImode)
-           {
- 	    sprintf (templ, "%s\t%%0, %%0, #%d", insn_name, 32);
- 	    output_asm_insn (templ, operands);
-           }
-       }
-     else
-       {
-         /* The destination register will contain all zeros.  */
-         sprintf (templ, "wzero\t%%0");
-         output_asm_insn (templ, operands);
-       }
-     return "";
-   }
- 
-   if ((opmode == DImode) && (shift > 32))
-     {
-       sprintf (templ, "%s\t%%0, %%1, #%d", insn_name, 32);
-       output_asm_insn (templ, operands);
-       sprintf (templ, "%s\t%%0, %%0, #%d", insn_name, shift - 32);
-       output_asm_insn (templ, operands);
-     }
-   else
-     {
-       sprintf (templ, "%s\t%%0, %%1, #%d", insn_name, shift);
-       output_asm_insn (templ, operands);
-     }
-   return "";
- }
- 
- /* Output assembly for a WMMX tinsr instruction.  */
- const char *
- arm_output_iwmmxt_tinsr (rtx *operands)
- {
-   int mask = INTVAL (operands[3]);
-   int i;
-   char templ[50];
-   int units = mode_nunits[GET_MODE (operands[0])];
-   gcc_assert ((mask & (mask - 1)) == 0);
-   for (i = 0; i < units; ++i)
-     {
-       if ((mask & 0x01) == 1)
-         {
-           break;
-         }
-       mask >>= 1;
-     }
-   gcc_assert (i < units);
-   {
-     switch (GET_MODE (operands[0]))
-       {
-       case E_V8QImode:
- 	sprintf (templ, "tinsrb%%?\t%%0, %%2, #%d", i);
- 	break;
-       case E_V4HImode:
- 	sprintf (templ, "tinsrh%%?\t%%0, %%2, #%d", i);
- 	break;
-       case E_V2SImode:
- 	sprintf (templ, "tinsrw%%?\t%%0, %%2, #%d", i);
- 	break;
-       default:
- 	gcc_unreachable ();
- 	break;
-       }
-     output_asm_insn (templ, operands);
-   }
-   return "";
- }
- 
  /* Output an arm casesi dispatch sequence.  Used by arm_casesi_internal insn.
     Responsible for the handling of switch statements in arm.  */
  const char *
--- 30350,30355 ----
*************** arm_conditional_register_usage (void)
*** 31092,31117 ****
  	fixed_regs[VPR_REGNUM] = 0;
      }
  
-   if (TARGET_REALLY_IWMMXT && !TARGET_GENERAL_REGS_ONLY)
-     {
-       regno = FIRST_IWMMXT_GR_REGNUM;
-       /* The 2002/10/09 revision of the XScale ABI has wCG0
-          and wCG1 as call-preserved registers.  The 2002/11/21
-          revision changed this so that all wCG registers are
-          scratch registers.  */
-       for (regno = FIRST_IWMMXT_GR_REGNUM;
- 	   regno <= LAST_IWMMXT_GR_REGNUM; ++ regno)
- 	fixed_regs[regno] = 0;
-       /* The XScale ABI has wR0 - wR9 as scratch registers,
- 	 the rest as call-preserved registers.  */
-       for (regno = FIRST_IWMMXT_REGNUM;
- 	   regno <= LAST_IWMMXT_REGNUM; ++ regno)
- 	{
- 	  fixed_regs[regno] = 0;
- 	  call_used_regs[regno] = regno < FIRST_IWMMXT_REGNUM + 10;
- 	}
-     }
- 
    if ((unsigned) PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM)
      {
        fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1;
--- 30722,30727 ----
*************** arm_attempt_dlstp_transform (rtx label)
*** 35961,35968 ****
  	  emit_insn (PATTERN (insn));
  	}
      }
!   seq = get_insns ();
!   end_sequence ();
  
    /* Re-write the entire BB contents with the transformed
       sequence.  */
--- 35571,35577 ----
  	  emit_insn (PATTERN (insn));
  	}
      }
!   seq = end_sequence ();
  
    /* Re-write the entire BB contents with the transformed
       sequence.  */
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm.h gcc-16-20250518/gcc/config/arm/arm.h
*** gcc-16-20250511/gcc/config/arm/arm.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm.h	Sun May 18 22:32:07 2025
*************** emission of floating point pcs attribute
*** 137,149 ****
  #define TARGET_MAYBE_HARD_FLOAT (arm_float_abi != ARM_FLOAT_ABI_SOFT)
  /* Use hardware floating point calling convention.  */
  #define TARGET_HARD_FLOAT_ABI		(arm_float_abi == ARM_FLOAT_ABI_HARD)
- #define TARGET_IWMMXT			(arm_arch_iwmmxt)
- #define TARGET_IWMMXT2			(arm_arch_iwmmxt2)
- #define TARGET_REALLY_IWMMXT		(TARGET_IWMMXT && TARGET_32BIT \
- 					 && !TARGET_GENERAL_REGS_ONLY)
- #define TARGET_REALLY_IWMMXT2		(TARGET_IWMMXT2 && TARGET_32BIT \
- 					 && !TARGET_GENERAL_REGS_ONLY)
- #define TARGET_IWMMXT_ABI (TARGET_32BIT && arm_abi == ARM_ABI_IWMMXT)
  #define TARGET_ARM                      (! TARGET_THUMB)
  #define TARGET_EITHER			1 /* (TARGET_ARM | TARGET_THUMB) */
  #define TARGET_BACKTRACE	        (crtl->is_leaf \
--- 137,142 ----
*************** extern int arm_ld_sched;
*** 526,537 ****
  /* Nonzero if this chip is a StrongARM.  */
  extern int arm_tune_strongarm;
  
- /* Nonzero if this chip supports Intel XScale with Wireless MMX technology.  */
- extern int arm_arch_iwmmxt;
- 
- /* Nonzero if this chip supports Intel Wireless MMX2 technology.  */
- extern int arm_arch_iwmmxt2;
- 
  /* Nonzero if this chip is an XScale.  */
  extern int arm_arch_xscale;
  
--- 519,524 ----
*************** extern const int arm_arch_cde_coproc_bit
*** 855,864 ****
    1,1,1,1,1,1,1,1,		\
    1,1,1,1,1,1,1,1,		\
    1,1,1,1,1,1,1,1,		\
-   /* IWMMXT regs.  */		\
-   1,1,1,1,1,1,1,1,		\
-   1,1,1,1,1,1,1,1,		\
-   1,1,1,1,			\
    /* Specials.  */		\
    1,1,1,1,1,1,1,1		\
  }
--- 842,847 ----
*************** extern const int arm_arch_cde_coproc_bit
*** 885,894 ****
    1,1,1,1,1,1,1,1,		\
    1,1,1,1,1,1,1,1,		\
    1,1,1,1,1,1,1,1,		\
-   /* IWMMXT regs.  */		\
-   1,1,1,1,1,1,1,1,		\
-   1,1,1,1,1,1,1,1,		\
-   1,1,1,1,			\
    /* Specials.  */		\
    1,1,1,1,1,1,1,1		\
  }
--- 868,873 ----
*************** extern const int arm_arch_cde_coproc_bit
*** 1010,1032 ****
  /* Register to use for pushing function arguments.  */
  #define STACK_POINTER_REGNUM	SP_REGNUM
  
- #define FIRST_IWMMXT_REGNUM	(LAST_HI_VFP_REGNUM + 1)
- #define LAST_IWMMXT_REGNUM	(FIRST_IWMMXT_REGNUM + 15)
- 
- /* Need to sync with WCGR in iwmmxt.md.  */
- #define FIRST_IWMMXT_GR_REGNUM	(LAST_IWMMXT_REGNUM + 1)
- #define LAST_IWMMXT_GR_REGNUM	(FIRST_IWMMXT_GR_REGNUM + 3)
- 
- #define IS_IWMMXT_REGNUM(REGNUM) \
-   (((REGNUM) >= FIRST_IWMMXT_REGNUM) && ((REGNUM) <= LAST_IWMMXT_REGNUM))
- #define IS_IWMMXT_GR_REGNUM(REGNUM) \
-   (((REGNUM) >= FIRST_IWMMXT_GR_REGNUM) && ((REGNUM) <= LAST_IWMMXT_GR_REGNUM))
- 
  /* Base register for access to local variables of the function.  */
! #define FRAME_POINTER_REGNUM	102
  
  /* Base register for access to arguments of the function.  */
! #define ARG_POINTER_REGNUM	103
  
  #define FIRST_VFP_REGNUM	16
  #define D7_VFP_REGNUM		(FIRST_VFP_REGNUM + 15)
--- 989,999 ----
  /* Register to use for pushing function arguments.  */
  #define STACK_POINTER_REGNUM	SP_REGNUM
  
  /* Base register for access to local variables of the function.  */
! #define FRAME_POINTER_REGNUM	(CC_REGNUM + 2)
  
  /* Base register for access to arguments of the function.  */
! #define ARG_POINTER_REGNUM	(FRAME_POINTER_REGNUM + 1)
  
  #define FIRST_VFP_REGNUM	16
  #define D7_VFP_REGNUM		(FIRST_VFP_REGNUM + 15)
*************** extern const int arm_arch_cde_coproc_bit
*** 1067,1075 ****
  
  /* The number of hard registers is 16 ARM + 1 CC + 1 SFP + 1 AFP
     + 1 APSRQ + 1 APSRGE + 1 VPR + 1 Pseudo register to save PAC.  */
- /* Intel Wireless MMX Technology registers add 16 + 4 more.  */
  /* VFP (VFP3) adds 32 (64) + 1 VFPCC.  */
! #define FIRST_PSEUDO_REGISTER   108
  
  #define DWARF_PAC_REGNUM 143
  
--- 1034,1041 ----
  
  /* The number of hard registers is 16 ARM + 1 CC + 1 SFP + 1 AFP
     + 1 APSRQ + 1 APSRGE + 1 VPR + 1 Pseudo register to save PAC.  */
  /* VFP (VFP3) adds 32 (64) + 1 VFPCC.  */
! #define FIRST_PSEUDO_REGISTER   88
  
  #define DWARF_PAC_REGNUM 143
  
*************** extern const int arm_arch_cde_coproc_bit
*** 1086,1094 ****
  #define SUBTARGET_FRAME_POINTER_REQUIRED 0
  #endif
  
- #define VALID_IWMMXT_REG_MODE(MODE) \
-  (arm_vector_mode_supported_p (MODE) || (MODE) == DImode)
- 
  /* Modes valid for Neon D registers.  */
  #define VALID_NEON_DREG_MODE(MODE) \
    ((MODE) == V2SImode || (MODE) == V4HImode || (MODE) == V8QImode \
--- 1052,1057 ----
*************** extern const int arm_arch_cde_coproc_bit
*** 1168,1176 ****
  /* The conditions under which vector modes are supported for general
     arithmetic by any vector extension.  */
  
! #define ARM_HAVE_V8QI_ARITH (ARM_HAVE_NEON_V8QI_ARITH || TARGET_REALLY_IWMMXT)
! #define ARM_HAVE_V4HI_ARITH (ARM_HAVE_NEON_V4HI_ARITH || TARGET_REALLY_IWMMXT)
! #define ARM_HAVE_V2SI_ARITH (ARM_HAVE_NEON_V2SI_ARITH || TARGET_REALLY_IWMMXT)
  
  #define ARM_HAVE_V16QI_ARITH (ARM_HAVE_NEON_V16QI_ARITH || TARGET_HAVE_MVE)
  #define ARM_HAVE_V8HI_ARITH (ARM_HAVE_NEON_V8HI_ARITH || TARGET_HAVE_MVE)
--- 1131,1139 ----
  /* The conditions under which vector modes are supported for general
     arithmetic by any vector extension.  */
  
! #define ARM_HAVE_V8QI_ARITH (ARM_HAVE_NEON_V8QI_ARITH)
! #define ARM_HAVE_V4HI_ARITH (ARM_HAVE_NEON_V4HI_ARITH)
! #define ARM_HAVE_V2SI_ARITH (ARM_HAVE_NEON_V2SI_ARITH)
  
  #define ARM_HAVE_V16QI_ARITH (ARM_HAVE_NEON_V16QI_ARITH || TARGET_HAVE_MVE)
  #define ARM_HAVE_V8HI_ARITH (ARM_HAVE_NEON_V8HI_ARITH || TARGET_HAVE_MVE)
*************** extern const int arm_arch_cde_coproc_bit
*** 1204,1212 ****
  /* The conditions under which vector modes are supported by load/store
     instructions by any vector extension.  */
  
! #define ARM_HAVE_V8QI_LDST (ARM_HAVE_NEON_V8QI_LDST || TARGET_REALLY_IWMMXT)
! #define ARM_HAVE_V4HI_LDST (ARM_HAVE_NEON_V4HI_LDST || TARGET_REALLY_IWMMXT)
! #define ARM_HAVE_V2SI_LDST (ARM_HAVE_NEON_V2SI_LDST || TARGET_REALLY_IWMMXT)
  
  #define ARM_HAVE_V16QI_LDST (ARM_HAVE_NEON_V16QI_LDST || TARGET_HAVE_MVE)
  #define ARM_HAVE_V8HI_LDST (ARM_HAVE_NEON_V8HI_LDST || TARGET_HAVE_MVE)
--- 1167,1175 ----
  /* The conditions under which vector modes are supported by load/store
     instructions by any vector extension.  */
  
! #define ARM_HAVE_V8QI_LDST (ARM_HAVE_NEON_V8QI_LDST)
! #define ARM_HAVE_V4HI_LDST (ARM_HAVE_NEON_V4HI_LDST)
! #define ARM_HAVE_V2SI_LDST (ARM_HAVE_NEON_V2SI_LDST)
  
  #define ARM_HAVE_V16QI_LDST (ARM_HAVE_NEON_V16QI_LDST || TARGET_HAVE_MVE)
  #define ARM_HAVE_V8HI_LDST (ARM_HAVE_NEON_V8HI_LDST || TARGET_HAVE_MVE)
*************** extern int arm_regs_in_sequence[];
*** 1238,1245 ****
     function.  */
  
  #define VREG(X)  (FIRST_VFP_REGNUM + (X))
- #define WREG(X)  (FIRST_IWMMXT_REGNUM + (X))
- #define WGREG(X) (FIRST_IWMMXT_GR_REGNUM + (X))
  
  #define REG_ALLOC_ORDER				\
  {						\
--- 1201,1206 ----
*************** extern int arm_regs_in_sequence[];
*** 1265,1276 ****
    VREG(20), VREG(21), VREG(22), VREG(23),	\
    VREG(24), VREG(25), VREG(26), VREG(27),	\
    VREG(28), VREG(29), VREG(30), VREG(31),	\
-   /* IWMMX registers.  */			\
-   WREG(0),  WREG(1),  WREG(2),  WREG(3),	\
-   WREG(4),  WREG(5),  WREG(6),  WREG(7),	\
-   WREG(8),  WREG(9),  WREG(10), WREG(11),	\
-   WREG(12), WREG(13), WREG(14), WREG(15),	\
-   WGREG(0), WGREG(1), WGREG(2), WGREG(3),	\
    /* Registers not for general use.  */		\
    CC_REGNUM, VFPCC_REGNUM,			\
    FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM,	\
--- 1226,1231 ----
*************** enum reg_class
*** 1315,1322 ****
    VFP_LO_REGS,
    VFP_HI_REGS,
    VFP_REGS,
-   IWMMXT_REGS,
-   IWMMXT_GR_REGS,
    CC_REG,
    VFPCC_REG,
    SFP_REG,
--- 1270,1275 ----
*************** enum reg_class
*** 1346,1353 ****
    "VFP_LO_REGS",	\
    "VFP_HI_REGS",	\
    "VFP_REGS",		\
-   "IWMMXT_REGS",	\
-   "IWMMXT_GR_REGS",	\
    "CC_REG",		\
    "VFPCC_REG",		\
    "SFP_REG",		\
--- 1299,1304 ----
*************** enum reg_class
*** 1363,1391 ****
     of length N_REG_CLASSES.  */
  #define REG_CLASS_CONTENTS						\
  {									\
!   { 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS  */	\
!   { 0x000000FF, 0x00000000, 0x00000000, 0x00000000 }, /* LO_REGS */	\
!   { 0x00002000, 0x00000000, 0x00000000, 0x00000000 }, /* STACK_REG */	\
!   { 0x000020FF, 0x00000000, 0x00000000, 0x00000000 }, /* BASE_REGS */	\
!   { 0x00005F00, 0x00000000, 0x00000000, 0x00000000 }, /* HI_REGS */	\
!   { 0x0000100F, 0x00000000, 0x00000000, 0x00000000 }, /* CALLER_SAVE_REGS */ \
!   { 0x00005555, 0x00000000, 0x00000000, 0x00000000 }, /* EVEN_REGS.  */ \
!   { 0x00005FFF, 0x00000000, 0x00000000, 0x00000000 }, /* GENERAL_REGS */ \
!   { 0x00007FFF, 0x00000000, 0x00000000, 0x00000000 }, /* CORE_REGS */	\
!   { 0xFFFF0000, 0x00000000, 0x00000000, 0x00000000 }, /* VFP_D0_D7_REGS  */ \
!   { 0xFFFF0000, 0x0000FFFF, 0x00000000, 0x00000000 }, /* VFP_LO_REGS  */ \
!   { 0x00000000, 0xFFFF0000, 0x0000FFFF, 0x00000000 }, /* VFP_HI_REGS  */ \
!   { 0xFFFF0000, 0xFFFFFFFF, 0x0000FFFF, 0x00000000 }, /* VFP_REGS  */	\
!   { 0x00000000, 0x00000000, 0xFFFF0000, 0x00000000 }, /* IWMMXT_REGS */	\
!   { 0x00000000, 0x00000000, 0x00000000, 0x0000000F }, /* IWMMXT_GR_REGS */ \
!   { 0x00000000, 0x00000000, 0x00000000, 0x00000010 }, /* CC_REG */	\
!   { 0x00000000, 0x00000000, 0x00000000, 0x00000020 }, /* VFPCC_REG */	\
!   { 0x00000000, 0x00000000, 0x00000000, 0x00000040 }, /* SFP_REG */	\
!   { 0x00000000, 0x00000000, 0x00000000, 0x00000080 }, /* AFP_REG */	\
!   { 0x00000000, 0x00000000, 0x00000000, 0x00000400 }, /* VPR_REG.  */	\
!   { 0x00000000, 0x00000000, 0x00000000, 0x00000800 }, /* PAC_REG.  */	\
!   { 0x00005FFF, 0x00000000, 0x00000000, 0x00000400 }, /* GENERAL_AND_VPR_REGS.  */ \
!   { 0xFFFF7FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000040F }  /* ALL_REGS.  */	\
  }
  
  #define FP_SYSREGS \
--- 1314,1340 ----
     of length N_REG_CLASSES.  */
  #define REG_CLASS_CONTENTS						\
  {									\
!   { 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS  */		\
!   { 0x000000FF, 0x00000000, 0x00000000 }, /* LO_REGS */			\
!   { 0x00002000, 0x00000000, 0x00000000 }, /* STACK_REG */		\
!   { 0x000020FF, 0x00000000, 0x00000000 }, /* BASE_REGS */		\
!   { 0x00005F00, 0x00000000, 0x00000000 }, /* HI_REGS */			\
!   { 0x0000100F, 0x00000000, 0x00000000 }, /* CALLER_SAVE_REGS */	\
!   { 0x00005555, 0x00000000, 0x00000000 }, /* EVEN_REGS.  */		\
!   { 0x00005FFF, 0x00000000, 0x00000000 }, /* GENERAL_REGS */		\
!   { 0x00007FFF, 0x00000000, 0x00000000 }, /* CORE_REGS */		\
!   { 0xFFFF0000, 0x00000000, 0x00000000 }, /* VFP_D0_D7_REGS  */		\
!   { 0xFFFF0000, 0x0000FFFF, 0x00000000 }, /* VFP_LO_REGS  */		\
!   { 0x00000000, 0xFFFF0000, 0x0000FFFF }, /* VFP_HI_REGS  */		\
!   { 0xFFFF0000, 0xFFFFFFFF, 0x0000FFFF }, /* VFP_REGS  */		\
!   { 0x00000000, 0x00000000, 0x00010000 }, /* CC_REG */			\
!   { 0x00000000, 0x00000000, 0x00020000 }, /* VFPCC_REG */		\
!   { 0x00000000, 0x00000000, 0x00040000 }, /* SFP_REG */			\
!   { 0x00000000, 0x00000000, 0x00080000 }, /* AFP_REG */			\
!   { 0x00000000, 0x00000000, 0x00400000 }, /* VPR_REG.  */		\
!   { 0x00000000, 0x00000000, 0x00800000 }, /* PAC_REG.  */		\
!   { 0x00005FFF, 0x00000000, 0x00400000 }, /* GENERAL_AND_VPR_REGS.  */	\
!   { 0xFFFF7FFF, 0xFFFFFFFF, 0x0040FFFF }  /* ALL_REGS.  */		\
  }
  
  #define FP_SYSREGS \
*************** extern const char *fp_sysreg_names[NB_FP
*** 1460,1498 ****
  /* Return the register class of a scratch register needed to copy IN into
     or out of a register in CLASS in MODE.  If it can be done directly,
     NO_REGS is returned.  */
! #define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, X)		\
!   /* Restrict which direct reloads are allowed for VFP/iWMMXt regs.  */ \
!   ((TARGET_HARD_FLOAT && IS_VFP_CLASS (CLASS))			\
!    ? coproc_secondary_reload_class (MODE, X, FALSE)		\
!    : (TARGET_IWMMXT && (CLASS) == IWMMXT_REGS)			\
!    ? coproc_secondary_reload_class (MODE, X, TRUE)		\
!    : TARGET_32BIT						\
!    ? (((MODE) == HImode && ! arm_arch4 && true_regnum (X) == -1) \
!     ? GENERAL_REGS : NO_REGS)					\
!    : THUMB_SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X))
  
  /* If we need to load shorts byte-at-a-time, then we need a scratch.  */
! #define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X)		\
!   /* Restrict which direct reloads are allowed for VFP/iWMMXt regs.  */ \
!   ((TARGET_HARD_FLOAT && IS_VFP_CLASS (CLASS))			\
!     ? coproc_secondary_reload_class (MODE, X, FALSE) :		\
!     (TARGET_IWMMXT && (CLASS) == IWMMXT_REGS) ?			\
!     coproc_secondary_reload_class (MODE, X, TRUE) :		\
!    (TARGET_32BIT ?						\
!     (((CLASS) == IWMMXT_REGS || (CLASS) == IWMMXT_GR_REGS)	\
!      && CONSTANT_P (X))						\
!     ? GENERAL_REGS :						\
!     (((MODE) == HImode && ! arm_arch4				\
!       && (MEM_P (X)					\
! 	  || ((REG_P (X) || GET_CODE (X) == SUBREG)	\
! 	      && true_regnum (X) == -1)))			\
!      ? GENERAL_REGS : NO_REGS)					\
!     : THUMB_SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)))
  
  /* Return the maximum number of consecutive registers
     needed to represent mode MODE in a register of class CLASS.
!    ARM regs are UNITS_PER_WORD bits.
!    FIXME: Is this true for iWMMX?  */
  #define CLASS_MAX_NREGS(CLASS, MODE)  \
    (CLASS == VPR_REG)		      \
    ? CEIL (GET_MODE_SIZE (MODE), 2)    \
--- 1409,1442 ----
  /* Return the register class of a scratch register needed to copy IN into
     or out of a register in CLASS in MODE.  If it can be done directly,
     NO_REGS is returned.  */
! #define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, X)			\
!   /* Restrict which direct reloads are allowed for VFP regs.  */	\
!   ((TARGET_HARD_FLOAT && IS_VFP_CLASS (CLASS))				\
!    ? coproc_secondary_reload_class (MODE, X, FALSE)			\
!    : (TARGET_32BIT							\
!       ? (((MODE) == HImode && ! arm_arch4 && true_regnum (X) == -1)	\
! 	 ? GENERAL_REGS							\
! 	 : NO_REGS)							\
!       : THUMB_SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)))
  
  /* If we need to load shorts byte-at-a-time, then we need a scratch.  */
! #define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X)			\
!   /* Restrict which direct reloads are allowed for VFP regs.  */	\
!   ((TARGET_HARD_FLOAT && IS_VFP_CLASS (CLASS))				\
!    ? coproc_secondary_reload_class (MODE, X, FALSE)			\
!    : (TARGET_32BIT							\
!       ? (((MODE) == HImode						\
! 	  && ! arm_arch4						\
! 	  && (MEM_P (X)							\
! 	      || ((REG_P (X) || GET_CODE (X) == SUBREG)			\
! 		  && true_regnum (X) == -1)))				\
! 	 ? GENERAL_REGS							\
! 	 : NO_REGS)							\
!       : THUMB_SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)))
  
  /* Return the maximum number of consecutive registers
     needed to represent mode MODE in a register of class CLASS.
!    ARM regs are UNITS_PER_WORD bits.  */
  #define CLASS_MAX_NREGS(CLASS, MODE)  \
    (CLASS == VPR_REG)		      \
    ? CEIL (GET_MODE_SIZE (MODE), 2)    \
*************** enum arm_pcs
*** 1672,1678 ****
  {
    ARM_PCS_AAPCS,	/* Base standard AAPCS.  */
    ARM_PCS_AAPCS_VFP,	/* Use VFP registers for floating point values.  */
-   ARM_PCS_AAPCS_IWMMXT, /* Use iWMMXT registers for vectors.  */
    /* This must be the last AAPCS variant.  */
    ARM_PCS_AAPCS_LOCAL,	/* Private call within this compilation unit.  */
    ARM_PCS_ATPCS,	/* ATPCS.  */
--- 1616,1621 ----
*************** typedef struct
*** 1690,1697 ****
  {
    /* This is the number of registers of arguments scanned so far.  */
    int nregs;
-   /* This is the number of iWMMXt register arguments scanned so far.  */
-   int iwmmxt_nregs;
    int named_count;
    int nargs;
    /* Which procedure call variant to use for this call.  */
--- 1633,1638 ----
*************** typedef struct
*** 1739,1747 ****
  #define FUNCTION_ARG_REGNO_P(REGNO)					\
     (IN_RANGE ((REGNO), 0, 3)						\
      || (TARGET_AAPCS_BASED && TARGET_HARD_FLOAT				\
! 	&& IN_RANGE ((REGNO), FIRST_VFP_REGNUM, FIRST_VFP_REGNUM + 15))	\
!     || (TARGET_IWMMXT_ABI						\
! 	&& IN_RANGE ((REGNO), FIRST_IWMMXT_REGNUM, FIRST_IWMMXT_REGNUM + 9)))
  
  
  /* If your target environment doesn't prefix user functions with an
--- 1680,1686 ----
  #define FUNCTION_ARG_REGNO_P(REGNO)					\
     (IN_RANGE ((REGNO), 0, 3)						\
      || (TARGET_AAPCS_BASED && TARGET_HARD_FLOAT				\
! 	&& IN_RANGE ((REGNO), FIRST_VFP_REGNUM, FIRST_VFP_REGNUM + 15)))
  
  
  /* If your target environment doesn't prefix user functions with an
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm.md gcc-16-20250518/gcc/config/arm/arm.md
*** gcc-16-20250511/gcc/config/arm/arm.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm.md	Sun May 18 22:32:07 2025
***************
*** 37,48 ****
     (LR_REGNUM        14)	; Return address register
     (PC_REGNUM	     15)	; Program counter
     (LAST_ARM_REGNUM  15)	;
!    (CC_REGNUM       100)	; Condition code pseudo register
!    (VFPCC_REGNUM    101)	; VFP Condition code pseudo register
!    (APSRQ_REGNUM    104)	; Q bit pseudo register
!    (APSRGE_REGNUM   105)	; GE bits pseudo register
!    (VPR_REGNUM      106)	; Vector Predication Register - MVE register.
!    (RA_AUTH_CODE    107)	; Pseudo register to save PAC.
    ]
  )
  ;; 3rd operand to select_dominance_cc_mode
--- 37,48 ----
     (LR_REGNUM        14)	; Return address register
     (PC_REGNUM	     15)	; Program counter
     (LAST_ARM_REGNUM  15)	;
!    (CC_REGNUM        80)	; Condition code pseudo register
!    (VFPCC_REGNUM     81)	; VFP Condition code pseudo register
!    (APSRQ_REGNUM     84)	; Q bit pseudo register
!    (APSRGE_REGNUM    85)	; GE bits pseudo register
!    (VPR_REGNUM       86)	; Vector Predication Register - MVE register.
!    (RA_AUTH_CODE     87)	; Pseudo register to save PAC.
    ]
  )
  ;; 3rd operand to select_dominance_cc_mode
***************
*** 149,155 ****
  ; This attribute is used to compute attribute "enabled",
  ; use type "any" to enable an alternative in all cases.
  (define_attr "arch" "any, a, t, 32, t1, t2, v6,nov6, v6t2, \
! 		     v8mb, fix_vlldm, iwmmxt, iwmmxt2, armv6_or_vfpv3, \
  		     neon, mve"
    (const_string "any"))
  
--- 149,155 ----
  ; This attribute is used to compute attribute "enabled",
  ; use type "any" to enable an alternative in all cases.
  (define_attr "arch" "any, a, t, 32, t1, t2, v6,nov6, v6t2, \
! 		     v8mb, fix_vlldm, armv6_or_vfpv3, \
  		     neon, mve"
    (const_string "any"))
  
***************
*** 197,206 ****
  	      (match_test "fix_vlldm"))
  	 (const_string "yes")
  
- 	 (and (eq_attr "arch" "iwmmxt2")
- 	      (match_test "TARGET_REALLY_IWMMXT2"))
- 	 (const_string "yes")
- 
  	 (and (eq_attr "arch" "armv6_or_vfpv3")
  	      (match_test "arm_arch6 || TARGET_VFP3"))
  	 (const_string "yes")
--- 197,202 ----
***************
*** 362,379 ****
      alus_ext, alus_imm, alus_sreg,\
      alus_shift_imm, alus_shift_reg, bfm, csel, rev, logic_imm, logic_reg,\
      logic_shift_imm, logic_shift_reg, logics_imm, logics_reg,\
!     logics_shift_imm, logics_shift_reg, extend, shift_imm, float, fcsel,\
!     wmmx_wor, wmmx_wxor, wmmx_wand, wmmx_wandn, wmmx_wmov, wmmx_tmcrr,\
!     wmmx_tmrrc, wmmx_wldr, wmmx_wstr, wmmx_tmcr, wmmx_tmrc, wmmx_wadd,\
!     wmmx_wsub, wmmx_wmul, wmmx_wmac, wmmx_wavg2, wmmx_tinsr, wmmx_textrm,\
!     wmmx_wshufh, wmmx_wcmpeq, wmmx_wcmpgt, wmmx_wmax, wmmx_wmin, wmmx_wpack,\
!     wmmx_wunpckih, wmmx_wunpckil, wmmx_wunpckeh, wmmx_wunpckel, wmmx_wror,\
!     wmmx_wsra, wmmx_wsrl, wmmx_wsll, wmmx_wmadd, wmmx_tmia, wmmx_tmiaph,\
!     wmmx_tmiaxy, wmmx_tbcst, wmmx_tmovmsk, wmmx_wacc, wmmx_waligni,\
!     wmmx_walignr, wmmx_tandc, wmmx_textrc, wmmx_torc, wmmx_torvsc, wmmx_wsad,\
!     wmmx_wabs, wmmx_wabsdiff, wmmx_waddsubhx, wmmx_wsubaddhx, wmmx_wavg4,\
!     wmmx_wmulw, wmmx_wqmulm, wmmx_wqmulwm, wmmx_waddbhus, wmmx_wqmiaxy,\
!     wmmx_wmiaxy, wmmx_wmiawxy, wmmx_wmerge")
  		(const_string "single")
  	        (const_string "multi")))
  
--- 358,364 ----
      alus_ext, alus_imm, alus_sreg,\
      alus_shift_imm, alus_shift_reg, bfm, csel, rev, logic_imm, logic_reg,\
      logic_shift_imm, logic_shift_reg, logics_imm, logics_reg,\
!     logics_shift_imm, logics_shift_reg, extend, shift_imm, float, fcsel")
  		(const_string "single")
  	        (const_string "multi")))
  
***************
*** 435,441 ****
  	  (const_string "yes")
  	  (const_string "no"))))
  
- (include "marvell-f-iwmmxt.md")
  (include "arm-generic.md")
  (include "arm926ejs.md")
  (include "arm1020e.md")
--- 420,425 ----
***************
*** 2893,2906 ****
  ;; Split DImode and, ior, xor operations.  Simply perform the logical
  ;; operation on the upper and lower halves of the registers.
  ;; This is needed for atomic operations in arm_split_atomic_op.
- ;; Avoid splitting IWMMXT instructions.
  (define_split
    [(set (match_operand:DI 0 "s_register_operand" "")
  	(match_operator:DI 6 "logical_binary_operator"
  	  [(match_operand:DI 1 "s_register_operand" "")
  	   (match_operand:DI 2 "s_register_operand" "")]))]
!   "TARGET_32BIT && reload_completed
!    && ! IS_IWMMXT_REGNUM (REGNO (operands[0]))"
    [(set (match_dup 0) (match_op_dup:SI 6 [(match_dup 1) (match_dup 2)]))
     (set (match_dup 3) (match_op_dup:SI 6 [(match_dup 4) (match_dup 5)]))]
    "
--- 2877,2888 ----
  ;; Split DImode and, ior, xor operations.  Simply perform the logical
  ;; operation on the upper and lower halves of the registers.
  ;; This is needed for atomic operations in arm_split_atomic_op.
  (define_split
    [(set (match_operand:DI 0 "s_register_operand" "")
  	(match_operator:DI 6 "logical_binary_operator"
  	  [(match_operand:DI 1 "s_register_operand" "")
  	   (match_operand:DI 2 "s_register_operand" "")]))]
!   "TARGET_32BIT && reload_completed"
    [(set (match_dup 0) (match_op_dup:SI 6 [(match_dup 1) (match_dup 2)]))
     (set (match_dup 3) (match_op_dup:SI 6 [(match_dup 4) (match_dup 5)]))]
    "
***************
*** 6345,6351 ****
    "TARGET_32BIT
     && !(TARGET_HARD_FLOAT)
     && !(TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT)
-    && !TARGET_IWMMXT
     && (   register_operand (operands[0], DImode)
         || register_operand (operands[1], DImode))"
    "*
--- 6327,6332 ----
***************
*** 6554,6560 ****
  (define_insn "*arm_movsi_insn"
    [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m")
  	(match_operand:SI 1 "general_operand"      "rk, I,K,j,mi,rk"))]
!   "TARGET_ARM && !TARGET_IWMMXT && !TARGET_HARD_FLOAT
     && (   register_operand (operands[0], SImode)
         || register_operand (operands[1], SImode))"
    "@
--- 6535,6541 ----
  (define_insn "*arm_movsi_insn"
    [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m")
  	(match_operand:SI 1 "general_operand"      "rk, I,K,j,mi,rk"))]
!   "TARGET_ARM && !TARGET_HARD_FLOAT
     && (   register_operand (operands[0], SImode)
         || register_operand (operands[1], SImode))"
    "@
***************
*** 13123,13132 ****
    [(set_attr "conds" "unconditional")
     (set_attr "type" "nop")])
  
! ;; Vector bits common to IWMMXT, Neon and MVE
  (include "vec-common.md")
- ;; Load the Intel Wireless Multimedia Extension patterns
- (include "iwmmxt.md")
  ;; Load the VFP co-processor patterns
  (include "vfp.md")
  ;; Thumb-1 patterns
--- 13104,13111 ----
    [(set_attr "conds" "unconditional")
     (set_attr "type" "nop")])
  
! ;; Vector bits common to Neon and MVE
  (include "vec-common.md")
  ;; Load the VFP co-processor patterns
  (include "vfp.md")
  ;; Thumb-1 patterns
diff -Nrcpad gcc-16-20250511/gcc/config/arm/arm.opt gcc-16-20250518/gcc/config/arm/arm.opt
*** gcc-16-20250511/gcc/config/arm/arm.opt	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/arm.opt	Sun May 18 22:32:07 2025
*************** EnumValue
*** 58,66 ****
  Enum(arm_abi_type) String(aapcs) Value(ARM_ABI_AAPCS)
  
  EnumValue
- Enum(arm_abi_type) String(iwmmxt) Value(ARM_ABI_IWMMXT)
- 
- EnumValue
  Enum(arm_abi_type) String(aapcs-linux) Value(ARM_ABI_AAPCS_LINUX)
  
  mabort-on-noreturn
--- 58,63 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/constraints.md gcc-16-20250518/gcc/config/arm/constraints.md
*** gcc-16-20250511/gcc/config/arm/constraints.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/constraints.md	Sun May 18 22:32:07 2025
***************
*** 19,29 ****
  ;; <http://www.gnu.org/licenses/>.
  
  ;; The following register constraints have been used:
! ;; - in ARM/Thumb-2 state: t, w, x, y, z
  ;; - in Thumb state: h, b
  ;; - in both states: l, c, k, q, Cs, Ts, US
  ;; In ARM state, 'l' is an alias for 'r'
  ;; 'f' and 'v' were previously used for FPA and MAVERICK registers.
  
  ;; The following normal constraints have been used:
  ;; in ARM/Thumb-2 state: G, I, j, J, K, L, M
--- 19,30 ----
  ;; <http://www.gnu.org/licenses/>.
  
  ;; The following register constraints have been used:
! ;; - in ARM/Thumb-2 state: t, w, x
  ;; - in Thumb state: h, b
  ;; - in both states: l, c, k, q, Cs, Ts, US
  ;; In ARM state, 'l' is an alias for 'r'
  ;; 'f' and 'v' were previously used for FPA and MAVERICK registers.
+ ;; 'y' and 'z' were previously used for iWMMX registers (removed after gcc-15)
  
  ;; The following normal constraints have been used:
  ;; in ARM/Thumb-2 state: G, I, j, J, K, L, M
***************
*** 39,45 ****
  ;; in all states: Pg
  
  ;; The following memory constraints have been used:
! ;; in ARM/Thumb-2 state: Uh, Ut, Uv, Uy, Un, Um, Us, Uo, Up, Uf, Ux, Ul, Uz
  ;; in ARM state: Uq
  ;; in Thumb state: Uu, Uw
  ;; in all states: Q
--- 40,46 ----
  ;; in all states: Pg
  
  ;; The following memory constraints have been used:
! ;; in ARM/Thumb-2 state: Uh, Ut, Uv, Un, Um, Us, Uo, Up, Uf, Ux, Ul, Uz
  ;; in ARM state: Uq
  ;; in Thumb state: Uu, Uw
  ;; in all states: Q
***************
*** 112,124 ****
  (define_register_constraint "x" "TARGET_32BIT ? VFP_D0_D7_REGS : NO_REGS"
   "The VFP registers @code{d0}-@code{d7}.")
  
- (define_register_constraint "y" "TARGET_REALLY_IWMMXT ? IWMMXT_REGS : NO_REGS"
-  "The Intel iWMMX co-processor registers.")
- 
- (define_register_constraint "z"
-  "TARGET_REALLY_IWMMXT ? IWMMXT_GR_REGS : NO_REGS"
-  "The Intel iWMMX GR registers.")
- 
  (define_register_constraint "l" "TARGET_THUMB ? LO_REGS : GENERAL_REGS"
   "In Thumb state the core registers @code{r0}-@code{r7}.")
  
--- 113,118 ----
***************
*** 478,489 ****
                     ? arm_coproc_mem_operand_no_writeback (op)
                     : neon_vector_mem_operand (op, 2, true)")))
  
- (define_memory_constraint "Uy"
-  "@internal
-   In ARM/Thumb-2 state a valid iWMMX load/store address."
-  (and (match_code "mem")
-       (match_test "TARGET_32BIT && arm_coproc_mem_operand (op, TRUE)")))
- 
  (define_memory_constraint "Un"
   "@internal
    In ARM/Thumb-2 state a valid address for Neon doubleword vector
--- 472,477 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/iterators.md gcc-16-20250518/gcc/config/arm/iterators.md
*** gcc-16-20250511/gcc/config/arm/iterators.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/iterators.md	Sun May 18 22:32:07 2025
***************
*** 59,88 ****
  ;; A list of modes which the VFP unit can handle
  (define_mode_iterator SDF [(SF "") (DF "TARGET_VFP_DOUBLE")])
  
- ;; Integer element sizes implemented by IWMMXT.
- (define_mode_iterator VMMX [V2SI V4HI V8QI])
- 
- (define_mode_iterator VMMX2 [V4HI V2SI])
- 
  ;; Integer element sizes for shifts.
  (define_mode_iterator VSHFT [V4HI V2SI DI])
  
! ;; Integer and float modes supported by Neon and IWMMXT.
  (define_mode_iterator VALL [V2DI V2SI V4HI V8QI V2SF V4SI V8HI V16QI V4SF])
  
! ;; Integer and float modes supported by Neon, IWMMXT and MVE.
  (define_mode_iterator VNIM1 [V16QI V8HI V4SI V4SF V2DI])
  
! ;; Integer and float modes supported by Neon and IWMMXT but not MVE.
  (define_mode_iterator VNINOTM1 [V2SI V4HI V8QI V2SF])
  
! ;; Integer and float modes supported by Neon and IWMMXT, except V2DI.
  (define_mode_iterator VALLW [V2SI V4HI V8QI V2SF V4SI V8HI V16QI V4SF])
  
! ;; Integer modes supported by Neon and IWMMXT
  (define_mode_iterator VINT [V2DI V2SI V4HI V8QI V4SI V8HI V16QI])
  
! ;; Integer modes supported by Neon and IWMMXT, except V2DI
  (define_mode_iterator VINTW [V2SI V4HI V8QI V4SI V8HI V16QI])
  
  ;; Double-width vector modes, on which we support arithmetic (no HF!)
--- 59,83 ----
  ;; A list of modes which the VFP unit can handle
  (define_mode_iterator SDF [(SF "") (DF "TARGET_VFP_DOUBLE")])
  
  ;; Integer element sizes for shifts.
  (define_mode_iterator VSHFT [V4HI V2SI DI])
  
! ;; Integer and float modes supported by Neon.
  (define_mode_iterator VALL [V2DI V2SI V4HI V8QI V2SF V4SI V8HI V16QI V4SF])
  
! ;; Integer and float modes supported by Neon and MVE.
  (define_mode_iterator VNIM1 [V16QI V8HI V4SI V4SF V2DI])
  
! ;; Integer and float modes supported by Neon but not MVE.
  (define_mode_iterator VNINOTM1 [V2SI V4HI V8QI V2SF])
  
! ;; Integer and float modes supported by Neon, except V2DI.
  (define_mode_iterator VALLW [V2SI V4HI V8QI V2SF V4SI V8HI V16QI V4SF])
  
! ;; Integer modes supported by Neon
  (define_mode_iterator VINT [V2DI V2SI V4HI V8QI V4SI V8HI V16QI])
  
! ;; Integer modes supported by Neon, except V2DI
  (define_mode_iterator VINTW [V2SI V4HI V8QI V4SI V8HI V16QI])
  
  ;; Double-width vector modes, on which we support arithmetic (no HF!)
***************
*** 1644,1652 ****
  ;; distinguishes between 16-bit Thumb and 32-bit Thumb/ARM.
  (define_mode_attr arch [(CC_Z "32") (SI "t1")])
  
- ;; Determine element size suffix from vector mode.
- (define_mode_attr MMX_char [(V8QI "b") (V4HI "h") (V2SI "w") (DI "d")])
- 
  ;; vtbl<n> suffix for NEON vector modes.
  (define_mode_attr VTAB_n [(TI "2") (EI "3") (OI "4")])
  
--- 1639,1644 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/iwmmxt.md gcc-16-20250518/gcc/config/arm/iwmmxt.md
*** gcc-16-20250511/gcc/config/arm/iwmmxt.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/iwmmxt.md	Thu Jan  1 00:00:00 1970
***************
*** 1,1766 ****
- ;; Patterns for the Intel Wireless MMX technology architecture.
- ;; Copyright (C) 2003-2025 Free Software Foundation, Inc.
- ;; Contributed by Red Hat.
- 
- ;; 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/>.
- 
- ;; Register numbers. Need to sync with FIRST_IWMMXT_GR_REGNUM in arm.h
- (define_constants
-   [(WCGR0           96)
-    (WCGR1           97)
-    (WCGR2           98)
-    (WCGR3           99)
-   ]
- )
- 
- (define_insn "tbcstv8qi"
-   [(set (match_operand:V8QI                   0 "register_operand" "=y")
-         (vec_duplicate:V8QI (match_operand:QI 1 "s_register_operand" "r")))]
-   "TARGET_REALLY_IWMMXT"
-   "tbcstb%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tbcst")]
- )
- 
- (define_insn "tbcstv4hi"
-   [(set (match_operand:V4HI                   0 "register_operand" "=y")
-         (vec_duplicate:V4HI (match_operand:HI 1 "s_register_operand" "r")))]
-   "TARGET_REALLY_IWMMXT"
-   "tbcsth%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tbcst")]
- )
- 
- (define_insn "tbcstv2si"
-   [(set (match_operand:V2SI                   0 "register_operand" "=y")
-         (vec_duplicate:V2SI (match_operand:SI 1 "s_register_operand" "r")))]
-   "TARGET_REALLY_IWMMXT"
-   "tbcstw%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tbcst")]
- )
- 
- (define_insn "iwmmxt_iordi3"
-   [(set (match_operand:DI         0 "register_operand" "=y")
-         (ior:DI (match_operand:DI 1 "register_operand" "%y")
- 		(match_operand:DI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wor%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "length" "4")
-    (set_attr "type" "wmmx_wor")]
- )
- 
- (define_insn "iwmmxt_xordi3"
-   [(set (match_operand:DI         0 "register_operand" "=y")
-         (xor:DI (match_operand:DI 1 "register_operand" "%y")
- 		(match_operand:DI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wxor%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "length" "4")
-    (set_attr "type" "wmmx_wxor")]
- )
- 
- (define_insn "iwmmxt_anddi3"
-   [(set (match_operand:DI         0 "register_operand" "=y")
-         (and:DI (match_operand:DI 1 "register_operand" "%y")
- 		(match_operand:DI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wand%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "length" "4")
-    (set_attr "type" "wmmx_wand")]
- )
- 
- (define_insn "iwmmxt_nanddi3"
-   [(set (match_operand:DI                 0 "register_operand" "=y")
-         (and:DI (match_operand:DI         1 "register_operand"  "y")
- 		(not:DI (match_operand:DI 2 "register_operand"  "y"))))]
-   "TARGET_REALLY_IWMMXT"
-   "wandn%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wandn")]
- )
- 
- (define_insn "*iwmmxt_arm_movdi"
-   [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m,y,y,r, y,Uy,*w, r,*w,*w, *Uv")
-         (match_operand:DI 1 "di_operand"              "rDa,Db,Dc,mi,r,y,r,y,Uy,y,  r,*w,*w,*Uvi,*w"))]
-   "TARGET_REALLY_IWMMXT
-    && (   register_operand (operands[0], DImode)
-        || register_operand (operands[1], DImode))"
-   "*
-   switch (which_alternative)
-     {
-     case 0:
-     case 1:
-     case 2:
-       return \"#\";
-     case 3: case 4:
-       return output_move_double (operands, true, NULL);
-     case 5:
-       return \"wmov%?\\t%0,%1\";
-     case 6:
-       return \"tmcrr%?\\t%0,%Q1,%R1\";
-     case 7:
-       return \"tmrrc%?\\t%Q0,%R0,%1\";
-     case 8:
-       return \"wldrd%?\\t%0,%1\";
-     case 9:
-       return \"wstrd%?\\t%1,%0\";
-     case 10:
-       return \"fmdrr%?\\t%P0, %Q1, %R1\\t%@ int\";
-     case 11:
-       return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\";
-     case 12:
-       if (TARGET_VFP_SINGLE)
- 	return \"fcpys%?\\t%0, %1\\t%@ int\;fcpys%?\\t%p0, %p1\\t%@ int\";
-       else
- 	return \"fcpyd%?\\t%P0, %P1\\t%@ int\";
-     case 13: case 14:
-       return output_move_vfp (operands);
-     default:
-       gcc_unreachable ();
-     }
-   "
-   [(set (attr "length") (cond [(eq_attr "alternative" "0,3,4") (const_int 8)
-                               (eq_attr "alternative" "1") (const_int 12)
-                               (eq_attr "alternative" "2") (const_int 16)
-                               (eq_attr "alternative" "12")
-                                (if_then_else
-                                  (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1))
-                                  (const_int 8)
-                                  (const_int 4))]
-                               (const_int 4)))
-    (set_attr "type" "*,*,*,load_8,store_8,*,*,*,*,*,f_mcrr,f_mrrc,\
-                      ffarithd,f_loadd,f_stored")
-    (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,*,*,*,*,*,*,1020,*")
-    (set_attr "arm_neg_pool_range" "*,*,*,1008,*,*,*,*,*,*,*,*,*,1008,*")]
- )
- 
- (define_insn "*iwmmxt_movsi_insn"
-   [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk, m,z,r,?z,?Uy,*t, r,*t,*t  ,*Uv")
- 	(match_operand:SI 1 "general_operand"      " rk,I,K,j,mi,rk,r,z,Uy,  z, r,*t,*t,*Uvi, *t"))]
-   "TARGET_REALLY_IWMMXT
-    && (   register_operand (operands[0], SImode)
-        || register_operand (operands[1], SImode))"
-   "*
-    switch (which_alternative)
-      {
-      case 0: return \"mov\\t%0, %1\";
-      case 1: return \"mov\\t%0, %1\";
-      case 2: return \"mvn\\t%0, #%B1\";
-      case 3: return \"movw\\t%0, %1\";
-      case 4: return \"ldr\\t%0, %1\";
-      case 5: return \"str\\t%1, %0\";
-      case 6: return \"tmcr\\t%0, %1\";
-      case 7: return \"tmrc\\t%0, %1\";
-      case 8: return arm_output_load_gr (operands);
-      case 9: return \"wstrw\\t%1, %0\";
-      case 10:return \"fmsr\\t%0, %1\";
-      case 11:return \"fmrs\\t%0, %1\";
-      case 12:return \"fcpys\\t%0, %1\\t%@ int\";
-      case 13: case 14:
-        return output_move_vfp (operands);
-      default:
-        gcc_unreachable ();
-      }"
-   [(set_attr "type"           "*,*,*,*,load_4,store_4,*,*,*,*,f_mcr,f_mrc,\
-                                fmov,f_loads,f_stores")
-    (set_attr "length"         "*,*,*,*,*,        *,*,*,  16,     *,*,*,*,*,*")
-    (set_attr "pool_range"     "*,*,*,*,4096,     *,*,*,1024,     *,*,*,*,1020,*")
-    (set_attr "neg_pool_range" "*,*,*,*,4084,     *,*,*,   *,  1012,*,*,*,1008,*")
-    ;; Note - the "predicable" attribute is not allowed to have alternatives.
-    ;; Since the wSTRw wCx instruction is not predicable, we cannot support
-    ;; predicating any of the alternatives in this template.  Instead,
-    ;; we do the predication ourselves, in cond_iwmmxt_movsi_insn.
-    (set_attr "predicable"     "no")
-    ;; Also - we have to pretend that these insns clobber the condition code
-    ;; bits as otherwise arm_final_prescan_insn() will try to conditionalize
-    ;; them.
-    (set_attr "conds" "clob")]
- )
- 
- ;; Because iwmmxt_movsi_insn is not predicable, we provide the
- ;; cond_exec version explicitly, with appropriate constraints.
- 
- (define_insn "*cond_iwmmxt_movsi_insn"
-   [(cond_exec
-      (match_operator 2 "arm_comparison_operator"
-       [(match_operand 3 "cc_register" "")
-       (const_int 0)])
-      (set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r, m,z,r")
- 	  (match_operand:SI 1 "general_operand"      "rI,K,mi,r,r,z")))]
-   "TARGET_REALLY_IWMMXT
-    && (   register_operand (operands[0], SImode)
-        || register_operand (operands[1], SImode))"
-   "*
-    switch (which_alternative)
-    {
-    case 0: return \"mov%?\\t%0, %1\";
-    case 1: return \"mvn%?\\t%0, #%B1\";
-    case 2: return \"ldr%?\\t%0, %1\";
-    case 3: return \"str%?\\t%1, %0\";
-    case 4: return \"tmcr%?\\t%0, %1\";
-    default: return \"tmrc%?\\t%0, %1\";
-   }"
-   [(set_attr "type"           "*,*,load_4,store_4,*,*")
-    (set_attr "pool_range"     "*,*,4096,     *,*,*")
-    (set_attr "neg_pool_range" "*,*,4084,     *,*,*")]
- )
- 
- (define_insn "mov<mode>_internal"
-   [(set (match_operand:VMMX 0 "nonimmediate_operand" "=y,m,y,?r,?y,?r,?r,?m")
- 	(match_operand:VMMX 1 "general_operand"       "y,y,mi,y,r,r,mi,r"))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-    switch (which_alternative)
-    {
-    case 0: return \"wmov%?\\t%0, %1\";
-    case 1: return \"wstrd%?\\t%1, %0\";
-    case 2: return \"wldrd%?\\t%0, %1\";
-    case 3: return \"tmrrc%?\\t%Q0, %R0, %1\";
-    case 4: return \"tmcrr%?\\t%0, %Q1, %R1\";
-    case 5: return \"#\";
-    default: return output_move_double (operands, true, NULL);
-    }"
-   [(set_attr "predicable" "yes")
-    (set_attr "length"         "4,     4,   4,4,4,8,   8,8")
-    (set_attr "type"           "wmmx_wmov,wmmx_wstr,wmmx_wldr,wmmx_tmrrc,wmmx_tmcrr,*,load_4,store_4")
-    (set_attr "pool_range"     "*,     *, 256,*,*,*, 256,*")
-    (set_attr "neg_pool_range" "*,     *, 244,*,*,*, 244,*")]
- )
- 
- (define_expand "iwmmxt_setwcgr0"
-   [(set (reg:SI WCGR0)
- 	(match_operand:SI 0 "register_operand"))]
-   "TARGET_REALLY_IWMMXT"
-   {}
- )
- 
- (define_expand "iwmmxt_setwcgr1"
-   [(set (reg:SI WCGR1)
- 	(match_operand:SI 0 "register_operand"))]
-   "TARGET_REALLY_IWMMXT"
-   {}
- )
- 
- (define_expand "iwmmxt_setwcgr2"
-   [(set (reg:SI WCGR2)
- 	(match_operand:SI 0 "register_operand"))]
-   "TARGET_REALLY_IWMMXT"
-   {}
- )
- 
- (define_expand "iwmmxt_setwcgr3"
-   [(set (reg:SI WCGR3)
- 	(match_operand:SI 0 "register_operand"))]
-   "TARGET_REALLY_IWMMXT"
-   {}
- )
- 
- (define_expand "iwmmxt_getwcgr0"
-   [(set (match_operand:SI 0 "register_operand")
-         (reg:SI WCGR0))]
-   "TARGET_REALLY_IWMMXT"
-   {}
- )
- 
- (define_expand "iwmmxt_getwcgr1"
-   [(set (match_operand:SI 0 "register_operand")
-         (reg:SI WCGR1))]
-   "TARGET_REALLY_IWMMXT"
-   {}
- )
- 
- (define_expand "iwmmxt_getwcgr2"
-   [(set (match_operand:SI 0 "register_operand")
-         (reg:SI WCGR2))]
-   "TARGET_REALLY_IWMMXT"
-   {}
- )
- 
- (define_expand "iwmmxt_getwcgr3"
-   [(set (match_operand:SI 0 "register_operand")
-         (reg:SI WCGR3))]
-   "TARGET_REALLY_IWMMXT"
-   {}
- )
- 
- (define_insn "*and<mode>3_iwmmxt"
-   [(set (match_operand:VMMX           0 "register_operand" "=y")
-         (and:VMMX (match_operand:VMMX 1 "register_operand"  "y")
- 	          (match_operand:VMMX 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wand\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wand")]
- )
- 
- (define_insn "*ior<mode>3_iwmmxt"
-   [(set (match_operand:VMMX           0 "register_operand" "=y")
-         (ior:VMMX (match_operand:VMMX 1 "register_operand"  "y")
- 	          (match_operand:VMMX 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wor\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wor")]
- )
- 
- (define_insn "*xor<mode>3_iwmmxt"
-   [(set (match_operand:VMMX           0 "register_operand" "=y")
-         (xor:VMMX (match_operand:VMMX 1 "register_operand"  "y")
- 	          (match_operand:VMMX 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wxor\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wxor")]
- )
- 
- 
- ;; Vector add/subtract
- 
- (define_insn "*add<mode>3_iwmmxt"
-   [(set (match_operand:VMMX            0 "register_operand" "=y")
-         (plus:VMMX (match_operand:VMMX 1 "register_operand" "y")
- 	           (match_operand:VMMX 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wadd<MMX_char>%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wadd")]
- )
- 
- (define_insn "ssaddv8qi3"
-   [(set (match_operand:V8QI               0 "register_operand" "=y")
-         (ss_plus:V8QI (match_operand:V8QI 1 "register_operand"  "y")
- 		      (match_operand:V8QI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "waddbss%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wadd")]
- )
- 
- (define_insn "ssaddv4hi3"
-   [(set (match_operand:V4HI               0 "register_operand" "=y")
-         (ss_plus:V4HI (match_operand:V4HI 1 "register_operand"  "y")
- 		      (match_operand:V4HI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "waddhss%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wadd")]
- )
- 
- (define_insn "ssaddv2si3"
-   [(set (match_operand:V2SI               0 "register_operand" "=y")
-         (ss_plus:V2SI (match_operand:V2SI 1 "register_operand"  "y")
- 		      (match_operand:V2SI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "waddwss%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wadd")]
- )
- 
- (define_insn "usaddv8qi3"
-   [(set (match_operand:V8QI               0 "register_operand" "=y")
-         (us_plus:V8QI (match_operand:V8QI 1 "register_operand"  "y")
- 		      (match_operand:V8QI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "waddbus%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wadd")]
- )
- 
- (define_insn "usaddv4hi3"
-   [(set (match_operand:V4HI               0 "register_operand" "=y")
-         (us_plus:V4HI (match_operand:V4HI 1 "register_operand"  "y")
- 		      (match_operand:V4HI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "waddhus%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wadd")]
- )
- 
- (define_insn "usaddv2si3"
-   [(set (match_operand:V2SI               0 "register_operand" "=y")
-         (us_plus:V2SI (match_operand:V2SI 1 "register_operand"  "y")
- 		      (match_operand:V2SI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "waddwus%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wadd")]
- )
- 
- (define_insn "*sub<mode>3_iwmmxt"
-   [(set (match_operand:VMMX             0 "register_operand" "=y")
-         (minus:VMMX (match_operand:VMMX 1 "register_operand"  "y")
- 		    (match_operand:VMMX 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wsub<MMX_char>%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsub")]
- )
- 
- (define_insn "sssubv8qi3"
-   [(set (match_operand:V8QI                0 "register_operand" "=y")
-         (ss_minus:V8QI (match_operand:V8QI 1 "register_operand"  "y")
- 		       (match_operand:V8QI 2 "register_operand"  "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wsubbss%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsub")]
- )
- 
- (define_insn "sssubv4hi3"
-   [(set (match_operand:V4HI                0 "register_operand" "=y")
-         (ss_minus:V4HI (match_operand:V4HI 1 "register_operand" "y")
- 		       (match_operand:V4HI 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wsubhss%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsub")]
- )
- 
- (define_insn "sssubv2si3"
-   [(set (match_operand:V2SI                0 "register_operand" "=y")
-         (ss_minus:V2SI (match_operand:V2SI 1 "register_operand" "y")
- 		       (match_operand:V2SI 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wsubwss%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsub")]
- )
- 
- (define_insn "ussubv8qi3"
-   [(set (match_operand:V8QI                0 "register_operand" "=y")
-         (us_minus:V8QI (match_operand:V8QI 1 "register_operand" "y")
- 		       (match_operand:V8QI 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wsubbus%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsub")]
- )
- 
- (define_insn "ussubv4hi3"
-   [(set (match_operand:V4HI                0 "register_operand" "=y")
-         (us_minus:V4HI (match_operand:V4HI 1 "register_operand" "y")
- 		       (match_operand:V4HI 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wsubhus%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsub")]
- )
- 
- (define_insn "ussubv2si3"
-   [(set (match_operand:V2SI                0 "register_operand" "=y")
-         (us_minus:V2SI (match_operand:V2SI 1 "register_operand" "y")
- 		       (match_operand:V2SI 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wsubwus%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsub")]
- )
- 
- (define_insn "*mulv4hi3_iwmmxt"
-   [(set (match_operand:V4HI            0 "register_operand" "=y")
-         (mult:V4HI (match_operand:V4HI 1 "register_operand" "y")
- 		   (match_operand:V4HI 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulul%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmul")]
- )
- 
- (define_insn "smulv4hi3_highpart"
-   [(set (match_operand:V4HI 0 "register_operand" "=y")
- 	  (truncate:V4HI
- 	    (lshiftrt:V4SI
- 	      (mult:V4SI (sign_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	                 (sign_extend:V4SI (match_operand:V4HI 2 "register_operand" "y")))
- 	      (const_int 16))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulsm%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmul")]
- )
- 
- (define_insn "umulv4hi3_highpart"
-   [(set (match_operand:V4HI 0 "register_operand" "=y")
- 	  (truncate:V4HI
- 	    (lshiftrt:V4SI
- 	      (mult:V4SI (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	                 (zero_extend:V4SI (match_operand:V4HI 2 "register_operand" "y")))
- 	      (const_int 16))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulum%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmul")]
- )
- 
- (define_insn "iwmmxt_wmacs"
-   [(set (match_operand:DI               0 "register_operand" "=y")
- 	(unspec:DI [(match_operand:DI   1 "register_operand" "0")
- 	            (match_operand:V4HI 2 "register_operand" "y")
- 	            (match_operand:V4HI 3 "register_operand" "y")] UNSPEC_WMACS))]
-   "TARGET_REALLY_IWMMXT"
-   "wmacs%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmac")]
- )
- 
- (define_insn "iwmmxt_wmacsz"
-   [(set (match_operand:DI               0 "register_operand" "=y")
- 	(unspec:DI [(match_operand:V4HI 1 "register_operand" "y")
- 	            (match_operand:V4HI 2 "register_operand" "y")] UNSPEC_WMACSZ))]
-   "TARGET_REALLY_IWMMXT"
-   "wmacsz%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmac")]
- )
- 
- (define_insn "iwmmxt_wmacu"
-   [(set (match_operand:DI               0 "register_operand" "=y")
- 	(unspec:DI [(match_operand:DI   1 "register_operand" "0")
- 	            (match_operand:V4HI 2 "register_operand" "y")
- 	            (match_operand:V4HI 3 "register_operand" "y")] UNSPEC_WMACU))]
-   "TARGET_REALLY_IWMMXT"
-   "wmacu%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmac")]
- )
- 
- (define_insn "iwmmxt_wmacuz"
-   [(set (match_operand:DI               0 "register_operand" "=y")
- 	(unspec:DI [(match_operand:V4HI 1 "register_operand" "y")
- 	            (match_operand:V4HI 2 "register_operand" "y")] UNSPEC_WMACUZ))]
-   "TARGET_REALLY_IWMMXT"
-   "wmacuz%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmac")]
- )
- 
- ;; Same as xordi3, but don't show input operands so that we don't think
- ;; they are live.
- (define_insn "iwmmxt_clrdi"
-   [(set (match_operand:DI 0 "register_operand" "=y")
-         (unspec:DI [(const_int 0)] UNSPEC_CLRDI))]
-   "TARGET_REALLY_IWMMXT"
-   "wxor%?\\t%0, %0, %0"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wxor")]
- )
- 
- ;; Seems like cse likes to generate these, so we have to support them.
- 
- (define_insn "iwmmxt_clrv8qi"
-   [(set (match_operand:V8QI 0 "s_register_operand" "=y")
-         (const_vector:V8QI [(const_int 0) (const_int 0)
- 			    (const_int 0) (const_int 0)
- 			    (const_int 0) (const_int 0)
- 			    (const_int 0) (const_int 0)]))]
-   "TARGET_REALLY_IWMMXT"
-   "wxor%?\\t%0, %0, %0"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wxor")]
- )
- 
- (define_insn "iwmmxt_clrv4hi"
-   [(set (match_operand:V4HI 0 "s_register_operand" "=y")
-         (const_vector:V4HI [(const_int 0) (const_int 0)
- 			    (const_int 0) (const_int 0)]))]
-   "TARGET_REALLY_IWMMXT"
-   "wxor%?\\t%0, %0, %0"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wxor")]
- )
- 
- (define_insn "iwmmxt_clrv2si"
-   [(set (match_operand:V2SI 0 "register_operand" "=y")
-         (const_vector:V2SI [(const_int 0) (const_int 0)]))]
-   "TARGET_REALLY_IWMMXT"
-   "wxor%?\\t%0, %0, %0"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wxor")]
- )
- 
- ;; Unsigned averages/sum of absolute differences
- 
- (define_insn "iwmmxt_uavgrndv8qi3"
-   [(set (match_operand:V8QI                                    0 "register_operand" "=y")
-         (truncate:V8QI
- 	  (lshiftrt:V8HI
- 	    (plus:V8HI
- 	      (plus:V8HI (zero_extend:V8HI (match_operand:V8QI 1 "register_operand" "y"))
- 	                 (zero_extend:V8HI (match_operand:V8QI 2 "register_operand" "y")))
- 	      (const_vector:V8HI [(const_int 1)
- 	                          (const_int 1)
- 	                          (const_int 1)
- 	                          (const_int 1)
- 	                          (const_int 1)
- 	                          (const_int 1)
- 	                          (const_int 1)
- 	                          (const_int 1)]))
- 	    (const_int 1))))]
-   "TARGET_REALLY_IWMMXT"
-   "wavg2br%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wavg2")]
- )
- 
- (define_insn "iwmmxt_uavgrndv4hi3"
-   [(set (match_operand:V4HI                                    0 "register_operand" "=y")
-         (truncate:V4HI
- 	  (lshiftrt:V4SI
-             (plus:V4SI
- 	      (plus:V4SI (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	                 (zero_extend:V4SI (match_operand:V4HI 2 "register_operand" "y")))
- 	      (const_vector:V4SI [(const_int 1)
- 	                          (const_int 1)
- 	                          (const_int 1)
- 	                          (const_int 1)]))
- 	    (const_int 1))))]
-   "TARGET_REALLY_IWMMXT"
-   "wavg2hr%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wavg2")]
- )
- 
- (define_insn "iwmmxt_uavgv8qi3"
-   [(set (match_operand:V8QI                                  0 "register_operand" "=y")
-         (truncate:V8QI
- 	  (lshiftrt:V8HI
- 	    (plus:V8HI (zero_extend:V8HI (match_operand:V8QI 1 "register_operand" "y"))
- 	               (zero_extend:V8HI (match_operand:V8QI 2 "register_operand" "y")))
- 	    (const_int 1))))]
-   "TARGET_REALLY_IWMMXT"
-   "wavg2b%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wavg2")]
- )
- 
- (define_insn "iwmmxt_uavgv4hi3"
-   [(set (match_operand:V4HI                                  0 "register_operand" "=y")
-         (truncate:V4HI
- 	  (lshiftrt:V4SI
- 	    (plus:V4SI (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	               (zero_extend:V4SI (match_operand:V4HI 2 "register_operand" "y")))
- 	    (const_int 1))))]
-   "TARGET_REALLY_IWMMXT"
-   "wavg2h%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wavg2")]
- )
- 
- ;; Insert/extract/shuffle
- 
- (define_insn "iwmmxt_tinsrb"
-   [(set (match_operand:V8QI                0 "register_operand" "=y")
-         (vec_merge:V8QI
- 	  (vec_duplicate:V8QI
- 	    (truncate:QI (match_operand:SI 2 "nonimmediate_operand" "r")))
- 	  (match_operand:V8QI              1 "register_operand"     "0")
- 	  (match_operand:SI                3 "immediate_operand"    "i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-    {
-      return arm_output_iwmmxt_tinsr (operands);
-    }
-    "
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tinsr")]
- )
- 
- (define_insn "iwmmxt_tinsrh"
-   [(set (match_operand:V4HI                0 "register_operand"    "=y")
-         (vec_merge:V4HI
-           (vec_duplicate:V4HI
-             (truncate:HI (match_operand:SI 2 "nonimmediate_operand" "r")))
- 	  (match_operand:V4HI              1 "register_operand"     "0")
- 	  (match_operand:SI                3 "immediate_operand"    "i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-    {
-      return arm_output_iwmmxt_tinsr (operands);
-    }
-    "
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tinsr")]
- )
- 
- (define_insn "iwmmxt_tinsrw"
-   [(set (match_operand:V2SI   0 "register_operand"    "=y")
-         (vec_merge:V2SI
-           (vec_duplicate:V2SI
-             (match_operand:SI 2 "nonimmediate_operand" "r"))
-           (match_operand:V2SI 1 "register_operand"     "0")
-           (match_operand:SI   3 "immediate_operand"    "i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-    {
-      return arm_output_iwmmxt_tinsr (operands);
-    }
-    "
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tinsr")]
- )
- 
- (define_insn "iwmmxt_textrmub"
-   [(set (match_operand:SI                                   0 "register_operand" "=r")
-         (zero_extend:SI (vec_select:QI (match_operand:V8QI  1 "register_operand" "y")
- 		                       (parallel
- 				         [(match_operand:SI 2 "immediate_operand" "i")]))))]
-   "TARGET_REALLY_IWMMXT"
-   "textrmub%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_textrm")]
- )
- 
- (define_insn "iwmmxt_textrmsb"
-   [(set (match_operand:SI                                   0 "register_operand" "=r")
-         (sign_extend:SI (vec_select:QI (match_operand:V8QI  1 "register_operand" "y")
- 				       (parallel
- 				         [(match_operand:SI 2 "immediate_operand" "i")]))))]
-   "TARGET_REALLY_IWMMXT"
-   "textrmsb%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_textrm")]
- )
- 
- (define_insn "iwmmxt_textrmuh"
-   [(set (match_operand:SI                                   0 "register_operand" "=r")
-         (zero_extend:SI (vec_select:HI (match_operand:V4HI  1 "register_operand" "y")
- 				       (parallel
- 				         [(match_operand:SI 2 "immediate_operand" "i")]))))]
-   "TARGET_REALLY_IWMMXT"
-   "textrmuh%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_textrm")]
- )
- 
- (define_insn "iwmmxt_textrmsh"
-   [(set (match_operand:SI                                   0 "register_operand" "=r")
-         (sign_extend:SI (vec_select:HI (match_operand:V4HI  1 "register_operand" "y")
- 				       (parallel
- 				         [(match_operand:SI 2 "immediate_operand" "i")]))))]
-   "TARGET_REALLY_IWMMXT"
-   "textrmsh%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_textrm")]
- )
- 
- ;; There are signed/unsigned variants of this instruction, but they are
- ;; pointless.
- (define_insn "iwmmxt_textrmw"
-   [(set (match_operand:SI                           0 "register_operand" "=r")
-         (vec_select:SI (match_operand:V2SI          1 "register_operand" "y")
- 		       (parallel [(match_operand:SI 2 "immediate_operand" "i")])))]
-   "TARGET_REALLY_IWMMXT"
-   "textrmsw%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_textrm")]
- )
- 
- (define_insn "iwmmxt_wshufh"
-   [(set (match_operand:V4HI               0 "register_operand" "=y")
-         (unspec:V4HI [(match_operand:V4HI 1 "register_operand" "y")
- 		      (match_operand:SI   2 "immediate_operand" "i")] UNSPEC_WSHUFH))]
-   "TARGET_REALLY_IWMMXT"
-   "wshufh%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wshufh")]
- )
- 
- ;; Mask-generating comparisons
- ;;
- ;; Note - you cannot use patterns like these here:
- ;;
- ;;   (set (match:<vector>) (<comparator>:<vector> (match:<vector>) (match:<vector>)))
- ;;
- ;; Because GCC will assume that the truth value (1 or 0) is installed
- ;; into the entire destination vector, (with the '1' going into the least
- ;; significant element of the vector).  This is not how these instructions
- ;; behave.
- 
- (define_insn "eqv8qi3"
-   [(set (match_operand:V8QI                        0 "register_operand" "=y")
- 	(unspec_volatile:V8QI [(match_operand:V8QI 1 "register_operand"  "y")
- 	                       (match_operand:V8QI 2 "register_operand"  "y")]
- 	                      VUNSPEC_WCMP_EQ))]
-   "TARGET_REALLY_IWMMXT"
-   "wcmpeqb%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wcmpeq")]
- )
- 
- (define_insn "eqv4hi3"
-   [(set (match_operand:V4HI                        0 "register_operand" "=y")
- 	(unspec_volatile:V4HI [(match_operand:V4HI 1 "register_operand"  "y")
- 		               (match_operand:V4HI 2 "register_operand"  "y")]
- 	                       VUNSPEC_WCMP_EQ))]
-   "TARGET_REALLY_IWMMXT"
-   "wcmpeqh%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wcmpeq")]
- )
- 
- (define_insn "eqv2si3"
-   [(set (match_operand:V2SI    0 "register_operand" "=y")
- 	(unspec_volatile:V2SI
- 	  [(match_operand:V2SI 1 "register_operand"  "y")
- 	   (match_operand:V2SI 2 "register_operand"  "y")]
-            VUNSPEC_WCMP_EQ))]
-   "TARGET_REALLY_IWMMXT"
-   "wcmpeqw%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wcmpeq")]
- )
- 
- (define_insn "gtuv8qi3"
-   [(set (match_operand:V8QI                        0 "register_operand" "=y")
- 	(unspec_volatile:V8QI [(match_operand:V8QI 1 "register_operand"  "y")
- 	                       (match_operand:V8QI 2 "register_operand"  "y")]
- 	                       VUNSPEC_WCMP_GTU))]
-   "TARGET_REALLY_IWMMXT"
-   "wcmpgtub%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wcmpgt")]
- )
- 
- (define_insn "gtuv4hi3"
-   [(set (match_operand:V4HI                        0 "register_operand" "=y")
-         (unspec_volatile:V4HI [(match_operand:V4HI 1 "register_operand"  "y")
-                                (match_operand:V4HI 2 "register_operand"  "y")]
-                                VUNSPEC_WCMP_GTU))]
-   "TARGET_REALLY_IWMMXT"
-   "wcmpgtuh%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wcmpgt")]
- )
- 
- (define_insn "gtuv2si3"
-   [(set (match_operand:V2SI                        0 "register_operand" "=y")
- 	(unspec_volatile:V2SI [(match_operand:V2SI 1 "register_operand"  "y")
- 	                       (match_operand:V2SI 2 "register_operand"  "y")]
- 	                       VUNSPEC_WCMP_GTU))]
-   "TARGET_REALLY_IWMMXT"
-   "wcmpgtuw%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wcmpgt")]
- )
- 
- (define_insn "gtv8qi3"
-   [(set (match_operand:V8QI                        0 "register_operand" "=y")
- 	(unspec_volatile:V8QI [(match_operand:V8QI 1 "register_operand"  "y")
- 	                       (match_operand:V8QI 2 "register_operand"  "y")]
- 	                       VUNSPEC_WCMP_GT))]
-   "TARGET_REALLY_IWMMXT"
-   "wcmpgtsb%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wcmpgt")]
- )
- 
- (define_insn "gtv4hi3"
-   [(set (match_operand:V4HI                        0 "register_operand" "=y")
- 	(unspec_volatile:V4HI [(match_operand:V4HI 1 "register_operand"  "y")
- 	                       (match_operand:V4HI 2 "register_operand"  "y")]
- 	                       VUNSPEC_WCMP_GT))]
-   "TARGET_REALLY_IWMMXT"
-   "wcmpgtsh%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wcmpgt")]
- )
- 
- (define_insn "gtv2si3"
-   [(set (match_operand:V2SI                        0 "register_operand" "=y")
- 	(unspec_volatile:V2SI [(match_operand:V2SI 1 "register_operand"  "y")
- 	                       (match_operand:V2SI 2 "register_operand"  "y")]
- 	                       VUNSPEC_WCMP_GT))]
-   "TARGET_REALLY_IWMMXT"
-   "wcmpgtsw%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wcmpgt")]
- )
- 
- ;; Max/min insns
- 
- (define_insn "*smax<mode>3_iwmmxt"
-   [(set (match_operand:VMMX            0 "register_operand" "=y")
-         (smax:VMMX (match_operand:VMMX 1 "register_operand" "y")
- 		   (match_operand:VMMX 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wmaxs<MMX_char>%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmax")]
- )
- 
- (define_insn "*umax<mode>3_iwmmxt"
-   [(set (match_operand:VMMX            0 "register_operand" "=y")
-         (umax:VMMX (match_operand:VMMX 1 "register_operand" "y")
- 		   (match_operand:VMMX 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wmaxu<MMX_char>%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmax")]
- )
- 
- (define_insn "*smin<mode>3_iwmmxt"
-   [(set (match_operand:VMMX            0 "register_operand" "=y")
-         (smin:VMMX (match_operand:VMMX 1 "register_operand" "y")
- 		   (match_operand:VMMX 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wmins<MMX_char>%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmin")]
- )
- 
- (define_insn "*umin<mode>3_iwmmxt"
-   [(set (match_operand:VMMX            0 "register_operand" "=y")
-         (umin:VMMX (match_operand:VMMX 1 "register_operand" "y")
- 		   (match_operand:VMMX 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wminu<MMX_char>%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmin")]
- )
- 
- ;; Pack/unpack insns.
- 
- (define_insn "iwmmxt_wpackhss"
-   [(set (match_operand:V8QI                     0 "register_operand" "=y")
- 	(vec_concat:V8QI
- 	  (ss_truncate:V4QI (match_operand:V4HI 1 "register_operand" "y"))
- 	  (ss_truncate:V4QI (match_operand:V4HI 2 "register_operand" "y"))))]
-   "TARGET_REALLY_IWMMXT"
-   "wpackhss%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wpack")]
- )
- 
- (define_insn "iwmmxt_wpackwss"
-   [(set (match_operand:V4HI                     0 "register_operand" "=y")
-         (vec_concat:V4HI
- 	  (ss_truncate:V2HI (match_operand:V2SI 1 "register_operand" "y"))
- 	  (ss_truncate:V2HI (match_operand:V2SI 2 "register_operand" "y"))))]
-   "TARGET_REALLY_IWMMXT"
-   "wpackwss%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wpack")]
- )
- 
- (define_insn "iwmmxt_wpackdss"
-   [(set (match_operand:V2SI                 0 "register_operand" "=y")
- 	(vec_concat:V2SI
- 	  (ss_truncate:SI (match_operand:DI 1 "register_operand" "y"))
- 	  (ss_truncate:SI (match_operand:DI 2 "register_operand" "y"))))]
-   "TARGET_REALLY_IWMMXT"
-   "wpackdss%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wpack")]
- )
- 
- (define_insn "iwmmxt_wpackhus"
-   [(set (match_operand:V8QI                     0 "register_operand" "=y")
- 	(vec_concat:V8QI
- 	  (us_truncate:V4QI (match_operand:V4HI 1 "register_operand" "y"))
- 	  (us_truncate:V4QI (match_operand:V4HI 2 "register_operand" "y"))))]
-   "TARGET_REALLY_IWMMXT"
-   "wpackhus%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wpack")]
- )
- 
- (define_insn "iwmmxt_wpackwus"
-   [(set (match_operand:V4HI                     0 "register_operand" "=y")
- 	(vec_concat:V4HI
- 	  (us_truncate:V2HI (match_operand:V2SI 1 "register_operand" "y"))
- 	  (us_truncate:V2HI (match_operand:V2SI 2 "register_operand" "y"))))]
-   "TARGET_REALLY_IWMMXT"
-   "wpackwus%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wpack")]
- )
- 
- (define_insn "iwmmxt_wpackdus"
-   [(set (match_operand:V2SI                 0 "register_operand" "=y")
- 	(vec_concat:V2SI
- 	  (us_truncate:SI (match_operand:DI 1 "register_operand" "y"))
- 	  (us_truncate:SI (match_operand:DI 2 "register_operand" "y"))))]
-   "TARGET_REALLY_IWMMXT"
-   "wpackdus%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wpack")]
- )
- 
- (define_insn "iwmmxt_wunpckihb"
-   [(set (match_operand:V8QI                                      0 "register_operand" "=y")
- 	(vec_merge:V8QI
- 	  (vec_select:V8QI (match_operand:V8QI 1 "register_operand" "y")
- 		           (parallel [(const_int 4)
- 			              (const_int 0)
- 			              (const_int 5)
- 			              (const_int 1)
- 			              (const_int 6)
- 			              (const_int 2)
- 			              (const_int 7)
- 			              (const_int 3)]))
-           (vec_select:V8QI (match_operand:V8QI 2 "register_operand" "y")
- 			   (parallel [(const_int 0)
- 			              (const_int 4)
- 			              (const_int 1)
- 			              (const_int 5)
- 			              (const_int 2)
- 			              (const_int 6)
- 			              (const_int 3)
- 			              (const_int 7)]))
-           (const_int 85)))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckihb%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckih")]
- )
- 
- (define_insn "iwmmxt_wunpckihh"
-   [(set (match_operand:V4HI                                      0 "register_operand" "=y")
- 	(vec_merge:V4HI
- 	  (vec_select:V4HI (match_operand:V4HI 1 "register_operand" "y")
- 		           (parallel [(const_int 2)
- 			              (const_int 0)
- 			              (const_int 3)
- 			              (const_int 1)]))
- 	  (vec_select:V4HI (match_operand:V4HI 2 "register_operand" "y")
- 		           (parallel [(const_int 0)
- 			              (const_int 2)
- 			              (const_int 1)
- 			              (const_int 3)]))
-           (const_int 5)))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckihh%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckih")]
- )
- 
- (define_insn "iwmmxt_wunpckihw"
-   [(set (match_operand:V2SI                    0 "register_operand" "=y")
- 	(vec_merge:V2SI
- 	  (vec_select:V2SI (match_operand:V2SI 1 "register_operand" "y")
- 		           (parallel [(const_int 1)
- 		                      (const_int 0)]))
-           (vec_select:V2SI (match_operand:V2SI 2 "register_operand" "y")
- 		           (parallel [(const_int 0)
- 			              (const_int 1)]))
-           (const_int 1)))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckihw%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckih")]
- )
- 
- (define_insn "iwmmxt_wunpckilb"
-   [(set (match_operand:V8QI                                      0 "register_operand" "=y")
- 	(vec_merge:V8QI
- 	  (vec_select:V8QI (match_operand:V8QI 1 "register_operand" "y")
- 		           (parallel [(const_int 0)
- 			              (const_int 4)
- 			              (const_int 1)
- 			              (const_int 5)
- 		                      (const_int 2)
- 				      (const_int 6)
- 				      (const_int 3)
- 				      (const_int 7)]))
- 	  (vec_select:V8QI (match_operand:V8QI 2 "register_operand" "y")
- 		           (parallel [(const_int 4)
- 			              (const_int 0)
- 			              (const_int 5)
- 			              (const_int 1)
- 			              (const_int 6)
- 			              (const_int 2)
- 			              (const_int 7)
- 			              (const_int 3)]))
- 	  (const_int 85)))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckilb%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckil")]
- )
- 
- (define_insn "iwmmxt_wunpckilh"
-   [(set (match_operand:V4HI                                      0 "register_operand" "=y")
- 	(vec_merge:V4HI
- 	  (vec_select:V4HI (match_operand:V4HI 1 "register_operand" "y")
- 		           (parallel [(const_int 0)
- 			              (const_int 2)
- 			              (const_int 1)
- 			              (const_int 3)]))
- 	  (vec_select:V4HI (match_operand:V4HI 2 "register_operand" "y")
- 			   (parallel [(const_int 2)
- 			              (const_int 0)
- 			              (const_int 3)
- 			              (const_int 1)]))
- 	  (const_int 5)))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckilh%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckil")]
- )
- 
- (define_insn "iwmmxt_wunpckilw"
-   [(set (match_operand:V2SI                    0 "register_operand" "=y")
- 	(vec_merge:V2SI
- 	  (vec_select:V2SI (match_operand:V2SI 1 "register_operand" "y")
- 		           (parallel [(const_int 0)
- 				      (const_int 1)]))
- 	  (vec_select:V2SI (match_operand:V2SI 2 "register_operand" "y")
- 		           (parallel [(const_int 1)
- 			              (const_int 0)]))
- 	  (const_int 1)))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckilw%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckil")]
- )
- 
- (define_insn "iwmmxt_wunpckehub"
-   [(set (match_operand:V4HI                     0 "register_operand" "=y")
- 	(vec_select:V4HI
- 	  (zero_extend:V8HI (match_operand:V8QI 1 "register_operand" "y"))
- 	  (parallel [(const_int 4) (const_int 5)
- 	             (const_int 6) (const_int 7)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckehub%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckeh")]
- )
- 
- (define_insn "iwmmxt_wunpckehuh"
-   [(set (match_operand:V2SI                     0 "register_operand" "=y")
- 	(vec_select:V2SI
- 	  (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	  (parallel [(const_int 2) (const_int 3)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckehuh%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckeh")]
- )
- 
- (define_insn "iwmmxt_wunpckehuw"
-   [(set (match_operand:DI                       0 "register_operand" "=y")
- 	(vec_select:DI
- 	  (zero_extend:V2DI (match_operand:V2SI 1 "register_operand" "y"))
- 	  (parallel [(const_int 1)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckehuw%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckeh")]
- )
- 
- (define_insn "iwmmxt_wunpckehsb"
-   [(set (match_operand:V4HI                     0 "register_operand" "=y")
-         (vec_select:V4HI
- 	  (sign_extend:V8HI (match_operand:V8QI 1 "register_operand" "y"))
- 	  (parallel [(const_int 4) (const_int 5)
- 	             (const_int 6) (const_int 7)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckehsb%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckeh")]
- )
- 
- (define_insn "iwmmxt_wunpckehsh"
-   [(set (match_operand:V2SI                     0 "register_operand" "=y")
- 	(vec_select:V2SI
- 	  (sign_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	  (parallel [(const_int 2) (const_int 3)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckehsh%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckeh")]
- )
- 
- (define_insn "iwmmxt_wunpckehsw"
-   [(set (match_operand:DI                       0 "register_operand" "=y")
- 	(vec_select:DI
- 	  (sign_extend:V2DI (match_operand:V2SI 1 "register_operand" "y"))
- 	  (parallel [(const_int 1)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckehsw%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckeh")]
- )
- 
- (define_insn "iwmmxt_wunpckelub"
-   [(set (match_operand:V4HI                     0 "register_operand" "=y")
- 	(vec_select:V4HI
- 	  (zero_extend:V8HI (match_operand:V8QI 1 "register_operand" "y"))
- 	  (parallel [(const_int 0) (const_int 1)
- 		     (const_int 2) (const_int 3)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckelub%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckel")]
- )
- 
- (define_insn "iwmmxt_wunpckeluh"
-   [(set (match_operand:V2SI                     0 "register_operand" "=y")
- 	(vec_select:V2SI
- 	  (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	  (parallel [(const_int 0) (const_int 1)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckeluh%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckel")]
- )
- 
- (define_insn "iwmmxt_wunpckeluw"
-   [(set (match_operand:DI                       0 "register_operand" "=y")
- 	(vec_select:DI
- 	  (zero_extend:V2DI (match_operand:V2SI 1 "register_operand" "y"))
- 	  (parallel [(const_int 0)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckeluw%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckel")]
- )
- 
- (define_insn "iwmmxt_wunpckelsb"
-   [(set (match_operand:V4HI                     0 "register_operand" "=y")
- 	(vec_select:V4HI
- 	  (sign_extend:V8HI (match_operand:V8QI 1 "register_operand" "y"))
- 	  (parallel [(const_int 0) (const_int 1)
- 		     (const_int 2) (const_int 3)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckelsb%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckel")]
- )
- 
- (define_insn "iwmmxt_wunpckelsh"
-   [(set (match_operand:V2SI                     0 "register_operand" "=y")
- 	(vec_select:V2SI
- 	  (sign_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	  (parallel [(const_int 0) (const_int 1)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckelsh%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckel")]
- )
- 
- (define_insn "iwmmxt_wunpckelsw"
-   [(set (match_operand:DI                       0 "register_operand" "=y")
-         (vec_select:DI
- 	  (sign_extend:V2DI (match_operand:V2SI 1 "register_operand" "y"))
- 	  (parallel [(const_int 0)])))]
-   "TARGET_REALLY_IWMMXT"
-   "wunpckelsw%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wunpckel")]
- )
- 
- ;; Shifts
- 
- (define_insn "ror<mode>3"
-   [(set (match_operand:VSHFT                 0 "register_operand" "=y,y")
-         (rotatert:VSHFT (match_operand:VSHFT 1 "register_operand" "y,y")
- 		        (match_operand:SI    2 "imm_or_reg_operand" "z,i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-   switch  (which_alternative)
-     {
-     case 0:
-       return \"wror<MMX_char>g%?\\t%0, %1, %2\";
-     case 1:
-       return arm_output_iwmmxt_shift_immediate (\"wror<MMX_char>\", operands, true);
-     default:
-       gcc_unreachable ();
-     }
-   "
-   [(set_attr "predicable" "yes")
-    (set_attr "arch" "*, iwmmxt2")
-    (set_attr "type" "wmmx_wror, wmmx_wror")]
- )
- 
- (define_insn "ashr<mode>3_iwmmxt"
-   [(set (match_operand:VSHFT                 0 "register_operand" "=y,y")
-         (ashiftrt:VSHFT (match_operand:VSHFT 1 "register_operand" "y,y")
- 			(match_operand:SI    2 "imm_or_reg_operand" "z,i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-   switch  (which_alternative)
-     {
-     case 0:
-       return \"wsra<MMX_char>g%?\\t%0, %1, %2\";
-     case 1:
-       return arm_output_iwmmxt_shift_immediate (\"wsra<MMX_char>\", operands, true);
-     default:
-       gcc_unreachable ();
-     }
-   "
-   [(set_attr "predicable" "yes")
-    (set_attr "arch" "*, iwmmxt2")
-    (set_attr "type" "wmmx_wsra, wmmx_wsra")]
- )
- 
- (define_insn "lshr<mode>3_iwmmxt"
-   [(set (match_operand:VSHFT                 0 "register_operand" "=y,y")
-         (lshiftrt:VSHFT (match_operand:VSHFT 1 "register_operand" "y,y")
- 			(match_operand:SI    2 "imm_or_reg_operand" "z,i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-   switch  (which_alternative)
-     {
-     case 0:
-       return \"wsrl<MMX_char>g%?\\t%0, %1, %2\";
-     case 1:
-       return arm_output_iwmmxt_shift_immediate (\"wsrl<MMX_char>\", operands, false);
-     default:
-       gcc_unreachable ();
-     }
-   "
-   [(set_attr "predicable" "yes")
-    (set_attr "arch" "*, iwmmxt2")
-    (set_attr "type" "wmmx_wsrl, wmmx_wsrl")]
- )
- 
- (define_insn "ashl<mode>3_iwmmxt"
-   [(set (match_operand:VSHFT               0 "register_operand" "=y,y")
-         (ashift:VSHFT (match_operand:VSHFT 1 "register_operand" "y,y")
- 		      (match_operand:SI    2 "imm_or_reg_operand" "z,i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-   switch  (which_alternative)
-     {
-     case 0:
-       return \"wsll<MMX_char>g%?\\t%0, %1, %2\";
-     case 1:
-       return arm_output_iwmmxt_shift_immediate (\"wsll<MMX_char>\", operands, false);
-     default:
-       gcc_unreachable ();
-     }
-   "
-   [(set_attr "predicable" "yes")
-    (set_attr "arch" "*, iwmmxt2")
-    (set_attr "type" "wmmx_wsll, wmmx_wsll")]
- )
- 
- (define_insn "ror<mode>3_di"
-   [(set (match_operand:VSHFT                 0 "register_operand" "=y,y")
-         (rotatert:VSHFT (match_operand:VSHFT 1 "register_operand" "y,y")
- 		        (match_operand:DI    2 "imm_or_reg_operand" "y,i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-   switch (which_alternative)
-     {
-     case 0:
-       return \"wror<MMX_char>%?\\t%0, %1, %2\";
-     case 1:
-       return arm_output_iwmmxt_shift_immediate (\"wror<MMX_char>\", operands, true);
-     default:
-       gcc_unreachable ();
-     }
-   "
-   [(set_attr "predicable" "yes")
-    (set_attr "arch" "*, iwmmxt2")
-    (set_attr "type" "wmmx_wror, wmmx_wror")]
- )
- 
- (define_insn "ashr<mode>3_di"
-   [(set (match_operand:VSHFT                 0 "register_operand" "=y,y")
-         (ashiftrt:VSHFT (match_operand:VSHFT 1 "register_operand" "y,y")
- 		        (match_operand:DI    2 "imm_or_reg_operand" "y,i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-   switch (which_alternative)
-     {
-     case 0:
-       return \"wsra<MMX_char>%?\\t%0, %1, %2\";
-     case 1:
-       return arm_output_iwmmxt_shift_immediate (\"wsra<MMX_char>\", operands, true);
-     default:
-       gcc_unreachable ();
-     }
-   "
-   [(set_attr "predicable" "yes")
-    (set_attr "arch" "*, iwmmxt2")
-    (set_attr "type" "wmmx_wsra, wmmx_wsra")]
- )
- 
- (define_insn "lshr<mode>3_di"
-   [(set (match_operand:VSHFT                 0 "register_operand" "=y,y")
-         (lshiftrt:VSHFT (match_operand:VSHFT 1 "register_operand" "y,y")
- 		        (match_operand:DI    2 "register_operand" "y,i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-   switch (which_alternative)
-     {
-     case 0:
-       return \"wsrl<MMX_char>%?\\t%0, %1, %2\";
-     case 1:
-       return arm_output_iwmmxt_shift_immediate (\"wsrl<MMX_char>\", operands, false);
-     default:
-       gcc_unreachable ();
-     }
-   "
-   [(set_attr "predicable" "yes")
-    (set_attr "arch" "*, iwmmxt2")
-    (set_attr "type" "wmmx_wsrl, wmmx_wsrl")]
- )
- 
- (define_insn "ashl<mode>3_di"
-   [(set (match_operand:VSHFT               0 "register_operand" "=y,y")
-         (ashift:VSHFT (match_operand:VSHFT 1 "register_operand" "y,y")
- 		      (match_operand:DI    2 "imm_or_reg_operand" "y,i")))]
-   "TARGET_REALLY_IWMMXT"
-   "*
-   switch (which_alternative)
-     {
-     case 0:
-       return \"wsll<MMX_char>%?\\t%0, %1, %2\";
-     case 1:
-       return arm_output_iwmmxt_shift_immediate (\"wsll<MMX_char>\", operands, false);
-     default:
-       gcc_unreachable ();
-     }
-   "
-   [(set_attr "predicable" "yes")
-    (set_attr "arch" "*, iwmmxt2")
-    (set_attr "type" "wmmx_wsll, wmmx_wsll")]
- )
- 
- (define_insn "iwmmxt_wmadds"
-   [(set (match_operand:V2SI                                        0 "register_operand" "=y")
- 	(plus:V2SI
- 	  (mult:V2SI
- 	    (vec_select:V2SI (sign_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	                     (parallel [(const_int 1) (const_int 3)]))
- 	    (vec_select:V2SI (sign_extend:V4SI (match_operand:V4HI 2 "register_operand" "y"))
- 	                     (parallel [(const_int 1) (const_int 3)])))
- 	  (mult:V2SI
- 	    (vec_select:V2SI (sign_extend:V4SI (match_dup 1))
- 	                     (parallel [(const_int 0) (const_int 2)]))
- 	    (vec_select:V2SI (sign_extend:V4SI (match_dup 2))
- 	                     (parallel [(const_int 0) (const_int 2)])))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmadds%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmadd")]
- )
- 
- (define_insn "iwmmxt_wmaddu"
-   [(set (match_operand:V2SI               0 "register_operand" "=y")
- 	(plus:V2SI
- 	  (mult:V2SI
- 	    (vec_select:V2SI (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	                     (parallel [(const_int 1) (const_int 3)]))
- 	    (vec_select:V2SI (zero_extend:V4SI (match_operand:V4HI 2 "register_operand" "y"))
- 	                     (parallel [(const_int 1) (const_int 3)])))
- 	  (mult:V2SI
- 	    (vec_select:V2SI (zero_extend:V4SI (match_dup 1))
- 	                     (parallel [(const_int 0) (const_int 2)]))
- 	    (vec_select:V2SI (zero_extend:V4SI (match_dup 2))
- 	                     (parallel [(const_int 0) (const_int 2)])))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmaddu%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmadd")]
- )
- 
- (define_insn "iwmmxt_tmia"
-   [(set (match_operand:DI                     0 "register_operand" "=y")
- 	(plus:DI (match_operand:DI            1 "register_operand" "0")
- 		 (mult:DI (sign_extend:DI
- 			    (match_operand:SI 2 "register_operand" "r"))
- 			  (sign_extend:DI
- 			    (match_operand:SI 3 "register_operand" "r")))))]
-   "TARGET_REALLY_IWMMXT"
-   "tmia%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tmia")]
- )
- 
- (define_insn "iwmmxt_tmiaph"
-   [(set (match_operand:DI                                    0 "register_operand" "=y")
- 	(plus:DI (match_operand:DI                           1 "register_operand" "0")
- 		 (plus:DI
- 		   (mult:DI (sign_extend:DI
- 			      (truncate:HI (match_operand:SI 2 "register_operand" "r")))
- 			    (sign_extend:DI
- 			      (truncate:HI (match_operand:SI 3 "register_operand" "r"))))
- 		   (mult:DI (sign_extend:DI
- 			      (truncate:HI (ashiftrt:SI (match_dup 2) (const_int 16))))
- 			    (sign_extend:DI
- 			      (truncate:HI (ashiftrt:SI (match_dup 3) (const_int 16))))))))]
-   "TARGET_REALLY_IWMMXT"
-   "tmiaph%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tmiaph")]
- )
- 
- (define_insn "iwmmxt_tmiabb"
-   [(set (match_operand:DI                                  0 "register_operand" "=y")
- 	(plus:DI (match_operand:DI                         1 "register_operand" "0")
- 		 (mult:DI (sign_extend:DI
- 			    (truncate:HI (match_operand:SI 2 "register_operand" "r")))
- 			  (sign_extend:DI
- 			    (truncate:HI (match_operand:SI 3 "register_operand" "r"))))))]
-   "TARGET_REALLY_IWMMXT"
-   "tmiabb%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tmiaxy")]
- )
- 
- (define_insn "iwmmxt_tmiatb"
-   [(set (match_operand:DI                         0 "register_operand" "=y")
- 	(plus:DI (match_operand:DI                1 "register_operand" "0")
- 		 (mult:DI (sign_extend:DI
- 			    (truncate:HI
- 			      (ashiftrt:SI
- 				(match_operand:SI 2 "register_operand" "r")
- 				(const_int 16))))
- 			  (sign_extend:DI
- 			    (truncate:HI
- 			      (match_operand:SI   3 "register_operand" "r"))))))]
-   "TARGET_REALLY_IWMMXT"
-   "tmiatb%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tmiaxy")]
- )
- 
- (define_insn "iwmmxt_tmiabt"
-   [(set (match_operand:DI                         0 "register_operand" "=y")
- 	(plus:DI (match_operand:DI                1 "register_operand" "0")
- 		 (mult:DI (sign_extend:DI
- 			    (truncate:HI
- 			      (match_operand:SI   2 "register_operand" "r")))
- 			  (sign_extend:DI
- 			    (truncate:HI
- 			      (ashiftrt:SI
- 				(match_operand:SI 3 "register_operand" "r")
- 				(const_int 16)))))))]
-   "TARGET_REALLY_IWMMXT"
-   "tmiabt%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tmiaxy")]
- )
- 
- (define_insn "iwmmxt_tmiatt"
-   [(set (match_operand:DI          0 "register_operand" "=y")
- 	(plus:DI (match_operand:DI 1 "register_operand" "0")
- 		 (mult:DI (sign_extend:DI
- 			    (truncate:HI
- 			      (ashiftrt:SI
- 				(match_operand:SI 2 "register_operand" "r")
- 				(const_int 16))))
- 			  (sign_extend:DI
- 			    (truncate:HI
- 			      (ashiftrt:SI
- 				(match_operand:SI 3 "register_operand" "r")
- 				(const_int 16)))))))]
-   "TARGET_REALLY_IWMMXT"
-   "tmiatt%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tmiaxy")]
- )
- 
- (define_insn "iwmmxt_tmovmskb"
-   [(set (match_operand:SI               0 "register_operand" "=r")
- 	(unspec:SI [(match_operand:V8QI 1 "register_operand" "y")] UNSPEC_TMOVMSK))]
-   "TARGET_REALLY_IWMMXT"
-   "tmovmskb%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tmovmsk")]
- )
- 
- (define_insn "iwmmxt_tmovmskh"
-   [(set (match_operand:SI               0 "register_operand" "=r")
- 	(unspec:SI [(match_operand:V4HI 1 "register_operand" "y")] UNSPEC_TMOVMSK))]
-   "TARGET_REALLY_IWMMXT"
-   "tmovmskh%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tmovmsk")]
- )
- 
- (define_insn "iwmmxt_tmovmskw"
-   [(set (match_operand:SI               0 "register_operand" "=r")
- 	(unspec:SI [(match_operand:V2SI 1 "register_operand" "y")] UNSPEC_TMOVMSK))]
-   "TARGET_REALLY_IWMMXT"
-   "tmovmskw%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tmovmsk")]
- )
- 
- (define_insn "iwmmxt_waccb"
-   [(set (match_operand:DI               0 "register_operand" "=y")
- 	(unspec:DI [(match_operand:V8QI 1 "register_operand" "y")] UNSPEC_WACC))]
-   "TARGET_REALLY_IWMMXT"
-   "waccb%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wacc")]
- )
- 
- (define_insn "iwmmxt_wacch"
-   [(set (match_operand:DI               0 "register_operand" "=y")
- 	(unspec:DI [(match_operand:V4HI 1 "register_operand" "y")] UNSPEC_WACC))]
-   "TARGET_REALLY_IWMMXT"
-   "wacch%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wacc")]
- )
- 
- (define_insn "iwmmxt_waccw"
-   [(set (match_operand:DI               0 "register_operand" "=y")
- 	(unspec:DI [(match_operand:V2SI 1 "register_operand" "y")] UNSPEC_WACC))]
-   "TARGET_REALLY_IWMMXT"
-   "waccw%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wacc")]
- )
- 
- ;; use unspec here to prevent 8 * imm to be optimized by cse
- (define_insn "iwmmxt_waligni"
-   [(set (match_operand:V8QI                                0 "register_operand" "=y")
- 	(unspec:V8QI [(subreg:V8QI
- 		        (ashiftrt:TI
- 		          (subreg:TI (vec_concat:V16QI
- 				       (match_operand:V8QI 1 "register_operand" "y")
- 				       (match_operand:V8QI 2 "register_operand" "y")) 0)
- 		          (mult:SI
- 		            (match_operand:SI              3 "immediate_operand" "i")
- 		            (const_int 8))) 0)] UNSPEC_WALIGNI))]
-   "TARGET_REALLY_IWMMXT"
-   "waligni%?\\t%0, %1, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_waligni")]
- )
- 
- (define_insn "iwmmxt_walignr"
-   [(set (match_operand:V8QI                           0 "register_operand" "=y")
- 	(subreg:V8QI (ashiftrt:TI
- 		       (subreg:TI (vec_concat:V16QI
- 				    (match_operand:V8QI 1 "register_operand" "y")
- 				    (match_operand:V8QI 2 "register_operand" "y")) 0)
- 		       (mult:SI
- 		         (zero_extract:SI (match_operand:SI 3 "register_operand" "z") (const_int 3) (const_int 0))
- 		         (const_int 8))) 0))]
-   "TARGET_REALLY_IWMMXT"
-   "walignr%U3%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_walignr")]
- )
- 
- (define_insn "iwmmxt_walignr0"
-   [(set (match_operand:V8QI                           0 "register_operand" "=y")
- 	(subreg:V8QI (ashiftrt:TI
- 		       (subreg:TI (vec_concat:V16QI
- 				    (match_operand:V8QI 1 "register_operand" "y")
- 				    (match_operand:V8QI 2 "register_operand" "y")) 0)
- 		       (mult:SI
- 		         (zero_extract:SI (reg:SI WCGR0) (const_int 3) (const_int 0))
- 		         (const_int 8))) 0))]
-   "TARGET_REALLY_IWMMXT"
-   "walignr0%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_walignr")]
- )
- 
- (define_insn "iwmmxt_walignr1"
-   [(set (match_operand:V8QI                           0 "register_operand" "=y")
- 	(subreg:V8QI (ashiftrt:TI
- 		       (subreg:TI (vec_concat:V16QI
- 				    (match_operand:V8QI 1 "register_operand" "y")
- 				    (match_operand:V8QI 2 "register_operand" "y")) 0)
- 		       (mult:SI
- 		         (zero_extract:SI (reg:SI WCGR1) (const_int 3) (const_int 0))
- 		         (const_int 8))) 0))]
-   "TARGET_REALLY_IWMMXT"
-   "walignr1%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_walignr")]
- )
- 
- (define_insn "iwmmxt_walignr2"
-   [(set (match_operand:V8QI                           0 "register_operand" "=y")
- 	(subreg:V8QI (ashiftrt:TI
- 		       (subreg:TI (vec_concat:V16QI
- 				    (match_operand:V8QI 1 "register_operand" "y")
- 				    (match_operand:V8QI 2 "register_operand" "y")) 0)
- 		       (mult:SI
- 		         (zero_extract:SI (reg:SI WCGR2) (const_int 3) (const_int 0))
- 		         (const_int 8))) 0))]
-   "TARGET_REALLY_IWMMXT"
-   "walignr2%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_walignr")]
- )
- 
- (define_insn "iwmmxt_walignr3"
-   [(set (match_operand:V8QI                           0 "register_operand" "=y")
- 	(subreg:V8QI (ashiftrt:TI
- 		       (subreg:TI (vec_concat:V16QI
- 				    (match_operand:V8QI 1 "register_operand" "y")
- 				    (match_operand:V8QI 2 "register_operand" "y")) 0)
- 		       (mult:SI
- 		         (zero_extract:SI (reg:SI WCGR3) (const_int 3) (const_int 0))
- 		         (const_int 8))) 0))]
-   "TARGET_REALLY_IWMMXT"
-   "walignr3%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_walignr")]
- )
- 
- (define_insn "iwmmxt_wsadb"
-   [(set (match_operand:V2SI               0 "register_operand" "=y")
-         (unspec:V2SI [
- 		      (match_operand:V2SI 1 "register_operand" "0")
- 		      (match_operand:V8QI 2 "register_operand" "y")
- 		      (match_operand:V8QI 3 "register_operand" "y")] UNSPEC_WSAD))]
-   "TARGET_REALLY_IWMMXT"
-   "wsadb%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsad")]
- )
- 
- (define_insn "iwmmxt_wsadh"
-   [(set (match_operand:V2SI               0 "register_operand" "=y")
-         (unspec:V2SI [
- 		      (match_operand:V2SI 1 "register_operand" "0")
- 		      (match_operand:V4HI 2 "register_operand" "y")
- 		      (match_operand:V4HI 3 "register_operand" "y")] UNSPEC_WSAD))]
-   "TARGET_REALLY_IWMMXT"
-   "wsadh%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsad")]
- )
- 
- (define_insn "iwmmxt_wsadbz"
-   [(set (match_operand:V2SI               0 "register_operand" "=y")
-         (unspec:V2SI [(match_operand:V8QI 1 "register_operand" "y")
- 		      (match_operand:V8QI 2 "register_operand" "y")] UNSPEC_WSADZ))]
-   "TARGET_REALLY_IWMMXT"
-   "wsadbz%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsad")]
- )
- 
- (define_insn "iwmmxt_wsadhz"
-   [(set (match_operand:V2SI               0 "register_operand" "=y")
-         (unspec:V2SI [(match_operand:V4HI 1 "register_operand" "y")
- 		      (match_operand:V4HI 2 "register_operand" "y")] UNSPEC_WSADZ))]
-   "TARGET_REALLY_IWMMXT"
-   "wsadhz%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsad")]
- )
- 
- (include "iwmmxt2.md")
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/iwmmxt2.md gcc-16-20250518/gcc/config/arm/iwmmxt2.md
*** gcc-16-20250511/gcc/config/arm/iwmmxt2.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/iwmmxt2.md	Thu Jan  1 00:00:00 1970
***************
*** 1,903 ****
- ;; Patterns for the Intel Wireless MMX technology architecture.
- ;; Copyright (C) 2011-2025 Free Software Foundation, Inc.
- ;; Written by Marvell, Inc.
- ;;
- ;; 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/>.
- 
- (define_insn "iwmmxt_wabs<mode>3"
-   [(set (match_operand:VMMX               0 "register_operand" "=y")
-         (unspec:VMMX [(match_operand:VMMX 1 "register_operand"  "y")] UNSPEC_WABS))]
-   "TARGET_REALLY_IWMMXT"
-   "wabs<MMX_char>%?\\t%0, %1"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wabs")]
- )
- 
- (define_insn "iwmmxt_wabsdiffb"
-   [(set (match_operand:V8QI                          0 "register_operand" "=y")
- 	(truncate:V8QI
- 	  (abs:V8HI
- 	    (minus:V8HI
- 	      (zero_extend:V8HI (match_operand:V8QI  1 "register_operand"  "y"))
- 	      (zero_extend:V8HI (match_operand:V8QI  2 "register_operand"  "y"))))))]
-  "TARGET_REALLY_IWMMXT"
-  "wabsdiffb%?\\t%0, %1, %2"
-  [(set_attr "predicable" "yes")
-   (set_attr "type" "wmmx_wabsdiff")]
- )
- 
- (define_insn "iwmmxt_wabsdiffh"
-   [(set (match_operand:V4HI                          0 "register_operand" "=y")
-         (truncate: V4HI
-           (abs:V4SI
-             (minus:V4SI
-               (zero_extend:V4SI (match_operand:V4HI  1 "register_operand"  "y"))
- 	      (zero_extend:V4SI (match_operand:V4HI  2 "register_operand"  "y"))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wabsdiffh%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wabsdiff")]
- )
- 
- (define_insn "iwmmxt_wabsdiffw"
-   [(set (match_operand:V2SI                          0 "register_operand" "=y")
-         (truncate: V2SI
- 	  (abs:V2DI
- 	    (minus:V2DI
- 	      (zero_extend:V2DI (match_operand:V2SI  1 "register_operand"  "y"))
- 	      (zero_extend:V2DI (match_operand:V2SI  2 "register_operand"  "y"))))))]
-  "TARGET_REALLY_IWMMXT"
-  "wabsdiffw%?\\t%0, %1, %2"
-  [(set_attr "predicable" "yes")
-   (set_attr "type" "wmmx_wabsdiff")]
- )
- 
- (define_insn "iwmmxt_waddsubhx"
-   [(set (match_operand:V4HI                                        0 "register_operand" "=y")
- 	(vec_merge:V4HI
- 	  (ss_minus:V4HI
- 	    (match_operand:V4HI                                    1 "register_operand" "y")
- 	    (vec_select:V4HI (match_operand:V4HI 2 "register_operand" "y")
- 	                     (parallel [(const_int 1) (const_int 0) (const_int 3) (const_int 2)])))
- 	  (ss_plus:V4HI
- 	    (match_dup 1)
- 	    (vec_select:V4HI (match_dup 2)
- 	                     (parallel [(const_int 1) (const_int 0) (const_int 3) (const_int 2)])))
- 	  (const_int 10)))]
-   "TARGET_REALLY_IWMMXT"
-   "waddsubhx%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_waddsubhx")]
- )
- 
- (define_insn "iwmmxt_wsubaddhx"
-   [(set (match_operand:V4HI                                        0 "register_operand" "=y")
- 	(vec_merge:V4HI
- 	  (ss_plus:V4HI
- 	    (match_operand:V4HI                                    1 "register_operand" "y")
- 	    (vec_select:V4HI (match_operand:V4HI 2 "register_operand" "y")
- 	                     (parallel [(const_int 1) (const_int 0) (const_int 3) (const_int 2)])))
- 	  (ss_minus:V4HI
- 	    (match_dup 1)
- 	    (vec_select:V4HI (match_dup 2)
- 	                     (parallel [(const_int 1) (const_int 0) (const_int 3) (const_int 2)])))
- 	  (const_int 10)))]
-   "TARGET_REALLY_IWMMXT"
-   "wsubaddhx%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wsubaddhx")]
- )
- 
- (define_insn "addc<mode>3"
-   [(set (match_operand:VMMX2      0 "register_operand" "=y")
- 	(unspec:VMMX2
-           [(plus:VMMX2
-              (match_operand:VMMX2 1 "register_operand"  "y")
- 	     (match_operand:VMMX2 2 "register_operand"  "y"))] UNSPEC_WADDC))]
-   "TARGET_REALLY_IWMMXT"
-   "wadd<MMX_char>c%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wadd")]
- )
- 
- (define_insn "iwmmxt_avg4"
- [(set (match_operand:V8QI                                 0 "register_operand" "=y")
-       (truncate:V8QI
-         (vec_select:V8HI
- 	  (vec_merge:V8HI
- 	    (lshiftrt:V8HI
- 	      (plus:V8HI
- 	        (plus:V8HI
- 		  (plus:V8HI
- 	            (plus:V8HI
- 		      (zero_extend:V8HI (match_operand:V8QI 1 "register_operand" "y"))
- 		      (zero_extend:V8HI (match_operand:V8QI 2 "register_operand" "y")))
- 		    (vec_select:V8HI (zero_extend:V8HI (match_dup 1))
- 		                     (parallel [(const_int 7) (const_int 0) (const_int 1) (const_int 2)
- 				                (const_int 3) (const_int 4) (const_int 5) (const_int 6)])))
- 		  (vec_select:V8HI (zero_extend:V8HI (match_dup 2))
- 		                   (parallel [(const_int 7) (const_int 0) (const_int 1) (const_int 2)
- 				              (const_int 3) (const_int 4) (const_int 5) (const_int 6)])))
- 	        (const_vector:V8HI [(const_int 1) (const_int 1) (const_int 1) (const_int 1)
- 	                            (const_int 1) (const_int 1) (const_int 1) (const_int 1)]))
- 	      (const_int 2))
- 	    (const_vector:V8HI [(const_int 0) (const_int 0) (const_int 0) (const_int 0)
- 	                        (const_int 0) (const_int 0) (const_int 0) (const_int 0)])
- 	    (const_int 254))
- 	  (parallel [(const_int 1) (const_int 2) (const_int 3) (const_int 4)
- 	             (const_int 5) (const_int 6) (const_int 7) (const_int 0)]))))]
-   "TARGET_REALLY_IWMMXT"
-   "wavg4%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wavg4")]
- )
- 
- (define_insn "iwmmxt_avg4r"
-   [(set (match_operand:V8QI                                   0 "register_operand" "=y")
- 	(truncate:V8QI
- 	  (vec_select:V8HI
- 	    (vec_merge:V8HI
- 	      (lshiftrt:V8HI
- 	        (plus:V8HI
- 		  (plus:V8HI
- 		    (plus:V8HI
- 		      (plus:V8HI
- 		        (zero_extend:V8HI (match_operand:V8QI 1 "register_operand" "y"))
- 		        (zero_extend:V8HI (match_operand:V8QI 2 "register_operand" "y")))
- 		      (vec_select:V8HI (zero_extend:V8HI (match_dup 1))
- 		                       (parallel [(const_int 7) (const_int 0) (const_int 1) (const_int 2)
- 				                  (const_int 3) (const_int 4) (const_int 5) (const_int 6)])))
- 		    (vec_select:V8HI (zero_extend:V8HI (match_dup 2))
- 		                     (parallel [(const_int 7) (const_int 0) (const_int 1) (const_int 2)
- 				                (const_int 3) (const_int 4) (const_int 5) (const_int 6)])))
- 		  (const_vector:V8HI [(const_int 2) (const_int 2) (const_int 2) (const_int 2)
- 		                      (const_int 2) (const_int 2) (const_int 2) (const_int 2)]))
- 	        (const_int 2))
- 	      (const_vector:V8HI [(const_int 0) (const_int 0) (const_int 0) (const_int 0)
- 	                          (const_int 0) (const_int 0) (const_int 0) (const_int 0)])
- 	      (const_int 254))
- 	    (parallel [(const_int 1) (const_int 2) (const_int 3) (const_int 4)
- 	               (const_int 5) (const_int 6) (const_int 7) (const_int 0)]))))]
-   "TARGET_REALLY_IWMMXT"
-   "wavg4r%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wavg4")]
- )
- 
- (define_insn "iwmmxt_wmaddsx"
-   [(set (match_operand:V2SI                                        0 "register_operand" "=y")
- 	(plus:V2SI
- 	  (mult:V2SI
- 	    (vec_select:V2SI (sign_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	                     (parallel [(const_int 1) (const_int 3)]))
- 	    (vec_select:V2SI (sign_extend:V4SI (match_operand:V4HI 2 "register_operand" "y"))
- 	                     (parallel [(const_int 0) (const_int 2)])))
- 	  (mult:V2SI
- 	    (vec_select:V2SI (sign_extend:V4SI (match_dup 1))
- 	                     (parallel [(const_int 0) (const_int 2)]))
- 	    (vec_select:V2SI (sign_extend:V4SI (match_dup 2))
- 	                     (parallel [(const_int 1) (const_int 3)])))))]
-  "TARGET_REALLY_IWMMXT"
-   "wmaddsx%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
- 	(set_attr "type" "wmmx_wmadd")]
- )
- 
- (define_insn "iwmmxt_wmaddux"
-   [(set (match_operand:V2SI                                        0 "register_operand" "=y")
- 	(plus:V2SI
- 	  (mult:V2SI
- 	    (vec_select:V2SI (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	                     (parallel [(const_int 1) (const_int 3)]))
- 	    (vec_select:V2SI (zero_extend:V4SI (match_operand:V4HI 2 "register_operand" "y"))
- 	                     (parallel [(const_int 0) (const_int 2)])))
- 	  (mult:V2SI
- 	    (vec_select:V2SI (zero_extend:V4SI (match_dup 1))
- 	                     (parallel [(const_int 0) (const_int 2)]))
- 	    (vec_select:V2SI (zero_extend:V4SI (match_dup 2))
- 	                     (parallel [(const_int 1) (const_int 3)])))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmaddux%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmadd")]
- )
- 
- (define_insn "iwmmxt_wmaddsn"
-  [(set (match_operand:V2SI                                     0 "register_operand" "=y")
-     (minus:V2SI
-       (mult:V2SI
-         (vec_select:V2SI (sign_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	                 (parallel [(const_int 0) (const_int 2)]))
-         (vec_select:V2SI (sign_extend:V4SI (match_operand:V4HI 2 "register_operand" "y"))
- 	                 (parallel [(const_int 0) (const_int 2)])))
-       (mult:V2SI
-         (vec_select:V2SI (sign_extend:V4SI (match_dup 1))
- 	                 (parallel [(const_int 1) (const_int 3)]))
-         (vec_select:V2SI (sign_extend:V4SI (match_dup 2))
- 	                 (parallel [(const_int 1) (const_int 3)])))))]
-  "TARGET_REALLY_IWMMXT"
-  "wmaddsn%?\\t%0, %1, %2"
-  [(set_attr "predicable" "yes")
-   (set_attr "type" "wmmx_wmadd")]
- )
- 
- (define_insn "iwmmxt_wmaddun"
-   [(set (match_operand:V2SI                                        0 "register_operand" "=y")
- 	(minus:V2SI
- 	  (mult:V2SI
- 	    (vec_select:V2SI (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 	                     (parallel [(const_int 0) (const_int 2)]))
- 	    (vec_select:V2SI (zero_extend:V4SI (match_operand:V4HI 2 "register_operand" "y"))
- 	                     (parallel [(const_int 0) (const_int 2)])))
- 	  (mult:V2SI
- 	    (vec_select:V2SI (zero_extend:V4SI (match_dup 1))
- 	                     (parallel [(const_int 1) (const_int 3)]))
- 	    (vec_select:V2SI (zero_extend:V4SI (match_dup 2))
- 	                     (parallel [(const_int 1) (const_int 3)])))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmaddun%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmadd")]
- )
- 
- (define_insn "iwmmxt_wmulwsm"
-   [(set (match_operand:V2SI                         0 "register_operand" "=y")
- 	(truncate:V2SI
- 	  (ashiftrt:V2DI
- 	    (mult:V2DI
- 	      (sign_extend:V2DI (match_operand:V2SI 1 "register_operand" "y"))
- 	      (sign_extend:V2DI (match_operand:V2SI 2 "register_operand" "y")))
- 	    (const_int 32))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulwsm%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmulw")]
- )
- 
- (define_insn "iwmmxt_wmulwum"
-   [(set (match_operand:V2SI                         0 "register_operand" "=y")
- 	(truncate:V2SI
-           (lshiftrt:V2DI
- 	    (mult:V2DI
- 	      (zero_extend:V2DI (match_operand:V2SI 1 "register_operand" "y"))
- 	      (zero_extend:V2DI (match_operand:V2SI 2 "register_operand" "y")))
- 	    (const_int 32))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulwum%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmulw")]
- )
- 
- (define_insn "iwmmxt_wmulsmr"
-   [(set (match_operand:V4HI                           0 "register_operand" "=y")
- 	(truncate:V4HI
- 	  (ashiftrt:V4SI
- 	    (plus:V4SI
- 	      (mult:V4SI
- 	        (sign_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 		(sign_extend:V4SI (match_operand:V4HI 2 "register_operand" "y")))
- 	      (const_vector:V4SI [(const_int 32768)
- 	                          (const_int 32768)
- 				  (const_int 32768)]))
- 	    (const_int 16))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulsmr%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmul")]
- )
- 
- (define_insn "iwmmxt_wmulumr"
-   [(set (match_operand:V4HI                           0 "register_operand" "=y")
- 	(truncate:V4HI
- 	  (lshiftrt:V4SI
- 	    (plus:V4SI
- 	      (mult:V4SI
- 	        (zero_extend:V4SI (match_operand:V4HI 1 "register_operand" "y"))
- 		(zero_extend:V4SI (match_operand:V4HI 2 "register_operand" "y")))
- 	      (const_vector:V4SI [(const_int 32768)
- 				  (const_int 32768)
- 				  (const_int 32768)
- 				  (const_int 32768)]))
- 	  (const_int 16))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulumr%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmul")]
- )
- 
- (define_insn "iwmmxt_wmulwsmr"
-   [(set (match_operand:V2SI                           0 "register_operand" "=y")
- 	(truncate:V2SI
- 	  (ashiftrt:V2DI
- 	    (plus:V2DI
- 	      (mult:V2DI
- 	        (sign_extend:V2DI (match_operand:V2SI 1 "register_operand" "y"))
- 		(sign_extend:V2DI (match_operand:V2SI 2 "register_operand" "y")))
- 	      (const_vector:V2DI [(const_int 2147483648)
- 				  (const_int 2147483648)]))
- 	    (const_int 32))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulwsmr%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmul")]
- )
- 
- (define_insn "iwmmxt_wmulwumr"
-   [(set (match_operand:V2SI                           0 "register_operand" "=y")
- 	(truncate:V2SI
- 	  (lshiftrt:V2DI
- 	    (plus:V2DI
- 	      (mult:V2DI
- 	        (zero_extend:V2DI (match_operand:V2SI 1 "register_operand" "y"))
- 		(zero_extend:V2DI (match_operand:V2SI 2 "register_operand" "y")))
- 	      (const_vector:V2DI [(const_int 2147483648)
- 			          (const_int 2147483648)]))
- 	    (const_int 32))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulwumr%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmulw")]
- )
- 
- (define_insn "iwmmxt_wmulwl"
-   [(set (match_operand:V2SI   0 "register_operand" "=y")
-         (mult:V2SI
-           (match_operand:V2SI 1 "register_operand" "y")
- 	  (match_operand:V2SI 2 "register_operand" "y")))]
-   "TARGET_REALLY_IWMMXT"
-   "wmulwl%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmulw")]
- )
- 
- (define_insn "iwmmxt_wqmulm"
-   [(set (match_operand:V4HI            0 "register_operand" "=y")
-         (unspec:V4HI [(match_operand:V4HI 1 "register_operand" "y")
- 		      (match_operand:V4HI 2 "register_operand" "y")] UNSPEC_WQMULM))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmulm%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmulm")]
- )
- 
- (define_insn "iwmmxt_wqmulwm"
-   [(set (match_operand:V2SI               0 "register_operand" "=y")
- 	(unspec:V2SI [(match_operand:V2SI 1 "register_operand" "y")
- 		      (match_operand:V2SI 2 "register_operand" "y")] UNSPEC_WQMULWM))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmulwm%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmulwm")]
- )
- 
- (define_insn "iwmmxt_wqmulmr"
-   [(set (match_operand:V4HI               0 "register_operand" "=y")
- 	(unspec:V4HI [(match_operand:V4HI 1 "register_operand" "y")
- 		      (match_operand:V4HI 2 "register_operand" "y")] UNSPEC_WQMULMR))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmulmr%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmulm")]
- )
- 
- (define_insn "iwmmxt_wqmulwmr"
-   [(set (match_operand:V2SI            0 "register_operand" "=y")
-         (unspec:V2SI [(match_operand:V2SI 1 "register_operand" "y")
- 		      (match_operand:V2SI 2 "register_operand" "y")] UNSPEC_WQMULWMR))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmulwmr%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmulwm")]
- )
- 
- (define_insn "iwmmxt_waddbhusm"
-   [(set (match_operand:V8QI                          0 "register_operand" "=y")
- 	(vec_concat:V8QI
- 	  (const_vector:V4QI [(const_int 0) (const_int 0) (const_int 0) (const_int 0)])
- 	  (us_truncate:V4QI
- 	    (ss_plus:V4HI
- 	      (match_operand:V4HI                    1 "register_operand" "y")
- 	      (zero_extend:V4HI
- 	        (vec_select:V4QI (match_operand:V8QI 2 "register_operand" "y")
- 	                         (parallel [(const_int 4) (const_int 5) (const_int 6) (const_int 7)])))))))]
-   "TARGET_REALLY_IWMMXT"
-   "waddbhusm%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_waddbhus")]
- )
- 
- (define_insn "iwmmxt_waddbhusl"
-   [(set (match_operand:V8QI                          0 "register_operand" "=y")
- 	(vec_concat:V8QI
- 	  (us_truncate:V4QI
- 	    (ss_plus:V4HI
- 	      (match_operand:V4HI                    1 "register_operand" "y")
- 	      (zero_extend:V4HI
- 		(vec_select:V4QI (match_operand:V8QI 2 "register_operand" "y")
- 		                 (parallel [(const_int 0) (const_int 1) (const_int 2) (const_int 3)])))))
- 	  (const_vector:V4QI [(const_int 0) (const_int 0) (const_int 0) (const_int 0)])))]
-   "TARGET_REALLY_IWMMXT"
-   "waddbhusl%?\\t%0, %1, %2"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_waddbhus")]
- )
- 
- (define_insn "iwmmxt_wqmiabb"
-   [(set (match_operand:V2SI	                             0 "register_operand" "=y")
- 	(unspec:V2SI [(match_operand:V2SI                    1 "register_operand" "0")
- 		      (zero_extract:V4HI (match_operand:V4HI 2 "register_operand" "y") (const_int 16) (const_int 0))
- 		      (zero_extract:V4HI (match_dup 2) (const_int 16) (const_int 32))
- 		      (zero_extract:V4HI (match_operand:V4HI 3 "register_operand" "y") (const_int 16) (const_int 0))
- 		      (zero_extract:V4HI (match_dup 3) (const_int 16) (const_int 32))] UNSPEC_WQMIAxy))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmiabb%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmiaxy")]
- )
- 
- (define_insn "iwmmxt_wqmiabt"
-   [(set (match_operand:V2SI	                             0 "register_operand" "=y")
- 	(unspec:V2SI [(match_operand:V2SI                    1 "register_operand" "0")
- 	              (zero_extract:V4HI (match_operand:V4HI 2 "register_operand" "y") (const_int 16) (const_int 0))
- 		      (zero_extract:V4HI (match_dup 2) (const_int 16) (const_int 32))
- 		      (zero_extract:V4HI (match_operand:V4HI 3 "register_operand" "y") (const_int 16) (const_int 16))
- 		      (zero_extract:V4HI (match_dup 3) (const_int 16) (const_int 48))] UNSPEC_WQMIAxy))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmiabt%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmiaxy")]
- )
- 
- (define_insn "iwmmxt_wqmiatb"
-   [(set (match_operand:V2SI                                  0 "register_operand" "=y")
-         (unspec:V2SI [(match_operand:V2SI                    1 "register_operand" "0")
- 	              (zero_extract:V4HI (match_operand:V4HI 2 "register_operand" "y") (const_int 16) (const_int 16))
- 	              (zero_extract:V4HI (match_dup 2) (const_int 16) (const_int 48))
- 	              (zero_extract:V4HI (match_operand:V4HI 3 "register_operand" "y") (const_int 16) (const_int 0))
- 	              (zero_extract:V4HI (match_dup 3) (const_int 16) (const_int 32))] UNSPEC_WQMIAxy))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmiatb%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmiaxy")]
- )
- 
- (define_insn "iwmmxt_wqmiatt"
-   [(set (match_operand:V2SI                                  0 "register_operand" "=y")
-         (unspec:V2SI [(match_operand:V2SI                    1 "register_operand" "0")
- 	              (zero_extract:V4HI (match_operand:V4HI 2 "register_operand" "y") (const_int 16) (const_int 16))
- 	              (zero_extract:V4HI (match_dup 2) (const_int 16) (const_int 48))
- 	              (zero_extract:V4HI (match_operand:V4HI 3 "register_operand" "y") (const_int 16) (const_int 16))
- 	              (zero_extract:V4HI (match_dup 3) (const_int 16) (const_int 48))] UNSPEC_WQMIAxy))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmiatt%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmiaxy")]
- )
- 
- (define_insn "iwmmxt_wqmiabbn"
-   [(set (match_operand:V2SI                                  0 "register_operand" "=y")
-         (unspec:V2SI [(match_operand:V2SI                    1 "register_operand" "0")
-                       (zero_extract:V4HI (match_operand:V4HI 2 "register_operand" "y") (const_int 16) (const_int 0))
- 	              (zero_extract:V4HI (match_dup 2) (const_int 16) (const_int 32))
- 	              (zero_extract:V4HI (match_operand:V4HI 3 "register_operand" "y") (const_int 16) (const_int 0))
- 	              (zero_extract:V4HI (match_dup 3) (const_int 16) (const_int 32))] UNSPEC_WQMIAxyn))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmiabbn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmiaxy")]
- )
- 
- (define_insn "iwmmxt_wqmiabtn"
-   [(set (match_operand:V2SI                                  0 "register_operand" "=y")
-         (unspec:V2SI [(match_operand:V2SI                    1 "register_operand" "0")
-                       (zero_extract:V4HI (match_operand:V4HI 2 "register_operand" "y") (const_int 16) (const_int 0))
- 	              (zero_extract:V4HI (match_dup 2) (const_int 16) (const_int 32))
- 	              (zero_extract:V4HI (match_operand:V4HI 3 "register_operand" "y") (const_int 16) (const_int 16))
- 	              (zero_extract:V4HI (match_dup 3) (const_int 16) (const_int 48))] UNSPEC_WQMIAxyn))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmiabtn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmiaxy")]
- )
- 
- (define_insn "iwmmxt_wqmiatbn"
-   [(set (match_operand:V2SI                                  0 "register_operand" "=y")
-         (unspec:V2SI [(match_operand:V2SI                    1 "register_operand" "0")
-                       (zero_extract:V4HI (match_operand:V4HI 2 "register_operand" "y") (const_int 16) (const_int 16))
- 	              (zero_extract:V4HI (match_dup 2) (const_int 16) (const_int 48))
- 	              (zero_extract:V4HI (match_operand:V4HI 3 "register_operand" "y") (const_int 16) (const_int 0))
- 	              (zero_extract:V4HI (match_dup 3) (const_int 16) (const_int 32))] UNSPEC_WQMIAxyn))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmiatbn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmiaxy")]
- )
- 
- (define_insn "iwmmxt_wqmiattn"
-  [(set (match_operand:V2SI                                  0 "register_operand" "=y")
-        (unspec:V2SI [(match_operand:V2SI                    1 "register_operand" "0")
-                      (zero_extract:V4HI (match_operand:V4HI 2 "register_operand" "y") (const_int 16) (const_int 16))
- 	             (zero_extract:V4HI (match_dup 2) (const_int 16) (const_int 48))
- 	             (zero_extract:V4HI (match_operand:V4HI 3 "register_operand" "y") (const_int 16) (const_int 16))
- 	             (zero_extract:V4HI (match_dup 3) (const_int 16) (const_int 48))] UNSPEC_WQMIAxyn))]
-   "TARGET_REALLY_IWMMXT"
-   "wqmiattn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wqmiaxy")]
- )
- 
- (define_insn "iwmmxt_wmiabb"
-   [(set	(match_operand:DI	                          0 "register_operand" "=y")
- 	(plus:DI (match_operand:DI	                  1 "register_operand" "0")
- 		 (plus:DI
- 		   (mult:DI
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_operand:V4HI 2 "register_operand" "y")
- 				      (parallel [(const_int 0)])))
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_operand:V4HI 3 "register_operand" "y")
- 				      (parallel [(const_int 0)]))))
- 		   (mult:DI
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_dup 2)
- 			              (parallel [(const_int 2)])))
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_dup 3)
- 				      (parallel [(const_int 2)])))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiabb%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiaxy")]
- )
- 
- (define_insn "iwmmxt_wmiabt"
-   [(set	(match_operand:DI	                          0 "register_operand" "=y")
- 	(plus:DI (match_operand:DI	                  1 "register_operand" "0")
- 		 (plus:DI
- 		   (mult:DI
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_operand:V4HI 2 "register_operand" "y")
- 				      (parallel [(const_int 0)])))
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_operand:V4HI 3 "register_operand" "y")
- 				      (parallel [(const_int 1)]))))
- 		   (mult:DI
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_dup 2)
- 				      (parallel [(const_int 2)])))
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_dup 3)
- 				      (parallel [(const_int 3)])))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiabt%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiaxy")]
- )
- 
- (define_insn "iwmmxt_wmiatb"
-   [(set	(match_operand:DI	                          0 "register_operand" "=y")
- 	(plus:DI (match_operand:DI	                  1 "register_operand" "0")
- 		 (plus:DI
- 		   (mult:DI
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_operand:V4HI 2 "register_operand" "y")
- 				      (parallel [(const_int 1)])))
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_operand:V4HI 3 "register_operand" "y")
- 				      (parallel [(const_int 0)]))))
- 		   (mult:DI
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_dup 2)
- 				      (parallel [(const_int 3)])))
- 		     (sign_extend:DI
- 		       (vec_select:HI (match_dup 3)
- 				      (parallel [(const_int 2)])))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiatb%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiaxy")]
- )
- 
- (define_insn "iwmmxt_wmiatt"
-   [(set	(match_operand:DI	                   0 "register_operand" "=y")
-         (plus:DI (match_operand:DI	           1 "register_operand" "0")
-           (plus:DI
-             (mult:DI
-               (sign_extend:DI
-                 (vec_select:HI (match_operand:V4HI 2 "register_operand" "y")
- 	                       (parallel [(const_int 1)])))
- 	      (sign_extend:DI
- 	        (vec_select:HI (match_operand:V4HI 3 "register_operand" "y")
- 	                       (parallel [(const_int 1)]))))
-             (mult:DI
- 	      (sign_extend:DI
-                 (vec_select:HI (match_dup 2)
- 	                       (parallel [(const_int 3)])))
-               (sign_extend:DI
-                 (vec_select:HI (match_dup 3)
- 	                       (parallel [(const_int 3)])))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiatt%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiaxy")]
- )
- 
- (define_insn "iwmmxt_wmiabbn"
-   [(set	(match_operand:DI	                           0 "register_operand" "=y")
- 	(minus:DI (match_operand:DI	                   1 "register_operand" "0")
- 		  (plus:DI
- 		    (mult:DI
- 		      (sign_extend:DI
- 			(vec_select:HI (match_operand:V4HI 2 "register_operand" "y")
- 				       (parallel [(const_int 0)])))
- 		      (sign_extend:DI
- 		        (vec_select:HI (match_operand:V4HI 3 "register_operand" "y")
- 				       (parallel [(const_int 0)]))))
- 		    (mult:DI
- 		      (sign_extend:DI
- 			(vec_select:HI (match_dup 2)
- 				       (parallel [(const_int 2)])))
- 		      (sign_extend:DI
- 		        (vec_select:HI (match_dup 3)
- 				       (parallel [(const_int 2)])))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiabbn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiaxy")]
- )
- 
- (define_insn "iwmmxt_wmiabtn"
-   [(set	(match_operand:DI	                           0 "register_operand" "=y")
- 	(minus:DI (match_operand:DI	                   1 "register_operand" "0")
- 		  (plus:DI
- 		    (mult:DI
- 		      (sign_extend:DI
- 			(vec_select:HI (match_operand:V4HI 2 "register_operand" "y")
- 				       (parallel [(const_int 0)])))
- 		      (sign_extend:DI
- 		        (vec_select:HI (match_operand:V4HI 3 "register_operand" "y")
- 				       (parallel [(const_int 1)]))))
- 		    (mult:DI
- 		      (sign_extend:DI
- 		        (vec_select:HI (match_dup 2)
- 				       (parallel [(const_int 2)])))
- 		      (sign_extend:DI
- 			(vec_select:HI (match_dup 3)
- 				       (parallel [(const_int 3)])))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiabtn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiaxy")]
- )
- 
- (define_insn "iwmmxt_wmiatbn"
-   [(set (match_operand:DI	                           0 "register_operand" "=y")
- 	(minus:DI (match_operand:DI	                   1 "register_operand" "0")
- 		  (plus:DI
- 		    (mult:DI
- 		      (sign_extend:DI
- 			(vec_select:HI (match_operand:V4HI 2 "register_operand" "y")
- 				       (parallel [(const_int 1)])))
- 		      (sign_extend:DI
- 		        (vec_select:HI (match_operand:V4HI 3 "register_operand" "y")
- 				       (parallel [(const_int 0)]))))
- 		    (mult:DI
- 		      (sign_extend:DI
- 		        (vec_select:HI (match_dup 2)
- 				       (parallel [(const_int 3)])))
- 		      (sign_extend:DI
- 			(vec_select:HI (match_dup 3)
- 				       (parallel [(const_int 2)])))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiatbn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiaxy")]
- )
- 
- (define_insn "iwmmxt_wmiattn"
-   [(set (match_operand:DI	                           0 "register_operand" "=y")
- 	(minus:DI (match_operand:DI	                   1 "register_operand" "0")
- 		  (plus:DI
- 		    (mult:DI
- 		      (sign_extend:DI
- 			(vec_select:HI (match_operand:V4HI 2 "register_operand" "y")
- 				       (parallel [(const_int 1)])))
- 		      (sign_extend:DI
- 			(vec_select:HI (match_operand:V4HI 3 "register_operand" "y")
- 				       (parallel [(const_int 1)]))))
- 		    (mult:DI
- 		      (sign_extend:DI
- 			(vec_select:HI (match_dup 2)
- 				       (parallel [(const_int 3)])))
- 		      (sign_extend:DI
- 			(vec_select:HI (match_dup 3)
- 				       (parallel [(const_int 3)])))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiattn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiaxy")]
- )
- 
- (define_insn "iwmmxt_wmiawbb"
-   [(set (match_operand:DI	0 "register_operand" "=y")
- 	(plus:DI
- 	  (match_operand:DI      1 "register_operand" "0")
- 	  (mult:DI
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 2 "register_operand" "y") (parallel [(const_int 0)])))
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 3 "register_operand" "y") (parallel [(const_int 0)]))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiawbb%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiawxy")]
- )
- 
- (define_insn "iwmmxt_wmiawbt"
-   [(set (match_operand:DI	                               0 "register_operand" "=y")
- 	(plus:DI
- 	  (match_operand:DI                                    1 "register_operand" "0")
- 	  (mult:DI
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 2 "register_operand" "y") (parallel [(const_int 0)])))
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 3 "register_operand" "y") (parallel [(const_int 1)]))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiawbt%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiawxy")]
- )
- 
- (define_insn "iwmmxt_wmiawtb"
-   [(set (match_operand:DI	                               0 "register_operand" "=y")
- 	(plus:DI
- 	  (match_operand:DI                                    1 "register_operand" "0")
- 	  (mult:DI
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 2 "register_operand" "y") (parallel [(const_int 1)])))
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 3 "register_operand" "y") (parallel [(const_int 0)]))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiawtb%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiawxy")]
- )
- 
- (define_insn "iwmmxt_wmiawtt"
- [(set (match_operand:DI	                                     0 "register_operand" "=y")
-       (plus:DI
- 	(match_operand:DI                                    1 "register_operand" "0")
- 	(mult:DI
- 	  (sign_extend:DI (vec_select:SI (match_operand:V2SI 2 "register_operand" "y") (parallel [(const_int 1)])))
- 	  (sign_extend:DI (vec_select:SI (match_operand:V2SI 3 "register_operand" "y") (parallel [(const_int 1)]))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiawtt%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiawxy")]
- )
- 
- (define_insn "iwmmxt_wmiawbbn"
-   [(set (match_operand:DI	                               0 "register_operand" "=y")
- 	(minus:DI
- 	  (match_operand:DI                                    1 "register_operand" "0")
- 	  (mult:DI
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 2 "register_operand" "y") (parallel [(const_int 0)])))
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 3 "register_operand" "y") (parallel [(const_int 0)]))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiawbbn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiawxy")]
- )
- 
- (define_insn "iwmmxt_wmiawbtn"
-   [(set (match_operand:DI	                               0 "register_operand" "=y")
- 	(minus:DI
- 	  (match_operand:DI                                    1 "register_operand" "0")
- 	  (mult:DI
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 2 "register_operand" "y") (parallel [(const_int 0)])))
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 3 "register_operand" "y") (parallel [(const_int 1)]))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiawbtn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiawxy")]
- )
- 
- (define_insn "iwmmxt_wmiawtbn"
-   [(set (match_operand:DI	                               0 "register_operand" "=y")
- 	(minus:DI
- 	  (match_operand:DI                                    1 "register_operand" "0")
- 	  (mult:DI
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 2 "register_operand" "y") (parallel [(const_int 1)])))
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 3 "register_operand" "y") (parallel [(const_int 0)]))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiawtbn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiawxy")]
- )
- 
- (define_insn "iwmmxt_wmiawttn"
-   [(set (match_operand:DI	                               0 "register_operand" "=y")
- 	(minus:DI
- 	  (match_operand:DI                                    1 "register_operand" "0")
- 	  (mult:DI
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 2 "register_operand" "y") (parallel [(const_int 1)])))
- 	    (sign_extend:DI (vec_select:SI (match_operand:V2SI 3 "register_operand" "y") (parallel [(const_int 1)]))))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmiawttn%?\\t%0, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmiawxy")]
- )
- 
- (define_insn "iwmmxt_wmerge"
-   [(set (match_operand:DI         0 "register_operand" "=y")
- 	(ior:DI
- 	  (ashift:DI
- 	    (match_operand:DI     2 "register_operand" "y")
- 	    (minus:SI
- 	      (const_int 64)
- 	      (mult:SI
- 	        (match_operand:SI 3 "immediate_operand" "i")
- 		(const_int 8))))
- 	  (lshiftrt:DI
- 	    (ashift:DI
- 	      (match_operand:DI   1 "register_operand" "y")
- 	      (mult:SI
- 	        (match_dup 3)
- 		(const_int 8)))
- 	    (mult:SI
- 	      (match_dup 3)
- 	      (const_int 8)))))]
-   "TARGET_REALLY_IWMMXT"
-   "wmerge%?\\t%0, %1, %2, %3"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_wmerge")]
- )
- 
- (define_insn "iwmmxt_tandc<mode>3"
-   [(set (reg:CC CC_REGNUM)
- 	(subreg:CC (unspec:VMMX [(const_int 0)] UNSPEC_TANDC) 0))
-    (unspec:CC [(reg:SI 15)] UNSPEC_TANDC)]
-   "TARGET_REALLY_IWMMXT"
-   "tandc<MMX_char>%?\\t r15"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_tandc")]
- )
- 
- (define_insn "iwmmxt_torc<mode>3"
-   [(set (reg:CC CC_REGNUM)
- 	(subreg:CC (unspec:VMMX [(const_int 0)] UNSPEC_TORC) 0))
-    (unspec:CC [(reg:SI 15)] UNSPEC_TORC)]
-   "TARGET_REALLY_IWMMXT"
-   "torc<MMX_char>%?\\t r15"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_torc")]
- )
- 
- (define_insn "iwmmxt_torvsc<mode>3"
-   [(set (reg:CC CC_REGNUM)
- 	(subreg:CC (unspec:VMMX [(const_int 0)] UNSPEC_TORVSC) 0))
-    (unspec:CC [(reg:SI 15)] UNSPEC_TORVSC)]
-   "TARGET_REALLY_IWMMXT"
-   "torvsc<MMX_char>%?\\t r15"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_torvsc")]
- )
- 
- (define_insn "iwmmxt_textrc<mode>3"
-   [(set (reg:CC CC_REGNUM)
- 	(subreg:CC (unspec:VMMX [(const_int 0)
- 		                 (match_operand:SI 0 "immediate_operand" "i")] UNSPEC_TEXTRC) 0))
-    (unspec:CC [(reg:SI 15)] UNSPEC_TEXTRC)]
-   "TARGET_REALLY_IWMMXT"
-   "textrc<MMX_char>%?\\t r15, %0"
-   [(set_attr "predicable" "yes")
-    (set_attr "type" "wmmx_textrc")]
- )
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/marvell-f-iwmmxt.md gcc-16-20250518/gcc/config/arm/marvell-f-iwmmxt.md
*** gcc-16-20250511/gcc/config/arm/marvell-f-iwmmxt.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/marvell-f-iwmmxt.md	Thu Jan  1 00:00:00 1970
***************
*** 1,189 ****
- ;; Marvell WMMX2 pipeline description
- ;; Copyright (C) 2011-2025 Free Software Foundation, Inc.
- ;; Written by Marvell, Inc.
- 
- ;; 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/>.
- 
- 
- (define_automaton "marvell_f_iwmmxt")
- 
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Pipelines
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 
- ;; This is a 7-stage pipelines:
- ;;
- ;;    MD | MI | ME1 | ME2 | ME3 | ME4 | MW
- ;;
- ;; There are various bypasses modelled to a greater or lesser extent.
- ;;
- ;; Latencies in this file correspond to the number of cycles after
- ;; the issue stage that it takes for the result of the instruction to
- ;; be computed, or for its side-effects to occur.
- 
- (define_cpu_unit "mf_iwmmxt_MD" "marvell_f_iwmmxt")
- (define_cpu_unit "mf_iwmmxt_MI" "marvell_f_iwmmxt")
- (define_cpu_unit "mf_iwmmxt_ME1" "marvell_f_iwmmxt")
- (define_cpu_unit "mf_iwmmxt_ME2" "marvell_f_iwmmxt")
- (define_cpu_unit "mf_iwmmxt_ME3" "marvell_f_iwmmxt")
- (define_cpu_unit "mf_iwmmxt_ME4" "marvell_f_iwmmxt")
- (define_cpu_unit "mf_iwmmxt_MW" "marvell_f_iwmmxt")
- 
- (define_reservation "mf_iwmmxt_ME"
-       "mf_iwmmxt_ME1,mf_iwmmxt_ME2,mf_iwmmxt_ME3,mf_iwmmxt_ME4"
- )
- 
- (define_reservation "mf_iwmmxt_pipeline"
-       "mf_iwmmxt_MD, mf_iwmmxt_MI, mf_iwmmxt_ME, mf_iwmmxt_MW"
- )
- 
- ;; An attribute to indicate whether our reservations are applicable.
- (define_attr "marvell_f_iwmmxt" "yes,no"
-   (const (if_then_else (symbol_ref "arm_arch_iwmmxt")
-                        (const_string "yes") (const_string "no"))))
- 
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; instruction classes
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 
- ;; An attribute appended to instructions for classification
- 
- (define_attr "wmmxt_shift" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_wror, wmmx_wsll, wmmx_wsra, wmmx_wsrl")
- 		(const_string "yes") (const_string "no"))
- )
- 
- (define_attr "wmmxt_pack" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_waligni, wmmx_walignr, wmmx_wmerge,\
-                                  wmmx_wpack, wmmx_wshufh, wmmx_wunpckeh,\
-                                  wmmx_wunpckih, wmmx_wunpckel, wmmx_wunpckil")
- 		(const_string "yes") (const_string "no"))
- )
- 
- (define_attr "wmmxt_mult_c1" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_wmac, wmmx_wmadd, wmmx_wmiaxy,\
-                                  wmmx_wmiawxy, wmmx_wmulw, wmmx_wqmiaxy,\
-                                  wmmx_wqmulwm")
- 		(const_string "yes") (const_string "no"))
- )
- 
- (define_attr "wmmxt_mult_c2" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_wmul, wmmx_wqmulm")
- 		(const_string "yes") (const_string "no"))
- )
- 
- (define_attr "wmmxt_alu_c1" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_wabs, wmmx_wabsdiff, wmmx_wand,\
-                                  wmmx_wandn, wmmx_wmov, wmmx_wor, wmmx_wxor")
- 	        (const_string "yes") (const_string "no"))
- )
- 
- (define_attr "wmmxt_alu_c2" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_wacc, wmmx_wadd, wmmx_waddsubhx,\
-                                  wmmx_wavg2, wmmx_wavg4, wmmx_wcmpeq,\
-                                  wmmx_wcmpgt, wmmx_wmax, wmmx_wmin,\
-                                  wmmx_wsub, wmmx_waddbhus, wmmx_wsubaddhx")
- 		(const_string "yes") (const_string "no"))
- )
- 
- (define_attr "wmmxt_alu_c3" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_wsad")
- 	        (const_string "yes") (const_string "no"))
- )
- 
- (define_attr "wmmxt_transfer_c1" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_tbcst, wmmx_tinsr,\
-                                  wmmx_tmcr, wmmx_tmcrr")
-                 (const_string "yes") (const_string "no"))
- )
- 
- (define_attr "wmmxt_transfer_c2" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_textrm, wmmx_tmovmsk,\
-                                  wmmx_tmrc, wmmx_tmrrc")
- 	        (const_string "yes") (const_string "no"))
- )
- 
- (define_attr "wmmxt_transfer_c3" "yes,no"
-   (if_then_else (eq_attr "type" "wmmx_tmia, wmmx_tmiaph, wmmx_tmiaxy")
- 	        (const_string "yes") (const_string "no"))
- )
- 
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Main description
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 
- (define_insn_reservation "marvell_f_iwmmxt_alu_c1" 1
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_alu_c1" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- (define_insn_reservation "marvell_f_iwmmxt_pack" 1
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_pack" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- (define_insn_reservation "marvell_f_iwmmxt_shift" 1
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_shift" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- (define_insn_reservation "marvell_f_iwmmxt_transfer_c1" 1
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_transfer_c1" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- (define_insn_reservation "marvell_f_iwmmxt_transfer_c2" 5
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_transfer_c2" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- (define_insn_reservation "marvell_f_iwmmxt_alu_c2" 2
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_alu_c2" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- (define_insn_reservation "marvell_f_iwmmxt_alu_c3" 3
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_alu_c3" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- (define_insn_reservation "marvell_f_iwmmxt_transfer_c3" 4
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_transfer_c3" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- (define_insn_reservation "marvell_f_iwmmxt_mult_c1" 4
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_mult_c1" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- ;There is a forwarding path from ME3 stage
- (define_insn_reservation "marvell_f_iwmmxt_mult_c2" 3
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "wmmxt_mult_c2" "yes"))
-   "mf_iwmmxt_pipeline")
- 
- (define_insn_reservation "marvell_f_iwmmxt_wstr" 0
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "type" "wmmx_wstr"))
-   "mf_iwmmxt_pipeline")
- 
- ;There is a forwarding path from MW stage
- (define_insn_reservation "marvell_f_iwmmxt_wldr" 5
-   (and (eq_attr "marvell_f_iwmmxt" "yes")
-        (eq_attr "type" "wmmx_wldr"))
-   "mf_iwmmxt_pipeline")
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/predicates.md gcc-16-20250518/gcc/config/arm/predicates.md
*** gcc-16-20250511/gcc/config/arm/predicates.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/predicates.md	Sun May 18 22:32:07 2025
***************
*** 806,819 ****
  
  ;;-------------------------------------------------------------------------
  ;;
- ;; iWMMXt predicates
- ;;
- 
- (define_predicate "imm_or_reg_operand"
-   (ior (match_operand 0 "immediate_operand")
-        (match_operand 0 "register_operand")))
- 
  ;; Neon predicates
  
  (define_predicate "const_multiple_of_8_operand"
    (match_code "const_int")
--- 806,813 ----
  
  ;;-------------------------------------------------------------------------
  ;;
  ;; Neon predicates
+ ;;
  
  (define_predicate "const_multiple_of_8_operand"
    (match_code "const_int")
diff -Nrcpad gcc-16-20250511/gcc/config/arm/t-arm gcc-16-20250518/gcc/config/arm/t-arm
*** gcc-16-20250511/gcc/config/arm/t-arm	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/t-arm	Sun May 18 22:32:07 2025
*************** MD_INCLUDES=	$(srcdir)/config/arm/arm102
*** 50,60 ****
  		$(srcdir)/config/arm/fa726te.md \
  		$(srcdir)/config/arm/fmp626.md \
  		$(srcdir)/config/arm/iterators.md \
- 		$(srcdir)/config/arm/iwmmxt.md \
- 		$(srcdir)/config/arm/iwmmxt2.md \
  		$(srcdir)/config/arm/ldmstm.md \
  		$(srcdir)/config/arm/ldrdstrd.md \
- 		$(srcdir)/config/arm/marvell-f-iwmmxt.md \
  		$(srcdir)/config/arm/mve.md \
  		$(srcdir)/config/arm/neon.md \
  		$(srcdir)/config/arm/predicates.md \
--- 50,57 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/thumb2.md gcc-16-20250518/gcc/config/arm/thumb2.md
*** gcc-16-20250511/gcc/config/arm/thumb2.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/thumb2.md	Sun May 18 22:32:07 2025
***************
*** 235,241 ****
  (define_insn "*thumb2_movsi_insn"
    [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,l,r,r,lk*r,m")
  	(match_operand:SI 1 "general_operand"	   "rk,I,Py,K,j,mi,lk*r"))]
!   "TARGET_THUMB2 && !TARGET_IWMMXT && !TARGET_HARD_FLOAT
     && (   register_operand (operands[0], SImode)
         || register_operand (operands[1], SImode))"
  {
--- 235,241 ----
  (define_insn "*thumb2_movsi_insn"
    [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,l,r,r,lk*r,m")
  	(match_operand:SI 1 "general_operand"	   "rk,I,Py,K,j,mi,lk*r"))]
!   "TARGET_THUMB2 && !TARGET_HARD_FLOAT
     && (   register_operand (operands[0], SImode)
         || register_operand (operands[1], SImode))"
  {
diff -Nrcpad gcc-16-20250511/gcc/config/arm/types.md gcc-16-20250518/gcc/config/arm/types.md
*** gcc-16-20250511/gcc/config/arm/types.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/types.md	Sun May 18 22:32:07 2025
***************
*** 184,253 ****
  ; untyped            insn without type information - default, and error,
  ;                    case.
  ;
- ; The classification below is for instructions used by the Wireless MMX
- ; Technology. Each attribute value is used to classify an instruction of the
- ; same name or family.
- ;
- ; wmmx_tandc
- ; wmmx_tbcst
- ; wmmx_textrc
- ; wmmx_textrm
- ; wmmx_tinsr
- ; wmmx_tmcr
- ; wmmx_tmcrr
- ; wmmx_tmia
- ; wmmx_tmiaph
- ; wmmx_tmiaxy
- ; wmmx_tmrc
- ; wmmx_tmrrc
- ; wmmx_tmovmsk
- ; wmmx_torc
- ; wmmx_torvsc
- ; wmmx_wabs
- ; wmmx_wdiff
- ; wmmx_wacc
- ; wmmx_wadd
- ; wmmx_waddbhus
- ; wmmx_waddsubhx
- ; wmmx_waligni
- ; wmmx_walignr
- ; wmmx_wand
- ; wmmx_wandn
- ; wmmx_wavg2
- ; wmmx_wavg4
- ; wmmx_wcmpeq
- ; wmmx_wcmpgt
- ; wmmx_wmac
- ; wmmx_wmadd
- ; wmmx_wmax
- ; wmmx_wmerge
- ; wmmx_wmiawxy
- ; wmmx_wmiaxy
- ; wmmx_wmin
- ; wmmx_wmov
- ; wmmx_wmul
- ; wmmx_wmulw
- ; wmmx_wldr
- ; wmmx_wor
- ; wmmx_wpack
- ; wmmx_wqmiaxy
- ; wmmx_wqmulm
- ; wmmx_wqmulwm
- ; wmmx_wror
- ; wmmx_wsad
- ; wmmx_wshufh
- ; wmmx_wsll
- ; wmmx_wsra
- ; wmmx_wsrl
- ; wmmx_wstr
- ; wmmx_wsub
- ; wmmx_wsubaddhx
- ; wmmx_wunpckeh
- ; wmmx_wunpckel
- ; wmmx_wunpckih
- ; wmmx_wunpckil
- ; wmmx_wxor
- ;
  ; The classification below is for NEON instructions. If a new neon type is
  ; added, please ensure this is added to the is_neon_type attribute below too.
  ;
--- 184,189 ----
***************
*** 714,778 ****
    umull,\
    umulls,\
    untyped,\
-   wmmx_tandc,\
-   wmmx_tbcst,\
-   wmmx_textrc,\
-   wmmx_textrm,\
-   wmmx_tinsr,\
-   wmmx_tmcr,\
-   wmmx_tmcrr,\
-   wmmx_tmia,\
-   wmmx_tmiaph,\
-   wmmx_tmiaxy,\
-   wmmx_tmrc,\
-   wmmx_tmrrc,\
-   wmmx_tmovmsk,\
-   wmmx_torc,\
-   wmmx_torvsc,\
-   wmmx_wabs,\
-   wmmx_wabsdiff,\
-   wmmx_wacc,\
-   wmmx_wadd,\
-   wmmx_waddbhus,\
-   wmmx_waddsubhx,\
-   wmmx_waligni,\
-   wmmx_walignr,\
-   wmmx_wand,\
-   wmmx_wandn,\
-   wmmx_wavg2,\
-   wmmx_wavg4,\
-   wmmx_wcmpeq,\
-   wmmx_wcmpgt,\
-   wmmx_wmac,\
-   wmmx_wmadd,\
-   wmmx_wmax,\
-   wmmx_wmerge,\
-   wmmx_wmiawxy,\
-   wmmx_wmiaxy,\
-   wmmx_wmin,\
-   wmmx_wmov,\
-   wmmx_wmul,\
-   wmmx_wmulw,\
-   wmmx_wldr,\
-   wmmx_wor,\
-   wmmx_wpack,\
-   wmmx_wqmiaxy,\
-   wmmx_wqmulm,\
-   wmmx_wqmulwm,\
-   wmmx_wror,\
-   wmmx_wsad,\
-   wmmx_wshufh,\
-   wmmx_wsll,\
-   wmmx_wsra,\
-   wmmx_wsrl,\
-   wmmx_wstr,\
-   wmmx_wsub,\
-   wmmx_wsubaddhx,\
-   wmmx_wunpckeh,\
-   wmmx_wunpckel,\
-   wmmx_wunpckih,\
-   wmmx_wunpckil,\
-   wmmx_wxor,\
  \
    neon_add,\
    neon_add_q,\
--- 650,655 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/unspecs.md gcc-16-20250518/gcc/config/arm/unspecs.md
*** gcc-16-20250511/gcc/config/arm/unspecs.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/unspecs.md	Sun May 18 22:32:07 2025
***************
*** 21,27 ****
  ;; UNSPEC Usage:
  ;; Note: sin and cos are no-longer used.
  ;; Unspec enumerators for Neon are defined in neon.md.
- ;; Unspec enumerators for iwmmxt2 are defined in iwmmxt2.md
  
  (define_c_enum "unspec" [
    UNSPEC_PUSH_MULT      ; `push multiple' operation:
--- 21,26 ----
***************
*** 42,58 ****
                          ; and stack frame generation.  Operand 0 is the
                          ; register to "use".
    UNSPEC_CHECK_ARCH     ; Set CCs to indicate 26-bit or 32-bit mode.
-   UNSPEC_WSHUFH         ; Used by the intrinsic form of the iWMMXt WSHUFH instruction.
-   UNSPEC_WACC           ; Used by the intrinsic form of the iWMMXt WACC instruction.
-   UNSPEC_TMOVMSK        ; Used by the intrinsic form of the iWMMXt TMOVMSK instruction.
-   UNSPEC_WSAD           ; Used by the intrinsic form of the iWMMXt WSAD instruction.
-   UNSPEC_WSADZ          ; Used by the intrinsic form of the iWMMXt WSADZ instruction.
-   UNSPEC_WMACS          ; Used by the intrinsic form of the iWMMXt WMACS instruction.
-   UNSPEC_WMACU          ; Used by the intrinsic form of the iWMMXt WMACU instruction.
-   UNSPEC_WMACSZ         ; Used by the intrinsic form of the iWMMXt WMACSZ instruction.
-   UNSPEC_WMACUZ         ; Used by the intrinsic form of the iWMMXt WMACUZ instruction.
-   UNSPEC_CLRDI          ; Used by the intrinsic form of the iWMMXt CLRDI instruction.
-   UNSPEC_WALIGNI        ; Used by the intrinsic form of the iWMMXt WALIGN instruction.
    UNSPEC_TLS            ; A symbol that has been treated properly for TLS usage.
    UNSPEC_PIC_LABEL      ; A label used for PIC access that does not appear in the
                          ; instruction stream.
--- 41,46 ----
***************
*** 164,181 ****
  
  
  (define_c_enum "unspec" [
-   UNSPEC_WADDC		; Used by the intrinsic form of the iWMMXt WADDC instruction.
-   UNSPEC_WABS		; Used by the intrinsic form of the iWMMXt WABS instruction.
-   UNSPEC_WQMULWMR	; Used by the intrinsic form of the iWMMXt WQMULWMR instruction.
-   UNSPEC_WQMULMR	; Used by the intrinsic form of the iWMMXt WQMULMR instruction.
-   UNSPEC_WQMULWM	; Used by the intrinsic form of the iWMMXt WQMULWM instruction.
-   UNSPEC_WQMULM		; Used by the intrinsic form of the iWMMXt WQMULM instruction.
-   UNSPEC_WQMIAxyn	; Used by the intrinsic form of the iWMMXt WMIAxyn instruction.
-   UNSPEC_WQMIAxy	; Used by the intrinsic form of the iWMMXt WMIAxy instruction.
-   UNSPEC_TANDC		; Used by the intrinsic form of the iWMMXt TANDC instruction.
-   UNSPEC_TORC		; Used by the intrinsic form of the iWMMXt TORC instruction.
-   UNSPEC_TORVSC		; Used by the intrinsic form of the iWMMXt TORVSC instruction.
-   UNSPEC_TEXTRC		; Used by the intrinsic form of the iWMMXt TEXTRC instruction.
    UNSPEC_GET_FPSCR_NZCVQC	; Represent fetch of FPSCR_nzcvqc content.
  ])
  
--- 152,157 ----
***************
*** 205,216 ****
                          ;   a 64-bit object.
    VUNSPEC_POOL_16       ; `pool-entry(16)'.  An entry in the constant pool for
                          ;   a 128-bit object.
-   VUNSPEC_TMRC          ; Used by the iWMMXt TMRC instruction.
-   VUNSPEC_TMCR          ; Used by the iWMMXt TMCR instruction.
    VUNSPEC_ALIGN8        ; 8-byte alignment version of VUNSPEC_ALIGN
-   VUNSPEC_WCMP_EQ       ; Used by the iWMMXt WCMPEQ instructions
-   VUNSPEC_WCMP_GTU      ; Used by the iWMMXt WCMPGTU instructions
-   VUNSPEC_WCMP_GT       ; Used by the iwMMXT WCMPGT instructions
    VUNSPEC_EH_RETURN     ; Use to override the return address for exception
                          ; handling.
    VUNSPEC_ATOMIC_CAS	; Represent an atomic compare swap.
--- 181,187 ----
diff -Nrcpad gcc-16-20250511/gcc/config/arm/vec-common.md gcc-16-20250518/gcc/config/arm/vec-common.md
*** gcc-16-20250511/gcc/config/arm/vec-common.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/arm/vec-common.md	Sun May 18 22:32:07 2025
***************
*** 1,4 ****
! ;; Machine Description for shared bits common to IWMMXT and Neon.
  ;; Copyright (C) 2006-2025 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
--- 1,4 ----
! ;; Machine Description for shared bits common to Neon and MVE.
  ;; Copyright (C) 2006-2025 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
***************
*** 24,30 ****
    [(set (match_operand:VNIM1 0 "nonimmediate_operand")
  	(match_operand:VNIM1 1 "general_operand"))]
    "TARGET_NEON
-    || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))
     || (TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
     || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))"
     {
--- 24,29 ----
***************
*** 46,53 ****
  (define_expand "mov<mode>"
    [(set (match_operand:VNINOTM1 0 "nonimmediate_operand")
  	(match_operand:VNINOTM1 1 "general_operand"))]
!   "TARGET_NEON
!    || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
  {
    gcc_checking_assert (aligned_operand (operands[0], <MODE>mode));
    gcc_checking_assert (aligned_operand (operands[1], <MODE>mode));
--- 45,51 ----
  (define_expand "mov<mode>"
    [(set (match_operand:VNINOTM1 0 "nonimmediate_operand")
  	(match_operand:VNINOTM1 1 "general_operand"))]
!   "TARGET_NEON"
  {
    gcc_checking_assert (aligned_operand (operands[0], <MODE>mode));
    gcc_checking_assert (aligned_operand (operands[1], <MODE>mode));
***************
*** 83,89 ****
  })
  
  ;; Vector arithmetic.  Expanders are blank, then unnamed insns implement
! ;; patterns separately for Neon, IWMMXT and MVE.
  
  (define_expand "add<mode>3"
    [(set (match_operand:VDQ 0 "s_register_operand")
--- 81,87 ----
  })
  
  ;; Vector arithmetic.  Expanders are blank, then unnamed insns implement
! ;; patterns separately for Neon and MVE.
  
  (define_expand "add<mode>3"
    [(set (match_operand:VDQ 0 "s_register_operand")
***************
*** 103,112 ****
    [(set (match_operand:VDQWH 0 "s_register_operand")
  	(mult:VDQWH (match_operand:VDQWH 1 "s_register_operand")
  		    (match_operand:VDQWH 2 "s_register_operand")))]
!   "ARM_HAVE_<MODE>_ARITH
!    && (!TARGET_REALLY_IWMMXT
!        || <MODE>mode == V4HImode
!        || <MODE>mode == V2SImode)"
  )
  
  (define_expand "smin<mode>3"
--- 101,107 ----
    [(set (match_operand:VDQWH 0 "s_register_operand")
  	(mult:VDQWH (match_operand:VDQWH 1 "s_register_operand")
  		    (match_operand:VDQWH 2 "s_register_operand")))]
!   "ARM_HAVE_<MODE>_ARITH"
  )
  
  (define_expand "smin<mode>3"
***************
*** 216,228 ****
  (define_expand "one_cmpl<mode>2"
    [(set (match_operand:VDQ 0 "s_register_operand")
  	(not:VDQ (match_operand:VDQ 1 "s_register_operand")))]
!   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
  )
  
  (define_expand "<absneg_str><mode>2"
    [(set (match_operand:VDQWH 0 "s_register_operand" "")
  	(ABSNEG:VDQWH (match_operand:VDQWH 1 "s_register_operand" "")))]
!   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
  )
  
  (define_expand "cadd<rot><mode>3"
--- 211,223 ----
  (define_expand "one_cmpl<mode>2"
    [(set (match_operand:VDQ 0 "s_register_operand")
  	(not:VDQ (match_operand:VDQ 1 "s_register_operand")))]
!   "ARM_HAVE_<MODE>_ARITH"
  )
  
  (define_expand "<absneg_str><mode>2"
    [(set (match_operand:VDQWH 0 "s_register_operand" "")
  	(ABSNEG:VDQWH (match_operand:VDQWH 1 "s_register_operand" "")))]
!   "ARM_HAVE_<MODE>_ARITH"
  )
  
  (define_expand "cadd<rot><mode>3"
***************
*** 295,302 ****
   [(set (match_operand:VDQ 0 "nonimmediate_operand")
  	(unspec:VDQ [(match_operand:VDQ 1 "general_operand")]
  	 UNSPEC_MISALIGNED_ACCESS))]
!  "ARM_HAVE_<MODE>_LDST && !BYTES_BIG_ENDIAN
!   && unaligned_access && !TARGET_REALLY_IWMMXT"
  {
    rtx *memloc;
    bool for_store = false;
--- 290,296 ----
   [(set (match_operand:VDQ 0 "nonimmediate_operand")
  	(unspec:VDQ [(match_operand:VDQ 1 "general_operand")]
  	 UNSPEC_MISALIGNED_ACCESS))]
!  "ARM_HAVE_<MODE>_LDST && !BYTES_BIG_ENDIAN && unaligned_access"
  {
    rtx *memloc;
    bool for_store = false;
***************
*** 373,379 ****
  	(unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "w,w")
  		       (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Ds")]
  	 VSHLQ))]
!   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
    "@
     <mve_insn>.<supf>%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
     * return neon_output_shift_immediate (\"vshl\", 'i', &operands[2], <MODE>mode, VALID_NEON_QREG_MODE (<MODE>mode), true);"
--- 367,373 ----
  	(unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "w,w")
  		       (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Ds")]
  	 VSHLQ))]
!   "ARM_HAVE_<MODE>_ARITH"
    "@
     <mve_insn>.<supf>%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
     * return neon_output_shift_immediate (\"vshl\", 'i', &operands[2], <MODE>mode, VALID_NEON_QREG_MODE (<MODE>mode), true);"
***************
*** 385,391 ****
    [(set (match_operand:VDQIW 0 "s_register_operand" "")
  	(ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "")
  		      (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "")))]
!   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
  {
    emit_insn (gen_mve_vshlq_u<mode> (operands[0], operands[1], operands[2]));
    DONE;
--- 379,385 ----
    [(set (match_operand:VDQIW 0 "s_register_operand" "")
  	(ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "")
  		      (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "")))]
!   "ARM_HAVE_<MODE>_ARITH"
  {
    emit_insn (gen_mve_vshlq_u<mode> (operands[0], operands[1], operands[2]));
    DONE;
***************
*** 398,404 ****
    [(set (match_operand:VDQIW 0 "s_register_operand")
  	(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
  			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
!   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
  {
    if (s_register_operand (operands[2], <MODE>mode))
      {
--- 392,398 ----
    [(set (match_operand:VDQIW 0 "s_register_operand")
  	(ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
  			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
!   "ARM_HAVE_<MODE>_ARITH"
  {
    if (s_register_operand (operands[2], <MODE>mode))
      {
***************
*** 416,422 ****
    [(set (match_operand:VDQIW 0 "s_register_operand")
  	(lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
  			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
!   "ARM_HAVE_<MODE>_ARITH && !TARGET_REALLY_IWMMXT"
  {
    if (s_register_operand (operands[2], <MODE>mode))
      {
--- 410,416 ----
    [(set (match_operand:VDQIW 0 "s_register_operand")
  	(lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand")
  			(match_operand:VDQIW 2 "imm_rshift_or_reg_neon")))]
!   "ARM_HAVE_<MODE>_ARITH"
  {
    if (s_register_operand (operands[2], <MODE>mode))
      {
***************
*** 606,613 ****
  (define_expand "clz<mode>2"
   [(set (match_operand:VDQIW 0 "s_register_operand")
         (clz:VDQIW (match_operand:VDQIW 1 "s_register_operand")))]
!   "ARM_HAVE_<MODE>_ARITH
!    && !TARGET_REALLY_IWMMXT"
  )
  (define_expand "vec_init<mode><V_elem_l>"
    [(match_operand:VDQX 0 "s_register_operand")
--- 600,606 ----
  (define_expand "clz<mode>2"
   [(set (match_operand:VDQIW 0 "s_register_operand")
         (clz:VDQIW (match_operand:VDQIW 1 "s_register_operand")))]
!   "ARM_HAVE_<MODE>_ARITH"
  )
  (define_expand "vec_init<mode><V_elem_l>"
    [(match_operand:VDQX 0 "s_register_operand")
diff -Nrcpad gcc-16-20250511/gcc/config/avr/avr-passes.cc gcc-16-20250518/gcc/config/avr/avr-passes.cc
*** gcc-16-20250511/gcc/config/avr/avr-passes.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/avr/avr-passes.cc	Sun May 18 22:32:07 2025
*************** bbinfo_t::optimize_one_block (bool &chan
*** 3167,3174 ****
  		    || (bbinfo_t::try_split_any_p && od.try_split_any (this))
  		    || (bbinfo_t::try_mem0_p && od.try_mem0 (this)));
  
!       rtx_insn *new_insns = get_insns ();
!       end_sequence ();
  
        gcc_assert (found == (od.n_new_insns >= 0));
  
--- 3167,3173 ----
  		    || (bbinfo_t::try_split_any_p && od.try_split_any (this))
  		    || (bbinfo_t::try_mem0_p && od.try_mem0 (this)));
  
!       rtx_insn *new_insns = end_sequence ();
  
        gcc_assert (found == (od.n_new_insns >= 0));
  
*************** avr_parallel_insn_from_insns (rtx_insn *
*** 3943,3952 ****
  			 PATTERN (i[3]), PATTERN (i[4]));
    start_sequence ();
    emit (gen_rtx_PARALLEL (VOIDmode, vec));
!   rtx_insn *insn = get_insns ();
!   end_sequence ();
! 
!   return insn;
  }
  
  
--- 3942,3948 ----
  			 PATTERN (i[3]), PATTERN (i[4]));
    start_sequence ();
    emit (gen_rtx_PARALLEL (VOIDmode, vec));
!   return end_sequence ();
  }
  
  
diff -Nrcpad gcc-16-20250511/gcc/config/avr/avr.cc gcc-16-20250518/gcc/config/avr/avr.cc
*** gcc-16-20250511/gcc/config/avr/avr.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/avr/avr.cc	Sun May 18 22:32:07 2025
*************** avr_prologue_setup_frame (HOST_WIDE_INT
*** 1660,1667 ****
  							-size_cfa)));
  	    }
  
! 	  fp_plus_insns = get_insns ();
! 	  end_sequence ();
  
  	  /************  Method 2: Adjust Stack pointer  ************/
  
--- 1660,1666 ----
  							-size_cfa)));
  	    }
  
! 	  fp_plus_insns = end_sequence ();
  
  	  /************  Method 2: Adjust Stack pointer  ************/
  
*************** avr_prologue_setup_frame (HOST_WIDE_INT
*** 1693,1700 ****
  		  RTX_FRAME_RELATED_P (insn) = 1;
  		}
  
! 	      sp_plus_insns = get_insns ();
! 	      end_sequence ();
  
  	      /************ Use shortest method  ************/
  
--- 1692,1698 ----
  		  RTX_FRAME_RELATED_P (insn) = 1;
  		}
  
! 	      sp_plus_insns = end_sequence ();
  
  	      /************ Use shortest method  ************/
  
*************** avr_expand_epilogue (bool sibcall_p)
*** 2060,2067 ****
        emit_insn (gen_movhi_sp_r (stack_pointer_rtx, fp,
  				 GEN_INT (irq_state)));
  
!       rtx_insn *fp_plus_insns = get_insns ();
!       end_sequence ();
  
        /********** Method 2: Adjust Stack pointer  **********/
  
--- 2058,2064 ----
        emit_insn (gen_movhi_sp_r (stack_pointer_rtx, fp,
  				 GEN_INT (irq_state)));
  
!       rtx_insn *fp_plus_insns = end_sequence ();
  
        /********** Method 2: Adjust Stack pointer  **********/
  
*************** avr_expand_epilogue (bool sibcall_p)
*** 2072,2079 ****
  	  emit_move_insn (stack_pointer_rtx,
  			  plus_constant (Pmode, stack_pointer_rtx, size));
  
! 	  rtx_insn *sp_plus_insns = get_insns ();
! 	  end_sequence ();
  
  	  /************ Use shortest method  ************/
  
--- 2069,2075 ----
  	  emit_move_insn (stack_pointer_rtx,
  			  plus_constant (Pmode, stack_pointer_rtx, size));
  
! 	  rtx_insn *sp_plus_insns = end_sequence ();
  
  	  /************ Use shortest method  ************/
  
diff -Nrcpad gcc-16-20250511/gcc/config/bfin/bfin.cc gcc-16-20250518/gcc/config/bfin/bfin.cc
*** gcc-16-20250511/gcc/config/bfin/bfin.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/bfin/bfin.cc	Sun May 18 22:32:07 2025
*************** hwloop_optimize (hwloop_info loop)
*** 3784,3791 ****
  	}
      }
  
!   seq = get_insns ();
!   end_sequence ();
  
    if (loop->incoming_src)
      {
--- 3784,3790 ----
  	}
      }
  
!   seq = end_sequence ();
  
    if (loop->incoming_src)
      {
diff -Nrcpad gcc-16-20250511/gcc/config/c6x/c6x.cc gcc-16-20250518/gcc/config/c6x/c6x.cc
*** gcc-16-20250511/gcc/config/c6x/c6x.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/c6x/c6x.cc	Sun May 18 22:32:07 2025
*************** c6x_expand_compare (rtx comparison, mach
*** 1582,1589 ****
  
  	  cmp = emit_library_call_value (libfunc, 0, LCT_CONST, SImode,
  					 op0, op_mode, op1, op_mode);
! 	  insns = get_insns ();
! 	  end_sequence ();
  
  	  emit_libcall_block (insns, cmp, cmp,
  			      gen_rtx_fmt_ee (code, SImode, op0, op1));
--- 1582,1588 ----
  
  	  cmp = emit_library_call_value (libfunc, 0, LCT_CONST, SImode,
  					 op0, op_mode, op1, op_mode);
! 	  insns = end_sequence ();
  
  	  emit_libcall_block (insns, cmp, cmp,
  			      gen_rtx_fmt_ee (code, SImode, op0, op1));
diff -Nrcpad gcc-16-20250511/gcc/config/cris/cris.cc gcc-16-20250518/gcc/config/cris/cris.cc
*** gcc-16-20250511/gcc/config/cris/cris.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/cris/cris.cc	Sun May 18 22:32:07 2025
*************** cris_split_movdx (rtx *operands)
*** 2692,2699 ****
    else
      internal_error ("unknown dest");
  
!   val = get_insns ();
!   end_sequence ();
    return val;
  }
  
--- 2692,2698 ----
    else
      internal_error ("unknown dest");
  
!   val = end_sequence ();
    return val;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/config/cris/cris.md gcc-16-20250518/gcc/config/cris/cris.md
*** gcc-16-20250511/gcc/config/cris/cris.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/cris/cris.md	Sun May 18 22:32:07 2025
***************
*** 539,546 ****
  		      operand_subword (op1, 0, 1, DImode));
        emit_move_insn (operand_subword (op0, 1, 1, DImode),
  		      operand_subword (op1, 1, 1, DImode));
!       insns = get_insns ();
!       end_sequence ();
  
        emit_insn (insns);
        DONE;
--- 539,545 ----
  		      operand_subword (op1, 0, 1, DImode));
        emit_move_insn (operand_subword (op0, 1, 1, DImode),
  		      operand_subword (op1, 1, 1, DImode));
!       insns = end_sequence ();
  
        emit_insn (insns);
        DONE;
diff -Nrcpad gcc-16-20250511/gcc/config/csky/csky.cc gcc-16-20250518/gcc/config/csky/csky.cc
*** gcc-16-20250511/gcc/config/csky/csky.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/csky/csky.cc	Sun May 18 22:32:07 2025
*************** csky_call_tls_get_addr (rtx x, rtx reg,
*** 2899,2906 ****
    *valuep = emit_library_call_value (get_tls_get_addr (),
  				     NULL_RTX, LCT_PURE, /* LCT_CONST?	*/
  				     Pmode, reg, Pmode);
!   insns = get_insns ();
!   end_sequence ();
    return insns;
  }
  
--- 2899,2905 ----
    *valuep = emit_library_call_value (get_tls_get_addr (),
  				     NULL_RTX, LCT_PURE, /* LCT_CONST?	*/
  				     Pmode, reg, Pmode);
!   insns = end_sequence ();
    return insns;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/config/epiphany/resolve-sw-modes.cc gcc-16-20250518/gcc/config/epiphany/resolve-sw-modes.cc
*** gcc-16-20250511/gcc/config/epiphany/resolve-sw-modes.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/epiphany/resolve-sw-modes.cc	Sun May 18 22:32:07 2025
*************** pass_resolve_sw_modes::execute (function
*** 169,176 ****
  	  emit_set_fp_mode (EPIPHANY_MSW_ENTITY_ROUND_UNKNOWN,
  			    jilted_mode, FP_MODE_NONE,
  			    reg_class_contents[NO_REGS]);
! 	  seq = get_insns ();
! 	  end_sequence ();
  	  need_commit = true;
  	  insert_insn_on_edge (seq, e);
  	}
--- 169,175 ----
  	  emit_set_fp_mode (EPIPHANY_MSW_ENTITY_ROUND_UNKNOWN,
  			    jilted_mode, FP_MODE_NONE,
  			    reg_class_contents[NO_REGS]);
! 	  seq = end_sequence ();
  	  need_commit = true;
  	  insert_insn_on_edge (seq, e);
  	}
diff -Nrcpad gcc-16-20250511/gcc/config/fr30/fr30.cc gcc-16-20250518/gcc/config/fr30/fr30.cc
*** gcc-16-20250511/gcc/config/fr30/fr30.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/fr30/fr30.cc	Sun May 18 22:32:07 2025
*************** fr30_move_double (rtx * operands)
*** 976,983 ****
      /* This should have been prevented by the constraints on movdi_insn.  */
      gcc_unreachable ();
  
!   val = get_insns ();
!   end_sequence ();
  
    return val;
  }
--- 976,982 ----
      /* This should have been prevented by the constraints on movdi_insn.  */
      gcc_unreachable ();
  
!   val = end_sequence ();
  
    return val;
  }
diff -Nrcpad gcc-16-20250511/gcc/config/frv/frv.cc gcc-16-20250518/gcc/config/frv/frv.cc
*** gcc-16-20250511/gcc/config/frv/frv.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/frv/frv.cc	Sun May 18 22:32:07 2025
*************** frv_split_scc (rtx dest, rtx test, rtx c
*** 4759,4766 ****
  				gen_rtx_SET (dest, const0_rtx)));
  
    /* Finish up, return sequence.  */
!   ret = get_insns ();
!   end_sequence ();
    return ret;
  }
  
--- 4759,4765 ----
  				gen_rtx_SET (dest, const0_rtx)));
  
    /* Finish up, return sequence.  */
!   ret = end_sequence ();
    return ret;
  }
  
*************** frv_split_cond_move (rtx operands[])
*** 4931,4938 ****
      }
  
    /* Finish up, return sequence.  */
!   ret = get_insns ();
!   end_sequence ();
    return ret;
  }
  
--- 4930,4936 ----
      }
  
    /* Finish up, return sequence.  */
!   ret = end_sequence ();
    return ret;
  }
  
*************** frv_split_minmax (rtx operands[])
*** 5062,5069 ****
      }
  
    /* Finish up, return sequence.  */
!   ret = get_insns ();
!   end_sequence ();
    return ret;
  }
  
--- 5060,5066 ----
      }
  
    /* Finish up, return sequence.  */
!   ret = end_sequence ();
    return ret;
  }
  
*************** frv_split_abs (rtx operands[])
*** 5101,5108 ****
  				  gen_rtx_SET (dest, src)));
  
    /* Finish up, return sequence.  */
!   ret = get_insns ();
!   end_sequence ();
    return ret;
  }
  
--- 5098,5104 ----
  				  gen_rtx_SET (dest, src)));
  
    /* Finish up, return sequence.  */
!   ret = end_sequence ();
    return ret;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/config/frv/frv.md gcc-16-20250518/gcc/config/frv/frv.md
*** gcc-16-20250511/gcc/config/frv/frv.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/frv/frv.md	Sun May 18 22:32:07 2025
***************
*** 2009,2016 ****
  				gen_rtx_NE (CC_CCRmode, icr, const0_rtx),
  				gen_rtx_SET (dest, const0_rtx)));
  
!   operands[3] = get_insns ();
!   end_sequence ();
  }")
  
  ;; Reload CC_UNSmode for unsigned integer comparisons
--- 2009,2015 ----
  				gen_rtx_NE (CC_CCRmode, icr, const0_rtx),
  				gen_rtx_SET (dest, const0_rtx)));
  
!   operands[3] = end_sequence ();
  }")
  
  ;; Reload CC_UNSmode for unsigned integer comparisons
***************
*** 2074,2081 ****
  				gen_rtx_NE (CC_CCRmode, icr, const0_rtx),
  				gen_rtx_SET (dest, const0_rtx)));
  
!   operands[3] = get_insns ();
!   end_sequence ();
  }")
  
  ;; Reload CC_NZmode.  This is mostly the same as the CCmode and CC_UNSmode
--- 2073,2079 ----
  				gen_rtx_NE (CC_CCRmode, icr, const0_rtx),
  				gen_rtx_SET (dest, const0_rtx)));
  
!   operands[3] = end_sequence ();
  }")
  
  ;; Reload CC_NZmode.  This is mostly the same as the CCmode and CC_UNSmode
***************
*** 2245,2252 ****
  
    emit_insn (gen_andsi3 (int_op0, int_op0, GEN_INT (CC_MASK)));
  
!   operands[2] = get_insns ();
!   end_sequence ();
  }")
  
  ;; Move a gpr value to FCC.
--- 2243,2249 ----
  
    emit_insn (gen_andsi3 (int_op0, int_op0, GEN_INT (CC_MASK)));
  
!   operands[2] = end_sequence ();
  }")
  
  ;; Move a gpr value to FCC.
***************
*** 2329,2336 ****
  					    const0_rtx),
  				gen_rtx_SET (int_op0, const0_rtx)));
  
!   operands[2] = get_insns ();
!   end_sequence ();
  }")
  
  (define_split
--- 2326,2332 ----
  					    const0_rtx),
  				gen_rtx_SET (int_op0, const0_rtx)));
  
!   operands[2] = end_sequence ();
  }")
  
  (define_split
***************
*** 2357,2364 ****
    if (! ICR_P (REGNO (operands[0])))
      emit_insn (gen_movcc_ccr (operands[0], icr));
  
!   operands[2] = get_insns ();
!   end_sequence ();
  }")
  
  
--- 2353,2359 ----
    if (! ICR_P (REGNO (operands[0])))
      emit_insn (gen_movcc_ccr (operands[0], icr));
  
!   operands[2] = end_sequence ();
  }")
  
  
diff -Nrcpad gcc-16-20250511/gcc/config/gcn/gcn.cc gcc-16-20250518/gcc/config/gcn/gcn.cc
*** gcc-16-20250511/gcc/config/gcn/gcn.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/gcn/gcn.cc	Sun May 18 22:32:07 2025
*************** move_callee_saved_registers (rtx sp, mac
*** 3096,3103 ****
  	saved_scalars++;
        }
  
!   rtx move_scalars = get_insns ();
!   end_sequence ();
    start_sequence ();
  
    /* Ensure that all vector lanes are moved.  */
--- 3096,3102 ----
  	saved_scalars++;
        }
  
!   rtx move_scalars = end_sequence ();
    start_sequence ();
  
    /* Ensure that all vector lanes are moved.  */
*************** move_callee_saved_registers (rtx sp, mac
*** 3232,3239 ****
  	offset += size;
        }
  
!   rtx move_vectors = get_insns ();
!   end_sequence ();
  
    if (prologue)
      {
--- 3231,3237 ----
  	offset += size;
        }
  
!   rtx move_vectors = end_sequence ();
  
    if (prologue)
      {
*************** gcn_expand_prologue ()
*** 3360,3367 ****
  						 + offsets->callee_saves))));
  	}
  
!       rtx_insn *seq = get_insns ();
!       end_sequence ();
  
        emit_insn (seq);
      }
--- 3358,3364 ----
  						 + offsets->callee_saves))));
  	}
  
!       rtx_insn *seq = end_sequence ();
  
        emit_insn (seq);
      }
*************** gcn_restore_exec (rtx_insn *insn, rtx_in
*** 5860,5867 ****
  	{
  	  start_sequence ();
  	  emit_move_insn (exec_save_reg, exec_reg);
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  
  	  emit_insn_after (seq, last_exec_def);
  	  if (dump_file && (dump_flags & TDF_DETAILS))
--- 5857,5863 ----
  	{
  	  start_sequence ();
  	  emit_move_insn (exec_save_reg, exec_reg);
! 	  rtx_insn *seq = end_sequence ();
  
  	  emit_insn_after (seq, last_exec_def);
  	  if (dump_file && (dump_flags & TDF_DETAILS))
*************** gcn_restore_exec (rtx_insn *insn, rtx_in
*** 5877,5884 ****
    /* Restore EXEC register before the usage.  */
    start_sequence ();
    emit_move_insn (exec_reg, exec);
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
    emit_insn_before (seq, insn);
  
    if (dump_file && (dump_flags & TDF_DETAILS))
--- 5873,5879 ----
    /* Restore EXEC register before the usage.  */
    start_sequence ();
    emit_move_insn (exec_reg, exec);
!   rtx_insn *seq = end_sequence ();
    emit_insn_before (seq, insn);
  
    if (dump_file && (dump_flags & TDF_DETAILS))
*************** gcn_md_reorg (void)
*** 6039,6046 ****
  	    {
  	      start_sequence ();
  	      emit_move_insn (exec_reg, GEN_INT (new_exec));
! 	      rtx_insn *seq = get_insns ();
! 	      end_sequence ();
  	      emit_insn_before (seq, insn);
  
  	      if (dump_file && (dump_flags & TDF_DETAILS))
--- 6034,6040 ----
  	    {
  	      start_sequence ();
  	      emit_move_insn (exec_reg, GEN_INT (new_exec));
! 	      rtx_insn *seq = end_sequence ();
  	      emit_insn_before (seq, insn);
  
  	      if (dump_file && (dump_flags & TDF_DETAILS))
diff -Nrcpad gcc-16-20250511/gcc/config/i386/i386-expand.cc gcc-16-20250518/gcc/config/i386/i386-expand.cc
*** gcc-16-20250511/gcc/config/i386/i386-expand.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/i386/i386-expand.cc	Sun May 18 22:32:07 2025
*************** ix86_expand_carry_flag_compare (enum rtx
*** 3396,3403 ****
  	 too common scenario.  */
        start_sequence ();
        compare_op = ix86_expand_fp_compare (code, op0, op1);
!       compare_seq = get_insns ();
!       end_sequence ();
  
        if (GET_MODE (XEXP (compare_op, 0)) == CCFPmode)
          code = ix86_fp_compare_code_to_integer (GET_CODE (compare_op));
--- 3396,3402 ----
  	 too common scenario.  */
        start_sequence ();
        compare_op = ix86_expand_fp_compare (code, op0, op1);
!       compare_seq = end_sequence ();
  
        if (GET_MODE (XEXP (compare_op, 0)) == CCFPmode)
          code = ix86_fp_compare_code_to_integer (GET_CODE (compare_op));
*************** ix86_expand_int_movcc (rtx operands[])
*** 3561,3568 ****
  
    start_sequence ();
    compare_op = ix86_expand_compare (code, op0, op1);
!   compare_seq = get_insns ();
!   end_sequence ();
  
    compare_code = GET_CODE (compare_op);
  
--- 3560,3566 ----
  
    start_sequence ();
    compare_op = ix86_expand_compare (code, op0, op1);
!   compare_seq = end_sequence ();
  
    compare_code = GET_CODE (compare_op);
  
*************** ix86_vector_duplicate_value (machine_mod
*** 16403,16410 ****
        if (GET_MODE (reg) != innermode)
  	reg = gen_lowpart (innermode, reg);
        SET_SRC (PATTERN (insn)) = gen_vec_duplicate (mode, reg);
!       seq = get_insns ();
!       end_sequence ();
        if (seq)
  	emit_insn_before (seq, insn);
  
--- 16401,16407 ----
        if (GET_MODE (reg) != innermode)
  	reg = gen_lowpart (innermode, reg);
        SET_SRC (PATTERN (insn)) = gen_vec_duplicate (mode, reg);
!       seq = end_sequence ();
        if (seq)
  	emit_insn_before (seq, insn);
  
*************** expand_vec_perm_interleave2 (struct expa
*** 22099,22106 ****
       V4SImode this *will* succeed.  For V8HImode or V16QImode it may not.  */
    start_sequence ();
    ok = expand_vec_perm_1 (&dfinal);
!   seq = get_insns ();
!   end_sequence ();
  
    if (!ok)
      return false;
--- 22096,22102 ----
       V4SImode this *will* succeed.  For V8HImode or V16QImode it may not.  */
    start_sequence ();
    ok = expand_vec_perm_1 (&dfinal);
!   seq = end_sequence ();
  
    if (!ok)
      return false;
*************** expand_vec_perm_vperm2f128_vblend (struc
*** 22436,22443 ****
  
    start_sequence ();
    ok = expand_vec_perm_1 (&dfirst);
!   seq = get_insns ();
!   end_sequence ();
  
    if (!ok)
      return false;
--- 22432,22438 ----
  
    start_sequence ();
    ok = expand_vec_perm_1 (&dfirst);
!   seq = end_sequence ();
  
    if (!ok)
      return false;
*************** expand_vec_perm_2perm_interleave (struct
*** 22545,22552 ****
      {
        start_sequence ();
        ok = expand_vec_perm_1 (&dfirst);
!       seq1 = get_insns ();
!       end_sequence ();
  
        if (!ok)
  	return false;
--- 22540,22546 ----
      {
        start_sequence ();
        ok = expand_vec_perm_1 (&dfirst);
!       seq1 = end_sequence ();
  
        if (!ok)
  	return false;
*************** expand_vec_perm_2perm_interleave (struct
*** 22556,22563 ****
      {
        start_sequence ();
        ok = expand_vec_perm_1 (&dsecond);
!       seq2 = get_insns ();
!       end_sequence ();
  
        if (!ok)
  	return false;
--- 22550,22556 ----
      {
        start_sequence ();
        ok = expand_vec_perm_1 (&dsecond);
!       seq2 = end_sequence ();
  
        if (!ok)
  	return false;
*************** expand_vec_perm_2perm_pblendv (struct ex
*** 22671,22678 ****
      {
        start_sequence ();
        ok = expand_vec_perm_1 (&dfirst);
!       seq1 = get_insns ();
!       end_sequence ();
  
        if (!ok)
  	return false;
--- 22664,22670 ----
      {
        start_sequence ();
        ok = expand_vec_perm_1 (&dfirst);
!       seq1 = end_sequence ();
  
        if (!ok)
  	return false;
*************** expand_vec_perm_2perm_pblendv (struct ex
*** 22682,22689 ****
      {
        start_sequence ();
        ok = expand_vec_perm_1 (&dsecond);
!       seq2 = get_insns ();
!       end_sequence ();
  
        if (!ok)
  	return false;
--- 22674,22680 ----
      {
        start_sequence ();
        ok = expand_vec_perm_1 (&dsecond);
!       seq2 = end_sequence ();
  
        if (!ok)
  	return false;
*************** expand_vec_perm2_vperm2f128_vblend (stru
*** 22877,22884 ****
    canonicalize_perm (&dfirst);
    start_sequence ();
    ok = ix86_expand_vec_perm_const_1 (&dfirst);
!   seq1 = get_insns ();
!   end_sequence ();
  
    if (!ok)
      return false;
--- 22868,22874 ----
    canonicalize_perm (&dfirst);
    start_sequence ();
    ok = ix86_expand_vec_perm_const_1 (&dfirst);
!   seq1 = end_sequence ();
  
    if (!ok)
      return false;
*************** expand_vec_perm2_vperm2f128_vblend (stru
*** 22886,22893 ****
    canonicalize_perm (&dsecond);
    start_sequence ();
    ok = ix86_expand_vec_perm_const_1 (&dsecond);
!   seq2 = get_insns ();
!   end_sequence ();
  
    if (!ok)
      return false;
--- 22876,22882 ----
    canonicalize_perm (&dsecond);
    start_sequence ();
    ok = ix86_expand_vec_perm_const_1 (&dsecond);
!   seq2 = end_sequence ();
  
    if (!ok)
      return false;
*************** ix86_gen_ccmp_first (rtx_insn **prep_seq
*** 26114,26121 ****
  	}
      }
  
!   *prep_seq = get_insns ();
!   end_sequence ();
  
    start_sequence ();
  
--- 26103,26109 ----
  	}
      }
  
!   *prep_seq = end_sequence ();
  
    start_sequence ();
  
*************** ix86_gen_ccmp_first (rtx_insn **prep_seq
*** 26126,26133 ****
        end_sequence ();
        return NULL_RTX;
      }
!   *gen_seq = get_insns ();
!   end_sequence ();
  
    return res;
  }
--- 26114,26120 ----
        end_sequence ();
        return NULL_RTX;
      }
!   *gen_seq = end_sequence ();
  
    return res;
  }
*************** ix86_gen_ccmp_next (rtx_insn **prep_seq,
*** 26170,26177 ****
        return NULL_RTX;
      }
  
!   *prep_seq = get_insns ();
!   end_sequence ();
  
    target = gen_rtx_REG (cc_mode, FLAGS_REG);
    dfv = ix86_get_flags_cc ((rtx_code) cmp_code);
--- 26157,26163 ----
        return NULL_RTX;
      }
  
!   *prep_seq = end_sequence ();
  
    target = gen_rtx_REG (cc_mode, FLAGS_REG);
    dfv = ix86_get_flags_cc ((rtx_code) cmp_code);
*************** ix86_gen_ccmp_next (rtx_insn **prep_seq,
*** 26202,26209 ****
        return NULL_RTX;
      }
  
!   *gen_seq = get_insns ();
!   end_sequence ();
  
    return gen_rtx_fmt_ee ((rtx_code) cmp_code, VOIDmode, target, const0_rtx);
  }
--- 26188,26194 ----
        return NULL_RTX;
      }
  
!   *gen_seq = end_sequence ();
  
    return gen_rtx_fmt_ee ((rtx_code) cmp_code, VOIDmode, target, const0_rtx);
  }
diff -Nrcpad gcc-16-20250511/gcc/config/i386/i386-features.cc gcc-16-20250518/gcc/config/i386/i386-features.cc
*** gcc-16-20250511/gcc/config/i386/i386-features.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/i386/i386-features.cc	Sun May 18 22:32:07 2025
*************** scalar_chain::scalar_chain (enum machine
*** 296,304 ****
    insns_conv = BITMAP_ALLOC (NULL);
    queue = NULL;
  
!   n_sse_to_integer = 0;
!   n_integer_to_sse = 0;
! 
    max_visits = x86_stv_max_visits;
  }
  
--- 296,303 ----
    insns_conv = BITMAP_ALLOC (NULL);
    queue = NULL;
  
!   cost_sse_integer = 0;
!   weighted_cost_sse_integer = 0 ;
    max_visits = x86_stv_max_visits;
  }
  
*************** scalar_chain::mark_dual_mode_def (df_ref
*** 337,356 ****
    /* Record the def/insn pair so we can later efficiently iterate over
       the defs to convert on insns not in the chain.  */
    bool reg_new = bitmap_set_bit (defs_conv, DF_REF_REGNO (def));
    if (!bitmap_bit_p (insns, DF_REF_INSN_UID (def)))
      {
        if (!bitmap_set_bit (insns_conv, DF_REF_INSN_UID (def))
  	  && !reg_new)
  	return;
!       n_integer_to_sse++;
      }
    else
      {
        if (!reg_new)
  	return;
!       n_sse_to_integer++;
      }
  
    if (dump_file)
      fprintf (dump_file,
  	     "  Mark r%d def in insn %d as requiring both modes in chain #%d\n",
--- 336,387 ----
    /* Record the def/insn pair so we can later efficiently iterate over
       the defs to convert on insns not in the chain.  */
    bool reg_new = bitmap_set_bit (defs_conv, DF_REF_REGNO (def));
+   basic_block bb = BLOCK_FOR_INSN (DF_REF_INSN (def));
+   profile_count entry_count = ENTRY_BLOCK_PTR_FOR_FN (cfun)->count;
+   bool speed_p = optimize_bb_for_speed_p (bb);
+   int cost = 0;
+ 
    if (!bitmap_bit_p (insns, DF_REF_INSN_UID (def)))
      {
        if (!bitmap_set_bit (insns_conv, DF_REF_INSN_UID (def))
  	  && !reg_new)
  	return;
! 
!       /* Cost integer to sse moves.  */
!       if (speed_p)
! 	cost = COSTS_N_INSNS (ix86_cost->integer_to_sse) / 2;
!       else if (TARGET_64BIT || smode == SImode)
! 	cost = COSTS_N_BYTES (4);
!       /* vmovd (4 bytes) + vpinsrd (6 bytes).  */
!       else if (TARGET_SSE4_1)
! 	cost = COSTS_N_BYTES (10);
!       /* movd (4 bytes) + movd (4 bytes) + unpckldq (4 bytes).  */
!       else
! 	cost = COSTS_N_BYTES (12);
      }
    else
      {
        if (!reg_new)
  	return;
! 
!       /* Cost sse to integer moves.  */
!       if (speed_p)
! 	cost = COSTS_N_INSNS (ix86_cost->sse_to_integer) / 2;
!       else if (TARGET_64BIT || smode == SImode)
! 	cost = COSTS_N_BYTES (4);
!       /* vmovd (4 bytes) + vpextrd (6 bytes).  */
!       else if (TARGET_SSE4_1)
! 	cost = COSTS_N_BYTES (10);
!       /* movd (4 bytes) + psrlq (5 bytes) + movd (4 bytes).  */
!       else
! 	cost = COSTS_N_BYTES (13);
      }
  
+   if (speed_p)
+     weighted_cost_sse_integer += bb->count.to_sreal_scale (entry_count) * cost;
+ 
+   cost_sse_integer += cost;
+ 
    if (dump_file)
      fprintf (dump_file,
  	     "  Mark r%d def in insn %d as requiring both modes in chain #%d\n",
*************** general_scalar_chain::vector_const_cost
*** 531,545 ****
    return COSTS_N_INSNS (ix86_cost->sse_load[smode == DImode ? 1 : 0]) / 2;
  }
  
! /* Compute a gain for chain conversion.  */
  
! int
  general_scalar_chain::compute_convert_gain ()
  {
    bitmap_iterator bi;
    unsigned insn_uid;
    int gain = 0;
!   int cost = 0;
  
    if (dump_file)
      fprintf (dump_file, "Computing gain for chain #%d...\n", chain_id);
--- 562,576 ----
    return COSTS_N_INSNS (ix86_cost->sse_load[smode == DImode ? 1 : 0]) / 2;
  }
  
! /* Return true if it's cost profitable for chain conversion.  */
  
! bool
  general_scalar_chain::compute_convert_gain ()
  {
    bitmap_iterator bi;
    unsigned insn_uid;
    int gain = 0;
!   sreal weighted_gain = 0;
  
    if (dump_file)
      fprintf (dump_file, "Computing gain for chain #%d...\n", chain_id);
*************** general_scalar_chain::compute_convert_ga
*** 559,568 ****
        rtx dst = SET_DEST (def_set);
        basic_block bb = BLOCK_FOR_INSN (insn);
        int igain = 0;
  
        if (REG_P (src) && REG_P (dst))
  	{
! 	  if (optimize_bb_for_size_p (bb))
  	    /* reg-reg move is 2 bytes, while SSE 3.  */
  	    igain += COSTS_N_BYTES (2 * m - 3);
  	  else
--- 590,602 ----
        rtx dst = SET_DEST (def_set);
        basic_block bb = BLOCK_FOR_INSN (insn);
        int igain = 0;
+       profile_count entry_count = ENTRY_BLOCK_PTR_FOR_FN (cfun)->count;
+       bool speed_p = optimize_bb_for_speed_p (bb);
+       sreal bb_freq = bb->count.to_sreal_scale (entry_count);
  
        if (REG_P (src) && REG_P (dst))
  	{
! 	  if (!speed_p)
  	    /* reg-reg move is 2 bytes, while SSE 3.  */
  	    igain += COSTS_N_BYTES (2 * m - 3);
  	  else
*************** general_scalar_chain::compute_convert_ga
*** 571,577 ****
  	}
        else if (REG_P (src) && MEM_P (dst))
  	{
! 	  if (optimize_bb_for_size_p (bb))
  	    /* Integer load/store is 3+ bytes and SSE 4+.  */
  	    igain += COSTS_N_BYTES (3 * m - 4);
  	  else
--- 605,611 ----
  	}
        else if (REG_P (src) && MEM_P (dst))
  	{
! 	  if (!speed_p)
  	    /* Integer load/store is 3+ bytes and SSE 4+.  */
  	    igain += COSTS_N_BYTES (3 * m - 4);
  	  else
*************** general_scalar_chain::compute_convert_ga
*** 581,587 ****
  	}
        else if (MEM_P (src) && REG_P (dst))
  	{
! 	  if (optimize_bb_for_size_p (bb))
  	    igain += COSTS_N_BYTES (3 * m - 4);
  	  else
  	    igain += COSTS_N_INSNS (m * ix86_cost->int_load[2]
--- 615,621 ----
  	}
        else if (MEM_P (src) && REG_P (dst))
  	{
! 	  if (!speed_p)
  	    igain += COSTS_N_BYTES (3 * m - 4);
  	  else
  	    igain += COSTS_N_INSNS (m * ix86_cost->int_load[2]
*************** general_scalar_chain::compute_convert_ga
*** 593,599 ****
  	     of explicit load and store instructions.  */
  	  if (MEM_P (dst))
  	    {
! 	      if (optimize_bb_for_size_p (bb))
  		/* ??? This probably should account size difference
  		   of SSE and integer load rather than full SSE load.  */
  		igain -= COSTS_N_BYTES (8);
--- 627,633 ----
  	     of explicit load and store instructions.  */
  	  if (MEM_P (dst))
  	    {
! 	      if (!speed_p)
  		/* ??? This probably should account size difference
  		   of SSE and integer load rather than full SSE load.  */
  		igain -= COSTS_N_BYTES (8);
*************** general_scalar_chain::compute_convert_ga
*** 667,673 ****
  		igain -= vector_const_cost (XEXP (src, 1), bb);
  	      if (MEM_P (XEXP (src, 1)))
  		{
! 		  if (optimize_bb_for_size_p (bb))
  		    igain -= COSTS_N_BYTES (m == 2 ? 3 : 5);
  		  else
  		    igain += COSTS_N_INSNS
--- 701,707 ----
  		igain -= vector_const_cost (XEXP (src, 1), bb);
  	      if (MEM_P (XEXP (src, 1)))
  		{
! 		  if (!speed_p)
  		    igain -= COSTS_N_BYTES (m == 2 ? 3 : 5);
  		  else
  		    igain += COSTS_N_INSNS
*************** general_scalar_chain::compute_convert_ga
*** 730,736 ****
  	    case CONST_INT:
  	      if (REG_P (dst))
  		{
! 		  if (optimize_bb_for_size_p (bb))
  		    {
  		      /* xor (2 bytes) vs. xorps (3 bytes).  */
  		      if (src == const0_rtx)
--- 764,770 ----
  	    case CONST_INT:
  	      if (REG_P (dst))
  		{
! 		  if (!speed_p)
  		    {
  		      /* xor (2 bytes) vs. xorps (3 bytes).  */
  		      if (src == const0_rtx)
*************** general_scalar_chain::compute_convert_ga
*** 769,782 ****
  	      if (XVECEXP (XEXP (src, 1), 0, 0) == const0_rtx)
  		{
  		  // movd (4 bytes) replaced with movdqa (4 bytes).
! 		  if (!optimize_bb_for_size_p (bb))
  		    igain += COSTS_N_INSNS (ix86_cost->sse_to_integer
  					    - ix86_cost->xmm_move) / 2;
  		}
  	      else
  		{
  		  // pshufd; movd replaced with pshufd.
! 		  if (optimize_bb_for_size_p (bb))
  		    igain += COSTS_N_BYTES (4);
  		  else
  		    igain += ix86_cost->sse_to_integer;
--- 803,816 ----
  	      if (XVECEXP (XEXP (src, 1), 0, 0) == const0_rtx)
  		{
  		  // movd (4 bytes) replaced with movdqa (4 bytes).
! 		  if (!!speed_p)
  		    igain += COSTS_N_INSNS (ix86_cost->sse_to_integer
  					    - ix86_cost->xmm_move) / 2;
  		}
  	      else
  		{
  		  // pshufd; movd replaced with pshufd.
! 		  if (!speed_p)
  		    igain += COSTS_N_BYTES (4);
  		  else
  		    igain += ix86_cost->sse_to_integer;
*************** general_scalar_chain::compute_convert_ga
*** 788,842 ****
  	    }
  	}
  
        if (igain != 0 && dump_file)
  	{
! 	  fprintf (dump_file, "  Instruction gain %d for ", igain);
  	  dump_insn_slim (dump_file, insn);
  	}
-       gain += igain;
      }
  
    if (dump_file)
-     fprintf (dump_file, "  Instruction conversion gain: %d\n", gain);
- 
-   /* Cost the integer to sse and sse to integer moves.  */
-   if (!optimize_function_for_size_p (cfun))
      {
!       cost += n_sse_to_integer * COSTS_N_INSNS (ix86_cost->sse_to_integer) / 2;
!       /* ???  integer_to_sse but we only have that in the RA cost table.
! 	      Assume sse_to_integer/integer_to_sse are the same which they
! 	      are at the moment.  */
!       cost += n_integer_to_sse * COSTS_N_INSNS (ix86_cost->integer_to_sse) / 2;
!     }
!   else if (TARGET_64BIT || smode == SImode)
!     {
!       cost += n_sse_to_integer * COSTS_N_BYTES (4);
!       cost += n_integer_to_sse * COSTS_N_BYTES (4);
!     }
!   else if (TARGET_SSE4_1)
!     {
!       /* vmovd (4 bytes) + vpextrd (6 bytes).  */
!       cost += n_sse_to_integer * COSTS_N_BYTES (10);
!       /* vmovd (4 bytes) + vpinsrd (6 bytes).  */
!       cost += n_integer_to_sse * COSTS_N_BYTES (10);
!     }
!   else
!     {
!       /* movd (4 bytes) + psrlq (5 bytes) + movd (4 bytes).  */
!       cost += n_sse_to_integer * COSTS_N_BYTES (13);
!       /* movd (4 bytes) + movd (4 bytes) + unpckldq (4 bytes).  */
!       cost += n_integer_to_sse * COSTS_N_BYTES (12);
      }
  
!   if (dump_file)
!     fprintf (dump_file, "  Registers conversion cost: %d\n", cost);
! 
!   gain -= cost;
! 
!   if (dump_file)
!     fprintf (dump_file, "  Total gain: %d\n", gain);
! 
!   return gain;
  }
  
  /* Insert generated conversion instruction sequence INSNS
--- 822,855 ----
  	    }
  	}
  
+       if (speed_p)
+ 	weighted_gain += bb_freq * igain;
+       gain += igain;
+ 
        if (igain != 0 && dump_file)
  	{
! 	  fprintf (dump_file, "  Instruction gain %d with bb_freq %.2f for",
! 		   igain, bb_freq.to_double ());
  	  dump_insn_slim (dump_file, insn);
  	}
      }
  
    if (dump_file)
      {
!       fprintf (dump_file, "  Instruction conversion gain: %d, \n",
! 	       gain);
!       fprintf (dump_file, "  Registers conversion cost: %d\n",
! 	       cost_sse_integer);
!       fprintf (dump_file, "  Weighted instruction conversion gain: %.2f, \n",
! 	       weighted_gain.to_double ());
!       fprintf (dump_file, "  Weighted registers conversion cost: %.2f\n",
! 	       weighted_cost_sse_integer.to_double ());
      }
  
!   if (weighted_gain != weighted_cost_sse_integer)
!     return weighted_gain > weighted_cost_sse_integer;
!   else
!     return gain > cost_sse_integer;;
  }
  
  /* Insert generated conversion instruction sequence INSNS
*************** scalar_chain::make_vector_copies (rtx_in
*** 935,942 ****
    else
      emit_insn (gen_rtx_SET (gen_rtx_SUBREG (vmode, vreg, 0),
  			    gen_gpr_to_xmm_move_src (vmode, reg)));
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
    emit_conversion_insns (seq, insn);
  
    if (dump_file)
--- 948,954 ----
    else
      emit_insn (gen_rtx_SET (gen_rtx_SUBREG (vmode, vreg, 0),
  			    gen_gpr_to_xmm_move_src (vmode, reg)));
!   rtx_insn *seq = end_sequence ();
    emit_conversion_insns (seq, insn);
  
    if (dump_file)
*************** scalar_chain::convert_reg (rtx_insn *ins
*** 1003,1010 ****
    else
      emit_move_insn (dst, src);
  
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
    emit_conversion_insns (seq, insn);
  
    if (dump_file)
--- 1015,1021 ----
    else
      emit_move_insn (dst, src);
  
!   rtx_insn *seq = end_sequence ();
    emit_conversion_insns (seq, insn);
  
    if (dump_file)
*************** scalar_chain::convert_op (rtx *op, rtx_i
*** 1099,1106 ****
  	{
  	  start_sequence ();
  	  vec_cst = validize_mem (force_const_mem (vmode, vec_cst));
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  	  emit_insn_before (seq, insn);
  	}
  
--- 1110,1116 ----
  	{
  	  start_sequence ();
  	  vec_cst = validize_mem (force_const_mem (vmode, vec_cst));
! 	  rtx_insn *seq = end_sequence ();
  	  emit_insn_before (seq, insn);
  	}
  
*************** timode_immed_const_gain (rtx cst, basic_
*** 1553,1573 ****
    return 0;
  }
  
! /* Compute a gain for chain conversion.  */
  
! int
  timode_scalar_chain::compute_convert_gain ()
  {
    /* Assume that if we have to move TImode values between units,
       then transforming this chain isn't worth it.  */
!   if (n_sse_to_integer || n_integer_to_sse)
!     return -1;
  
    bitmap_iterator bi;
    unsigned insn_uid;
  
    /* Split ties to prefer V1TImode when not optimizing for size.  */
    int gain = optimize_size ? 0 : 1;
  
    if (dump_file)
      fprintf (dump_file, "Computing gain for chain #%d...\n", chain_id);
--- 1563,1584 ----
    return 0;
  }
  
! /* Return true it's cost profitable for for chain conversion.  */
  
! bool
  timode_scalar_chain::compute_convert_gain ()
  {
    /* Assume that if we have to move TImode values between units,
       then transforming this chain isn't worth it.  */
!   if (cost_sse_integer)
!     return false;
  
    bitmap_iterator bi;
    unsigned insn_uid;
  
    /* Split ties to prefer V1TImode when not optimizing for size.  */
    int gain = optimize_size ? 0 : 1;
+   sreal weighted_gain  = 0;
  
    if (dump_file)
      fprintf (dump_file, "Computing gain for chain #%d...\n", chain_id);
*************** timode_scalar_chain::compute_convert_gai
*** 1582,1613 ****
        basic_block bb = BLOCK_FOR_INSN (insn);
        int scost, vcost;
        int igain = 0;
  
        switch (GET_CODE (src))
  	{
  	case REG:
! 	  if (optimize_bb_for_size_p (bb))
  	    igain = MEM_P (dst) ? COSTS_N_BYTES (6) : COSTS_N_BYTES (3);
  	  else
  	    igain = COSTS_N_INSNS (1);
  	  break;
  
  	case MEM:
! 	  igain = optimize_bb_for_size_p (bb) ? COSTS_N_BYTES (7)
! 					      : COSTS_N_INSNS (1);
  	  break;
  
  	case CONST_INT:
  	  if (MEM_P (dst)
  	      && standard_sse_constant_p (src, V1TImode))
! 	    igain = optimize_bb_for_size_p (bb) ? COSTS_N_BYTES (11) : 1;
  	  break;
  
  	case CONST_WIDE_INT:
  	  /* 2 x mov vs. vmovdqa.  */
  	  if (MEM_P (dst))
! 	    igain = optimize_bb_for_size_p (bb) ? COSTS_N_BYTES (3)
! 						: COSTS_N_INSNS (1);
  	  break;
  
  	case NOT:
--- 1593,1625 ----
        basic_block bb = BLOCK_FOR_INSN (insn);
        int scost, vcost;
        int igain = 0;
+       profile_count entry_count = ENTRY_BLOCK_PTR_FOR_FN (cfun)->count;
+       bool speed_p = optimize_bb_for_speed_p (bb);
+       sreal bb_freq = bb->count.to_sreal_scale (entry_count);
  
        switch (GET_CODE (src))
  	{
  	case REG:
! 	  if (!speed_p)
  	    igain = MEM_P (dst) ? COSTS_N_BYTES (6) : COSTS_N_BYTES (3);
  	  else
  	    igain = COSTS_N_INSNS (1);
  	  break;
  
  	case MEM:
! 	  igain = !speed_p ? COSTS_N_BYTES (7) : COSTS_N_INSNS (1);
  	  break;
  
  	case CONST_INT:
  	  if (MEM_P (dst)
  	      && standard_sse_constant_p (src, V1TImode))
! 	    igain = !speed_p ? COSTS_N_BYTES (11) : 1;
  	  break;
  
  	case CONST_WIDE_INT:
  	  /* 2 x mov vs. vmovdqa.  */
  	  if (MEM_P (dst))
! 	    igain = !speed_p ? COSTS_N_BYTES (3) : COSTS_N_INSNS (1);
  	  break;
  
  	case NOT:
*************** timode_scalar_chain::compute_convert_gai
*** 1628,1634 ****
  	case LSHIFTRT:
  	  /* See ix86_expand_v1ti_shift.  */
  	  op1val = INTVAL (XEXP (src, 1));
! 	  if (optimize_bb_for_size_p (bb))
  	    {
  	      if (op1val == 64 || op1val == 65)
  		scost = COSTS_N_BYTES (5);
--- 1640,1646 ----
  	case LSHIFTRT:
  	  /* See ix86_expand_v1ti_shift.  */
  	  op1val = INTVAL (XEXP (src, 1));
! 	  if (!speed_p)
  	    {
  	      if (op1val == 64 || op1val == 65)
  		scost = COSTS_N_BYTES (5);
*************** timode_scalar_chain::compute_convert_gai
*** 1662,1668 ****
  	case ASHIFTRT:
  	  /* See ix86_expand_v1ti_ashiftrt.  */
  	  op1val = INTVAL (XEXP (src, 1));
! 	  if (optimize_bb_for_size_p (bb))
  	    {
  	      if (op1val == 64 || op1val == 127)
  		scost = COSTS_N_BYTES (7);
--- 1674,1680 ----
  	case ASHIFTRT:
  	  /* See ix86_expand_v1ti_ashiftrt.  */
  	  op1val = INTVAL (XEXP (src, 1));
! 	  if (!speed_p)
  	    {
  	      if (op1val == 64 || op1val == 127)
  		scost = COSTS_N_BYTES (7);
*************** timode_scalar_chain::compute_convert_gai
*** 1740,1746 ****
  	case ROTATERT:
  	  /* See ix86_expand_v1ti_rotate.  */
  	  op1val = INTVAL (XEXP (src, 1));
! 	  if (optimize_bb_for_size_p (bb))
  	    {
  	      scost = COSTS_N_BYTES (13);
  	      if ((op1val & 31) == 0)
--- 1752,1758 ----
  	case ROTATERT:
  	  /* See ix86_expand_v1ti_rotate.  */
  	  op1val = INTVAL (XEXP (src, 1));
! 	  if (!speed_p)
  	    {
  	      scost = COSTS_N_BYTES (13);
  	      if ((op1val & 31) == 0)
*************** timode_scalar_chain::compute_convert_gai
*** 1772,1805 ****
  	    {
  	      if (GET_CODE (XEXP (src, 0)) == AND)
  		/* and;and;or (9 bytes) vs. ptest (5 bytes).  */
! 		igain = optimize_bb_for_size_p (bb) ? COSTS_N_BYTES (4)
! 						    : COSTS_N_INSNS (2);
  	      /* or (3 bytes) vs. ptest (5 bytes).  */
! 	      else if (optimize_bb_for_size_p (bb))
  		igain = -COSTS_N_BYTES (2);
  	    }
  	  else if (XEXP (src, 1) == const1_rtx)
  	    /* and;cmp -1 (7 bytes) vs. pcmpeqd;pxor;ptest (13 bytes).  */
! 	    igain = optimize_bb_for_size_p (bb) ? -COSTS_N_BYTES (6)
! 						: -COSTS_N_INSNS (1);
  	  break;
  
  	default:
  	  break;
  	}
  
        if (igain != 0 && dump_file)
  	{
! 	  fprintf (dump_file, "  Instruction gain %d for ", igain);
  	  dump_insn_slim (dump_file, insn);
  	}
-       gain += igain;
      }
  
    if (dump_file)
!     fprintf (dump_file, "  Total gain: %d\n", gain);
  
!   return gain;
  }
  
  /* Fix uses of converted REG in debug insns.  */
--- 1784,1823 ----
  	    {
  	      if (GET_CODE (XEXP (src, 0)) == AND)
  		/* and;and;or (9 bytes) vs. ptest (5 bytes).  */
! 		igain = !speed_p ? COSTS_N_BYTES (4) : COSTS_N_INSNS (2);
  	      /* or (3 bytes) vs. ptest (5 bytes).  */
! 	      else if (!speed_p)
  		igain = -COSTS_N_BYTES (2);
  	    }
  	  else if (XEXP (src, 1) == const1_rtx)
  	    /* and;cmp -1 (7 bytes) vs. pcmpeqd;pxor;ptest (13 bytes).  */
! 	    igain = !speed_p ? -COSTS_N_BYTES (6) : -COSTS_N_INSNS (1);
  	  break;
  
  	default:
  	  break;
  	}
  
+       gain += igain;
+       if (speed_p)
+ 	weighted_gain += bb_freq * igain;
+ 
        if (igain != 0 && dump_file)
  	{
! 	  fprintf (dump_file, "  Instruction gain %d with bb_freq %.2f for ",
! 		   igain, bb_freq.to_double ());
  	  dump_insn_slim (dump_file, insn);
  	}
      }
  
    if (dump_file)
!     fprintf (dump_file, "  Total gain: %d, weighted gain %.2f\n",
! 	     gain, weighted_gain.to_double ());
  
!   if (weighted_gain > (sreal) 0)
!     return true;
!   else
!     return gain > 0;
  }
  
  /* Fix uses of converted REG in debug insns.  */
*************** timode_scalar_chain::convert_insn (rtx_i
*** 1908,1915 ****
  	      src = validize_mem (force_const_mem (V1TImode, src));
  	      use_move = MEM_P (dst);
  	    }
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  	  if (seq)
  	    emit_insn_before (seq, insn);
  	  if (use_move)
--- 1926,1932 ----
  	      src = validize_mem (force_const_mem (V1TImode, src));
  	      use_move = MEM_P (dst);
  	    }
! 	  rtx_insn *seq = end_sequence ();
  	  if (seq)
  	    emit_insn_before (seq, insn);
  	  if (use_move)
*************** convert_scalars_to_vector (bool timode_p
*** 2595,2601 ****
  	     conversions.  */
  	  if (chain->build (&candidates[i], uid, disallowed))
  	    {
! 	      if (chain->compute_convert_gain () > 0)
  		converted_insns += chain->convert ();
  	      else if (dump_file)
  		fprintf (dump_file, "Chain #%d conversion is not profitable\n",
--- 2612,2618 ----
  	     conversions.  */
  	  if (chain->build (&candidates[i], uid, disallowed))
  	    {
! 	      if (chain->compute_convert_gain ())
  		converted_insns += chain->convert ();
  	      else if (dump_file)
  		fprintf (dump_file, "Chain #%d conversion is not profitable\n",
*************** ix86_place_single_vector_set (rtx dest,
*** 3095,3107 ****
        insn = NEXT_INSN (insn);
      }
  
-   rtx_insn *set_insn;
    if (insn == BB_HEAD (bb))
!     set_insn = emit_insn_before (set, insn);
    else
!     set_insn = emit_insn_after (set,
! 				insn ? PREV_INSN (insn) : BB_END (bb));
!   df_insn_rescan (set_insn);
  }
  
  /* At entry of the nearest common dominator for basic blocks with
--- 3112,3121 ----
        insn = NEXT_INSN (insn);
      }
  
    if (insn == BB_HEAD (bb))
!     emit_insn_before (set, insn);
    else
!     emit_insn_after (set, insn ? PREV_INSN (insn) : BB_END (bb));
  }
  
  /* At entry of the nearest common dominator for basic blocks with
*************** remove_partial_avx_dependency (void)
*** 3225,3231 ****
  	  /* Generate an XMM vector SET.  */
  	  set = gen_rtx_SET (vec, src);
  	  set_insn = emit_insn_before (set, insn);
- 	  df_insn_rescan (set_insn);
  
  	  if (cfun->can_throw_non_call_exceptions)
  	    {
--- 3239,3244 ----
*************** replace_vector_const (machine_mode vecto
*** 3396,3403 ****
  		  vreg = gen_reg_rtx (vmode);
  		  rtx vsubreg = gen_rtx_SUBREG (vmode, vector_const, 0);
  		  rtx pat = gen_rtx_SET (vreg, vsubreg);
! 		  rtx_insn *vinsn = emit_insn_before (pat, insn);
! 		  df_insn_rescan (vinsn);
  		}
  	      replace = gen_rtx_SUBREG (mode, vreg, 0);
  	    }
--- 3409,3415 ----
  		  vreg = gen_reg_rtx (vmode);
  		  rtx vsubreg = gen_rtx_SUBREG (vmode, vector_const, 0);
  		  rtx pat = gen_rtx_SET (vreg, vsubreg);
! 		  emit_insn_before (pat, insn);
  		}
  	      replace = gen_rtx_SUBREG (mode, vreg, 0);
  	    }
diff -Nrcpad gcc-16-20250511/gcc/config/i386/i386-features.h gcc-16-20250518/gcc/config/i386/i386-features.h
*** gcc-16-20250511/gcc/config/i386/i386-features.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/i386/i386-features.h	Sun May 18 22:32:07 2025
*************** class scalar_chain
*** 153,164 ****
  
    bitmap insns_conv;
    hash_map<rtx, rtx> defs_map;
!   unsigned n_sse_to_integer;
!   unsigned n_integer_to_sse;
    auto_vec<rtx_insn *> control_flow_insns;
  
    bool build (bitmap candidates, unsigned insn_uid, bitmap disallowed);
!   virtual int compute_convert_gain () = 0;
    int convert ();
  
   protected:
--- 153,165 ----
  
    bitmap insns_conv;
    hash_map<rtx, rtx> defs_map;
!   /* Cost of inserted conversion between ineteger and sse.  */
!   int cost_sse_integer;
!   sreal weighted_cost_sse_integer;
    auto_vec<rtx_insn *> control_flow_insns;
  
    bool build (bitmap candidates, unsigned insn_uid, bitmap disallowed);
!   virtual bool compute_convert_gain () = 0;
    int convert ();
  
   protected:
*************** class general_scalar_chain : public scal
*** 184,190 ****
   public:
    general_scalar_chain (enum machine_mode smode_, enum machine_mode vmode_)
      : scalar_chain (smode_, vmode_) {}
!   int compute_convert_gain () final override;
  
   private:
    void convert_insn (rtx_insn *insn) final override;
--- 185,191 ----
   public:
    general_scalar_chain (enum machine_mode smode_, enum machine_mode vmode_)
      : scalar_chain (smode_, vmode_) {}
!   bool compute_convert_gain () final override;
  
   private:
    void convert_insn (rtx_insn *insn) final override;
*************** class timode_scalar_chain : public scala
*** 196,202 ****
  {
   public:
    timode_scalar_chain () : scalar_chain (TImode, V1TImode) {}
!   int compute_convert_gain () final override;
  
   private:
    void fix_debug_reg_uses (rtx reg);
--- 197,203 ----
  {
   public:
    timode_scalar_chain () : scalar_chain (TImode, V1TImode) {}
!   bool compute_convert_gain () final override;
  
   private:
    void fix_debug_reg_uses (rtx reg);
diff -Nrcpad gcc-16-20250511/gcc/config/i386/i386.cc gcc-16-20250518/gcc/config/i386/i386.cc
*** gcc-16-20250511/gcc/config/i386/i386.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/i386/i386.cc	Sun May 18 22:32:07 2025
*************** ix86_init_pic_reg (void)
*** 1795,1802 ****
        add_reg_note (insn, REG_CFA_FLUSH_QUEUE, NULL_RTX);
      }
  
!   seq = get_insns ();
!   end_sequence ();
  
    entry_edge = single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun));
    insert_insn_on_edge (seq, entry_edge);
--- 1795,1801 ----
        add_reg_note (insn, REG_CFA_FLUSH_QUEUE, NULL_RTX);
      }
  
!   seq = end_sequence ();
  
    entry_edge = single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun));
    insert_insn_on_edge (seq, entry_edge);
*************** ix86_va_start (tree valist, rtx nextarg)
*** 4739,4746 ****
  
  	  start_sequence ();
  	  emit_move_insn (reg, gen_rtx_REG (Pmode, scratch_regno));
! 	  seq = get_insns ();
! 	  end_sequence ();
  
  	  push_topmost_sequence ();
  	  emit_insn_after (seq, entry_of_function ());
--- 4738,4744 ----
  
  	  start_sequence ();
  	  emit_move_insn (reg, gen_rtx_REG (Pmode, scratch_regno));
! 	  seq = end_sequence ();
  
  	  push_topmost_sequence ();
  	  emit_insn_after (seq, entry_of_function ());
*************** ix86_get_drap_rtx (void)
*** 7981,7988 ****
  
        start_sequence ();
        drap_vreg = copy_to_reg (arg_ptr);
!       seq = get_insns ();
!       end_sequence ();
  
        insn = emit_insn_before (seq, NEXT_INSN (entry_of_function ()));
        if (!optimize)
--- 7979,7985 ----
  
        start_sequence ();
        drap_vreg = copy_to_reg (arg_ptr);
!       seq = end_sequence ();
  
        insn = emit_insn_before (seq, NEXT_INSN (entry_of_function ()));
        if (!optimize)
*************** legitimize_tls_address (rtx x, enum tls_
*** 12474,12481 ****
  	      start_sequence ();
  	      emit_call_insn
  		(gen_tls_global_dynamic_64 (Pmode, rax, x, caddr));
! 	      insns = get_insns ();
! 	      end_sequence ();
  
  	      if (GET_MODE (x) != Pmode)
  		x = gen_rtx_ZERO_EXTEND (Pmode, x);
--- 12471,12477 ----
  	      start_sequence ();
  	      emit_call_insn
  		(gen_tls_global_dynamic_64 (Pmode, rax, x, caddr));
! 	      insns = end_sequence ();
  
  	      if (GET_MODE (x) != Pmode)
  		x = gen_rtx_ZERO_EXTEND (Pmode, x);
*************** legitimize_tls_address (rtx x, enum tls_
*** 12529,12536 ****
  	      start_sequence ();
  	      emit_call_insn
  		(gen_tls_local_dynamic_base_64 (Pmode, rax, caddr));
! 	      insns = get_insns ();
! 	      end_sequence ();
  
  	      /* Attach a unique REG_EQUAL, to allow the RTL optimizers to
  		 share the LD_BASE result with other LD model accesses.  */
--- 12525,12531 ----
  	      start_sequence ();
  	      emit_call_insn
  		(gen_tls_local_dynamic_base_64 (Pmode, rax, caddr));
! 	      insns = end_sequence ();
  
  	      /* Attach a unique REG_EQUAL, to allow the RTL optimizers to
  		 share the LD_BASE result with other LD model accesses.  */
*************** ix86_md_asm_adjust (vec<rtx> &outputs, v
*** 24823,24830 ****
  	}
      }
  
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
  
    if (saw_asm_flag)
      return seq;
--- 24818,24824 ----
  	}
      }
  
!   rtx_insn *seq = end_sequence ();
  
    if (saw_asm_flag)
      return seq;
*************** ix86_vector_costs::finish_cost (const ve
*** 26156,26169 ****
    /* When X86_TUNE_AVX512_TWO_EPILOGUES is enabled arrange for both
       a AVX2 and a SSE epilogue for AVX512 vectorized loops.  */
    if (loop_vinfo
        && ix86_tune_features[X86_TUNE_AVX512_TWO_EPILOGUES])
!     {
!       if (GET_MODE_SIZE (loop_vinfo->vector_mode) == 64)
! 	m_suggested_epilogue_mode = V32QImode;
!       else if (LOOP_VINFO_EPILOGUE_P (loop_vinfo)
! 	       && GET_MODE_SIZE (loop_vinfo->vector_mode) == 32)
! 	m_suggested_epilogue_mode = V16QImode;
!     }
    /* When a 128bit SSE vectorized epilogue still has a VF of 16 or larger
       enable a 64bit SSE epilogue.  */
    if (loop_vinfo
--- 26150,26159 ----
    /* When X86_TUNE_AVX512_TWO_EPILOGUES is enabled arrange for both
       a AVX2 and a SSE epilogue for AVX512 vectorized loops.  */
    if (loop_vinfo
+       && LOOP_VINFO_EPILOGUE_P (loop_vinfo)
+       && GET_MODE_SIZE (loop_vinfo->vector_mode) == 32
        && ix86_tune_features[X86_TUNE_AVX512_TWO_EPILOGUES])
!     m_suggested_epilogue_mode = V16QImode;
    /* When a 128bit SSE vectorized epilogue still has a VF of 16 or larger
       enable a 64bit SSE epilogue.  */
    if (loop_vinfo
diff -Nrcpad gcc-16-20250511/gcc/config/ia64/ia64.cc gcc-16-20250518/gcc/config/ia64/ia64.cc
*** gcc-16-20250511/gcc/config/ia64/ia64.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/ia64/ia64.cc	Sun May 18 22:32:07 2025
*************** ia64_expand_tls_address (enum tls_model
*** 1241,1248 ****
  					 LCT_CONST, Pmode,
  					 tga_op1, Pmode, tga_op2, Pmode);
  
!       insns = get_insns ();
!       end_sequence ();
  
        if (GET_MODE (op0) != Pmode)
  	op0 = tga_ret;
--- 1241,1247 ----
  					 LCT_CONST, Pmode,
  					 tga_op1, Pmode, tga_op2, Pmode);
  
!       insns = end_sequence ();
  
        if (GET_MODE (op0) != Pmode)
  	op0 = tga_ret;
*************** ia64_expand_tls_address (enum tls_model
*** 1265,1272 ****
  					 LCT_CONST, Pmode,
  					 tga_op1, Pmode, tga_op2, Pmode);
  
!       insns = get_insns ();
!       end_sequence ();
  
        tga_eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
  				UNSPEC_LD_BASE);
--- 1264,1270 ----
  					 LCT_CONST, Pmode,
  					 tga_op1, Pmode, tga_op2, Pmode);
  
!       insns = end_sequence ();
  
        tga_eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
  				UNSPEC_LD_BASE);
*************** ia64_expand_compare (rtx *expr, rtx *op0
*** 1879,1886 ****
        emit_insn (gen_rtx_SET (cmp, gen_rtx_fmt_ee (ncode, BImode,
  						   ret, const0_rtx)));
  
!       rtx_insn *insns = get_insns ();
!       end_sequence ();
  
        emit_libcall_block (insns, cmp, cmp,
  			  gen_rtx_fmt_ee (code, BImode, *op0, *op1));
--- 1877,1883 ----
        emit_insn (gen_rtx_SET (cmp, gen_rtx_fmt_ee (ncode, BImode,
  						   ret, const0_rtx)));
  
!       rtx_insn *insns = end_sequence ();
  
        emit_libcall_block (insns, cmp, cmp,
  			  gen_rtx_fmt_ee (code, BImode, *op0, *op1));
*************** spill_restore_mem (rtx reg, HOST_WIDE_IN
*** 3174,3181 ****
  				 spill_fill_data.init_reg[iter],
  				 disp_rtx));
  
! 	  seq = get_insns ();
! 	  end_sequence ();
  	}
  
        /* Careful for being the first insn in a sequence.  */
--- 3171,3177 ----
  				 spill_fill_data.init_reg[iter],
  				 disp_rtx));
  
! 	  seq = end_sequence ();
  	}
  
        /* Careful for being the first insn in a sequence.  */
*************** expand_vec_perm_interleave_2 (struct exp
*** 11711,11718 ****
       this *will* succeed.  For V8QImode or V2SImode it may not.  */
    start_sequence ();
    ok = expand_vec_perm_1 (&dfinal);
!   seq = get_insns ();
!   end_sequence ();
    if (!ok)
      return false;
    if (d->testing_p)
--- 11707,11713 ----
       this *will* succeed.  For V8QImode or V2SImode it may not.  */
    start_sequence ();
    ok = expand_vec_perm_1 (&dfinal);
!   seq = end_sequence ();
    if (!ok)
      return false;
    if (d->testing_p)
diff -Nrcpad gcc-16-20250511/gcc/config/loongarch/loongarch.cc gcc-16-20250518/gcc/config/loongarch/loongarch.cc
*** gcc-16-20250511/gcc/config/loongarch/loongarch.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/loongarch/loongarch.cc	Sun May 18 22:32:07 2025
*************** loongarch_call_tls_get_addr (rtx sym, en
*** 2948,2956 ****
  
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
!   insn = get_insns ();
! 
!   end_sequence ();
  
    return insn;
  }
--- 2948,2954 ----
  
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
!   insn = end_sequence ();
  
    return insn;
  }
diff -Nrcpad gcc-16-20250511/gcc/config/m32r/m32r.cc gcc-16-20250518/gcc/config/m32r/m32r.cc
*** gcc-16-20250511/gcc/config/m32r/m32r.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/m32r/m32r.cc	Sun May 18 22:32:07 2025
*************** gen_split_move_double (rtx operands[])
*** 1150,1157 ****
    else
      gcc_unreachable ();
  
!   val = get_insns ();
!   end_sequence ();
    return val;
  }
  
--- 1150,1156 ----
    else
      gcc_unreachable ();
  
!   val = end_sequence ();
    return val;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/config/m32r/m32r.md gcc-16-20250518/gcc/config/m32r/m32r.md
*** gcc-16-20250511/gcc/config/m32r/m32r.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/m32r/m32r.md	Sun May 18 22:32:07 2025
***************
*** 1554,1561 ****
    start_sequence ();
    emit_insn (gen_cmp_ltusi_insn (op1, const1_rtx));
    emit_insn (gen_movcc_insn (op0));
!   operands[3] = get_insns ();
!   end_sequence ();
  }")
  
  (define_insn "seq_insn"
--- 1554,1560 ----
    start_sequence ();
    emit_insn (gen_cmp_ltusi_insn (op1, const1_rtx));
    emit_insn (gen_movcc_insn (op0));
!   operands[3] = end_sequence ();
  }")
  
  (define_insn "seq_insn"
***************
*** 1607,1614 ****
  
    emit_insn (gen_cmp_ltusi_insn (op3, const1_rtx));
    emit_insn (gen_movcc_insn (op0));
!   operands[4] = get_insns ();
!   end_sequence ();
  }")
  
  (define_insn "sne_zero_insn"
--- 1606,1612 ----
  
    emit_insn (gen_cmp_ltusi_insn (op3, const1_rtx));
    emit_insn (gen_movcc_insn (op0));
!   operands[4] = end_sequence ();
  }")
  
  (define_insn "sne_zero_insn"
diff -Nrcpad gcc-16-20250511/gcc/config/m68k/m68k.cc gcc-16-20250518/gcc/config/m68k/m68k.cc
*** gcc-16-20250511/gcc/config/m68k/m68k.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/m68k/m68k.cc	Sun May 18 22:32:07 2025
*************** m68k_call_tls_get_addr (rtx x, rtx eqv,
*** 2763,2770 ****
  				Pmode, x, Pmode);
    m68k_libcall_value_in_a0_p = false;
  
!   insns = get_insns ();
!   end_sequence ();
  
    gcc_assert (can_create_pseudo_p ());
    dest = gen_reg_rtx (Pmode);
--- 2763,2769 ----
  				Pmode, x, Pmode);
    m68k_libcall_value_in_a0_p = false;
  
!   insns = end_sequence ();
  
    gcc_assert (can_create_pseudo_p ());
    dest = gen_reg_rtx (Pmode);
*************** m68k_call_m68k_read_tp (void)
*** 2811,2818 ****
    a0 = emit_library_call_value (m68k_get_m68k_read_tp (), NULL_RTX, LCT_PURE,
  				Pmode);
    m68k_libcall_value_in_a0_p = false;
!   insns = get_insns ();
!   end_sequence ();
  
    /* Attach a unique REG_EQUIV, to allow the RTL optimizers to
       share the m68k_read_tp result with other IE/LE model accesses.  */
--- 2810,2816 ----
    a0 = emit_library_call_value (m68k_get_m68k_read_tp (), NULL_RTX, LCT_PURE,
  				Pmode);
    m68k_libcall_value_in_a0_p = false;
!   insns = end_sequence ();
  
    /* Attach a unique REG_EQUIV, to allow the RTL optimizers to
       share the m68k_read_tp result with other IE/LE model accesses.  */
*************** m68k_sched_md_init_global (FILE *sched_d
*** 6799,6806 ****
  
    start_sequence ();
    emit_insn (gen_ib ());
!   sched_ib.insn = get_insns ();
!   end_sequence ();
  }
  
  /* Scheduling pass is now finished.  Free/reset static variables.  */
--- 6797,6803 ----
  
    start_sequence ();
    emit_insn (gen_ib ());
!   sched_ib.insn = end_sequence ();
  }
  
  /* Scheduling pass is now finished.  Free/reset static variables.  */
diff -Nrcpad gcc-16-20250511/gcc/config/m68k/m68k.md gcc-16-20250518/gcc/config/m68k/m68k.md
*** gcc-16-20250511/gcc/config/m68k/m68k.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/m68k/m68k.md	Sun May 18 22:32:07 2025
***************
*** 4098,4105 ****
        emit_move_insn (operand_subword (operands[0], 1, 1, DFmode),
  		      operand_subword_force (operands[1], 1, DFmode));
  
!       insns = get_insns ();
!       end_sequence ();
  
        emit_insn (insns);
        DONE;
--- 4098,4104 ----
        emit_move_insn (operand_subword (operands[0], 1, 1, DFmode),
  		      operand_subword_force (operands[1], 1, DFmode));
  
!       insns = end_sequence ();
  
        emit_insn (insns);
        DONE;
***************
*** 4132,4139 ****
        emit_move_insn (operand_subword (operands[0], 2, 1, XFmode),
  		      operand_subword_force (operands[1], 2, XFmode));
  
!       insns = get_insns ();
!       end_sequence ();
  
        emit_insn (insns);
        DONE;
--- 4131,4137 ----
        emit_move_insn (operand_subword (operands[0], 2, 1, XFmode),
  		      operand_subword_force (operands[1], 2, XFmode));
  
!       insns = end_sequence ();
  
        emit_insn (insns);
        DONE;
***************
*** 4251,4258 ****
        emit_move_insn (operand_subword (operands[0], 1, 1, DFmode),
  		      operand_subword_force (operands[1], 1, DFmode));
  
!       insns = get_insns ();
!       end_sequence ();
  
        emit_insn (insns);
        DONE;
--- 4249,4255 ----
        emit_move_insn (operand_subword (operands[0], 1, 1, DFmode),
  		      operand_subword_force (operands[1], 1, DFmode));
  
!       insns = end_sequence ();
  
        emit_insn (insns);
        DONE;
***************
*** 4285,4292 ****
        emit_move_insn (operand_subword (operands[0], 2, 1, XFmode),
  		      operand_subword_force (operands[1], 2, XFmode));
  
!       insns = get_insns ();
!       end_sequence ();
  
        emit_insn (insns);
        DONE;
--- 4282,4288 ----
        emit_move_insn (operand_subword (operands[0], 2, 1, XFmode),
  		      operand_subword_force (operands[1], 2, XFmode));
  
!       insns = end_sequence ();
  
        emit_insn (insns);
        DONE;
diff -Nrcpad gcc-16-20250511/gcc/config/microblaze/microblaze.cc gcc-16-20250518/gcc/config/microblaze/microblaze.cc
*** gcc-16-20250511/gcc/config/microblaze/microblaze.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/microblaze/microblaze.cc	Sun May 18 22:32:07 2025
*************** microblaze_call_tls_get_addr (rtx x, rtx
*** 585,592 ****
                                       LCT_PURE, /* LCT_CONST?  */
                                       Pmode, reg, Pmode);
  
!   insns = get_insns ();
!   end_sequence ();
  
    return insns;
  }
--- 585,591 ----
                                       LCT_PURE, /* LCT_CONST?  */
                                       Pmode, reg, Pmode);
  
!   insns = end_sequence ();
  
    return insns;
  }
diff -Nrcpad gcc-16-20250511/gcc/config/mips/mips.cc gcc-16-20250518/gcc/config/mips/mips.cc
*** gcc-16-20250511/gcc/config/mips/mips.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/mips/mips.cc	Sun May 18 22:32:07 2025
*************** mips_call_tls_get_addr (rtx sym, enum mi
*** 3621,3629 ****
  			   const0_rtx, NULL_RTX, false);
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
!   insn = get_insns ();
! 
!   end_sequence ();
  
    return insn;
  }
--- 3621,3627 ----
  			   const0_rtx, NULL_RTX, false);
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
!   insn = end_sequence ();
  
    return insn;
  }
*************** mips_ls2_init_dfa_post_cycle_insn (void)
*** 15167,15189 ****
  {
    start_sequence ();
    emit_insn (gen_ls2_alu1_turn_enabled_insn ());
!   mips_ls2.alu1_turn_enabled_insn = get_insns ();
!   end_sequence ();
  
    start_sequence ();
    emit_insn (gen_ls2_alu2_turn_enabled_insn ());
!   mips_ls2.alu2_turn_enabled_insn = get_insns ();
!   end_sequence ();
  
    start_sequence ();
    emit_insn (gen_ls2_falu1_turn_enabled_insn ());
!   mips_ls2.falu1_turn_enabled_insn = get_insns ();
!   end_sequence ();
  
    start_sequence ();
    emit_insn (gen_ls2_falu2_turn_enabled_insn ());
!   mips_ls2.falu2_turn_enabled_insn = get_insns ();
!   end_sequence ();
  
    mips_ls2.alu1_core_unit_code = get_cpu_unit_code ("ls2_alu1_core");
    mips_ls2.alu2_core_unit_code = get_cpu_unit_code ("ls2_alu2_core");
--- 15165,15183 ----
  {
    start_sequence ();
    emit_insn (gen_ls2_alu1_turn_enabled_insn ());
!   mips_ls2.alu1_turn_enabled_insn = end_sequence ();
  
    start_sequence ();
    emit_insn (gen_ls2_alu2_turn_enabled_insn ());
!   mips_ls2.alu2_turn_enabled_insn = end_sequence ();
  
    start_sequence ();
    emit_insn (gen_ls2_falu1_turn_enabled_insn ());
!   mips_ls2.falu1_turn_enabled_insn = end_sequence ();
  
    start_sequence ();
    emit_insn (gen_ls2_falu2_turn_enabled_insn ());
!   mips_ls2.falu2_turn_enabled_insn = end_sequence ();
  
    mips_ls2.alu1_core_unit_code = get_cpu_unit_code ("ls2_alu1_core");
    mips_ls2.alu2_core_unit_code = get_cpu_unit_code ("ls2_alu2_core");
*************** mips16_split_long_branches (void)
*** 19892,19899 ****
  		emit_label (new_label);
  	      }
  
! 	    jump_sequence = get_insns ();
! 	    end_sequence ();
  
  	    emit_insn_after (jump_sequence, jump_insn);
  	    if (new_label)
--- 19886,19892 ----
  		emit_label (new_label);
  	      }
  
! 	    jump_sequence = end_sequence ();
  
  	    emit_insn_after (jump_sequence, jump_insn);
  	    if (new_label)
diff -Nrcpad gcc-16-20250511/gcc/config/nvptx/gen-multilib-matches-tests gcc-16-20250518/gcc/config/nvptx/gen-multilib-matches-tests
*** gcc-16-20250511/gcc/config/nvptx/gen-multilib-matches-tests	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/nvptx/gen-multilib-matches-tests	Sun May 18 22:32:07 2025
*************** AEMM .=misa?sm_35
*** 18,23 ****
--- 18,24 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM .=misa?sm_35
*** 32,45 ****
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
  CMMC
  
! BEGIN '--with-arch=sm_30', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_53,sm_70,sm_75,sm_80,sm_89'
  SMOID sm_30
! SMOIL sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75 sm_80 sm_89
  AEMM .=misa?sm_30
  CMMC
  
--- 33,47 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
  CMMC
  
! BEGIN '--with-arch=sm_30', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_53,sm_61,sm_70,sm_75,sm_80,sm_89'
  SMOID sm_30
! SMOIL sm_30 sm_35 sm_37 sm_52 sm_53 sm_61 sm_70 sm_75 sm_80 sm_89
  AEMM .=misa?sm_30
  CMMC
  
*************** AEMM .=misa?sm_35
*** 52,57 ****
--- 54,60 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM .=misa?sm_35
*** 65,70 ****
--- 68,74 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_30=misa?sm_35
*** 79,84 ****
--- 83,89 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_35=misa?sm_30
*** 93,98 ****
--- 98,104 ----
  AEMM misa?sm_35=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM misa?sm_75=misa?sm_80
  AEMM misa?sm_75=misa?sm_89
*************** AEMM misa?sm_30=misa?sm_35
*** 106,111 ****
--- 112,118 ----
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_37=misa?sm_30
*** 119,137 ****
  AEMM misa?sm_37=misa?sm_35
  AEMM misa?sm_37=misa?sm_52
  AEMM .=misa?sm_53
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
  AEMM .=misa?sm_89
  CMMC
  
! BEGIN '--with-arch=sm_53', '--with-multilib-list=sm_53=sm_30,sm_35,sm_37,sm_52,sm_70,sm_75,sm_80,sm_89'
  SMOID sm_53
! SMOIL sm_53 sm_30 sm_35 sm_37 sm_52 sm_70 sm_75 sm_80 sm_89
  AEMM .=misa?sm_53
  CMMC
  
  
  BEGIN '--with-arch=sm_70', '--with-multilib-list=sm_70'
  SMOID sm_70
  SMOIL sm_70
--- 126,180 ----
  AEMM misa?sm_37=misa?sm_35
  AEMM misa?sm_37=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
  AEMM .=misa?sm_89
  CMMC
  
! BEGIN '--with-arch=sm_53', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_61,sm_70,sm_75,sm_80,sm_89'
  SMOID sm_53
! SMOIL sm_53 sm_30 sm_35 sm_37 sm_52 sm_61 sm_70 sm_75 sm_80 sm_89
  AEMM .=misa?sm_53
  CMMC
  
  
+ BEGIN '--with-arch=sm_61', '--with-multilib-list=sm_61,sm_30'
+ SMOID sm_61
+ SMOIL sm_61 sm_30
+ AEMM misa?sm_30=misa?sm_35
+ AEMM misa?sm_30=misa?sm_37
+ AEMM misa?sm_30=misa?sm_52
+ AEMM misa?sm_30=misa?sm_53
+ AEMM .=misa?sm_61
+ AEMM .=misa?sm_70
+ AEMM .=misa?sm_75
+ AEMM .=misa?sm_80
+ AEMM .=misa?sm_89
+ CMMC
+ 
+ BEGIN '--with-arch=sm_61', '--with-multilib-list=sm_61,sm_37'
+ SMOID sm_61
+ SMOIL sm_61 sm_37
+ AEMM misa?sm_37=misa?sm_30
+ AEMM misa?sm_37=misa?sm_35
+ AEMM misa?sm_37=misa?sm_52
+ AEMM misa?sm_37=misa?sm_53
+ AEMM .=misa?sm_61
+ AEMM .=misa?sm_70
+ AEMM .=misa?sm_75
+ AEMM .=misa?sm_80
+ AEMM .=misa?sm_89
+ CMMC
+ 
+ BEGIN '--with-arch=sm_61', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_61,sm_70,sm_75,sm_80,sm_89'
+ SMOID sm_61
+ SMOIL sm_61 sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75 sm_80 sm_89
+ AEMM .=misa?sm_61
+ CMMC
+ 
+ 
  BEGIN '--with-arch=sm_70', '--with-multilib-list=sm_70'
  SMOID sm_70
  SMOIL sm_70
*************** AEMM .=misa?sm_35
*** 140,145 ****
--- 183,189 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_30=misa?sm_35
*** 153,158 ****
--- 197,203 ----
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
  AEMM misa?sm_30=misa?sm_53
+ AEMM misa?sm_30=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_53=misa?sm_30
*** 166,171 ****
--- 211,217 ----
  AEMM misa?sm_53=misa?sm_35
  AEMM misa?sm_53=misa?sm_37
  AEMM misa?sm_53=misa?sm_52
+ AEMM misa?sm_53=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** SMOIL sm_70 sm_53 sm_30
*** 178,183 ****
--- 224,230 ----
  AEMM misa?sm_30=misa?sm_35
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
+ AEMM misa?sm_53=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_30=misa?sm_35
*** 192,197 ****
--- 239,245 ----
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
  AEMM misa?sm_30=misa?sm_53
+ AEMM misa?sm_30=misa?sm_61
  AEMM misa?sm_30=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_53=misa?sm_30
*** 205,210 ****
--- 253,259 ----
  AEMM misa?sm_53=misa?sm_35
  AEMM misa?sm_53=misa?sm_37
  AEMM misa?sm_53=misa?sm_52
+ AEMM misa?sm_53=misa?sm_61
  AEMM misa?sm_53=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** SMOIL sm_75 sm_30 sm_53
*** 217,222 ****
--- 266,272 ----
  AEMM misa?sm_30=misa?sm_35
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
+ AEMM misa?sm_53=misa?sm_61
  AEMM misa?sm_53=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM .=misa?sm_35
*** 232,237 ****
--- 282,288 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_30=misa?sm_35
*** 245,250 ****
--- 296,302 ----
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
  AEMM misa?sm_30=misa?sm_53
+ AEMM misa?sm_30=misa?sm_61
  AEMM misa?sm_30=misa?sm_70
  AEMM misa?sm_30=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_75=misa?sm_35
*** 259,264 ****
--- 311,317 ----
  AEMM misa?sm_75=misa?sm_37
  AEMM misa?sm_75=misa?sm_52
  AEMM misa?sm_75=misa?sm_53
+ AEMM misa?sm_75=misa?sm_61
  AEMM misa?sm_75=misa?sm_70
  AEMM .=misa?sm_80
  AEMM .=misa?sm_89
*************** AEMM .=misa?sm_35
*** 273,278 ****
--- 326,332 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_52=misa?sm_30
*** 286,291 ****
--- 340,346 ----
  AEMM misa?sm_52=misa?sm_35
  AEMM misa?sm_52=misa?sm_37
  AEMM misa?sm_52=misa?sm_53
+ AEMM misa?sm_52=misa?sm_61
  AEMM misa?sm_52=misa?sm_70
  AEMM misa?sm_52=misa?sm_75
  AEMM misa?sm_52=misa?sm_80
*************** AEMM .=misa?sm_89
*** 293,300 ****
  CMMC
  
  
! BEGIN '--with-arch=sm_89', '--with-multilib-list=sm_89,sm_30,sm_35,sm_37,sm_52,sm_53,sm_70,sm_75,sm_80'
  SMOID sm_89
! SMOIL sm_89 sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75 sm_80
  AEMM .=misa?sm_89
  CMMC
--- 348,355 ----
  CMMC
  
  
! BEGIN '--with-arch=sm_89', '--with-multilib-list=sm_89,sm_30,sm_35,sm_37,sm_52,sm_53,sm_61,sm_70,sm_75,sm_80'
  SMOID sm_89
! SMOIL sm_89 sm_30 sm_35 sm_37 sm_52 sm_53 sm_61 sm_70 sm_75 sm_80
  AEMM .=misa?sm_89
  CMMC
diff -Nrcpad gcc-16-20250511/gcc/config/nvptx/nvptx-gen.h gcc-16-20250518/gcc/config/nvptx/nvptx-gen.h
*** gcc-16-20250511/gcc/config/nvptx/nvptx-gen.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/nvptx/nvptx-gen.h	Sun May 18 22:32:07 2025
***************
*** 26,31 ****
--- 26,32 ----
  #define TARGET_SM37 (ptx_isa_option >= PTX_ISA_SM37)
  #define TARGET_SM52 (ptx_isa_option >= PTX_ISA_SM52)
  #define TARGET_SM53 (ptx_isa_option >= PTX_ISA_SM53)
+ #define TARGET_SM61 (ptx_isa_option >= PTX_ISA_SM61)
  #define TARGET_SM70 (ptx_isa_option >= PTX_ISA_SM70)
  #define TARGET_SM75 (ptx_isa_option >= PTX_ISA_SM75)
  #define TARGET_SM80 (ptx_isa_option >= PTX_ISA_SM80)
diff -Nrcpad gcc-16-20250511/gcc/config/nvptx/nvptx-gen.opt gcc-16-20250518/gcc/config/nvptx/nvptx-gen.opt
*** gcc-16-20250511/gcc/config/nvptx/nvptx-gen.opt	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/nvptx/nvptx-gen.opt	Sun May 18 22:32:07 2025
*************** EnumValue
*** 39,44 ****
--- 39,47 ----
  Enum(ptx_isa) String(sm_53) Value(PTX_ISA_SM53)
  
  EnumValue
+ Enum(ptx_isa) String(sm_61) Value(PTX_ISA_SM61)
+ 
+ EnumValue
  Enum(ptx_isa) String(sm_70) Value(PTX_ISA_SM70)
  
  EnumValue
diff -Nrcpad gcc-16-20250511/gcc/config/nvptx/nvptx-opts.h gcc-16-20250518/gcc/config/nvptx/nvptx-opts.h
*** gcc-16-20250511/gcc/config/nvptx/nvptx-opts.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/nvptx/nvptx-opts.h	Sun May 18 22:32:07 2025
*************** enum ptx_version
*** 40,45 ****
--- 40,46 ----
    PTX_VERSION_3_1,
    PTX_VERSION_4_1,
    PTX_VERSION_4_2,
+   PTX_VERSION_5_0,
    PTX_VERSION_6_0,
    PTX_VERSION_6_3,
    PTX_VERSION_7_0,
diff -Nrcpad gcc-16-20250511/gcc/config/nvptx/nvptx-sm.def gcc-16-20250518/gcc/config/nvptx/nvptx-sm.def
*** gcc-16-20250511/gcc/config/nvptx/nvptx-sm.def	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/nvptx/nvptx-sm.def	Sun May 18 22:32:07 2025
*************** NVPTX_SM (35, NVPTX_SM_SEP)
*** 25,30 ****
--- 25,31 ----
  NVPTX_SM (37, NVPTX_SM_SEP)
  NVPTX_SM (52, NVPTX_SM_SEP)
  NVPTX_SM (53, NVPTX_SM_SEP)
+ NVPTX_SM (61, NVPTX_SM_SEP)
  NVPTX_SM (70, NVPTX_SM_SEP)
  NVPTX_SM (75, NVPTX_SM_SEP)
  NVPTX_SM (80, NVPTX_SM_SEP)
diff -Nrcpad gcc-16-20250511/gcc/config/nvptx/nvptx.cc gcc-16-20250518/gcc/config/nvptx/nvptx.cc
*** gcc-16-20250511/gcc/config/nvptx/nvptx.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/nvptx/nvptx.cc	Sun May 18 22:32:07 2025
*************** first_ptx_version_supporting_sm (enum pt
*** 220,225 ****
--- 220,227 ----
        return PTX_VERSION_4_1;
      case PTX_ISA_SM53:
        return PTX_VERSION_4_2;
+     case PTX_ISA_SM61:
+       return PTX_VERSION_5_0;
      case PTX_ISA_SM70:
        return PTX_VERSION_6_0;
      case PTX_ISA_SM75:
*************** ptx_version_to_string (enum ptx_version
*** 268,273 ****
--- 270,277 ----
        return "4.1";
      case PTX_VERSION_4_2:
        return "4.2";
+     case PTX_VERSION_5_0:
+       return "5.0";
      case PTX_VERSION_6_0:
        return "6.0";
      case PTX_VERSION_6_3:
*************** ptx_version_to_number (enum ptx_version
*** 294,299 ****
--- 298,305 ----
        return major_p ? 4 : 1;
      case PTX_VERSION_4_2:
        return major_p ? 4 : 2;
+     case PTX_VERSION_5_0:
+       return major_p ? 5 : 0;
      case PTX_VERSION_6_0:
        return major_p ? 6 : 0;
      case PTX_VERSION_6_3:
*************** nvptx_gen_shuffle (rtx dst, rtx src, rtx
*** 2039,2046 ****
  	  start_sequence ();
  	  emit_insn (nvptx_gen_shuffle (dst_real, src_real, idx, kind));
  	  emit_insn (nvptx_gen_shuffle (dst_imag, src_imag, idx, kind));
! 	  res = get_insns ();
! 	  end_sequence ();
  	}
  	break;
      case E_SImode:
--- 2045,2051 ----
  	  start_sequence ();
  	  emit_insn (nvptx_gen_shuffle (dst_real, src_real, idx, kind));
  	  emit_insn (nvptx_gen_shuffle (dst_imag, src_imag, idx, kind));
! 	  res = end_sequence ();
  	}
  	break;
      case E_SImode:
*************** nvptx_gen_shuffle (rtx dst, rtx src, rtx
*** 2060,2067 ****
  	emit_insn (nvptx_gen_shuffle (tmp0, tmp0, idx, kind));
  	emit_insn (nvptx_gen_shuffle (tmp1, tmp1, idx, kind));
  	emit_insn (nvptx_gen_pack (dst, tmp0, tmp1));
! 	res = get_insns ();
! 	end_sequence ();
        }
        break;
      case E_V2SImode:
--- 2065,2071 ----
  	emit_insn (nvptx_gen_shuffle (tmp0, tmp0, idx, kind));
  	emit_insn (nvptx_gen_shuffle (tmp1, tmp1, idx, kind));
  	emit_insn (nvptx_gen_pack (dst, tmp0, tmp1));
! 	res = end_sequence ();
        }
        break;
      case E_V2SImode:
*************** nvptx_gen_shuffle (rtx dst, rtx src, rtx
*** 2079,2086 ****
  	emit_insn (nvptx_gen_shuffle (tmp1, tmp1, idx, kind));
  	emit_insn (gen_movsi (dst0, tmp0));
  	emit_insn (gen_movsi (dst1, tmp1));
! 	res = get_insns ();
! 	end_sequence ();
        }
        break;
      case E_V2DImode:
--- 2083,2089 ----
  	emit_insn (nvptx_gen_shuffle (tmp1, tmp1, idx, kind));
  	emit_insn (gen_movsi (dst0, tmp0));
  	emit_insn (gen_movsi (dst1, tmp1));
! 	res = end_sequence ();
        }
        break;
      case E_V2DImode:
*************** nvptx_gen_shuffle (rtx dst, rtx src, rtx
*** 2098,2105 ****
  	emit_insn (nvptx_gen_shuffle (tmp1, tmp1, idx, kind));
  	emit_insn (gen_movdi (dst0, tmp0));
  	emit_insn (gen_movdi (dst1, tmp1));
! 	res = get_insns ();
! 	end_sequence ();
        }
        break;
      case E_BImode:
--- 2101,2107 ----
  	emit_insn (nvptx_gen_shuffle (tmp1, tmp1, idx, kind));
  	emit_insn (gen_movdi (dst0, tmp0));
  	emit_insn (gen_movdi (dst1, tmp1));
! 	res = end_sequence ();
        }
        break;
      case E_BImode:
*************** nvptx_gen_shuffle (rtx dst, rtx src, rtx
*** 2110,2117 ****
  	emit_insn (gen_sel_truesi (tmp, src, GEN_INT (1), const0_rtx));
  	emit_insn (nvptx_gen_shuffle (tmp, tmp, idx, kind));
  	emit_insn (gen_rtx_SET (dst, gen_rtx_NE (BImode, tmp, const0_rtx)));
! 	res = get_insns ();
! 	end_sequence ();
        }
        break;
      case E_QImode:
--- 2112,2118 ----
  	emit_insn (gen_sel_truesi (tmp, src, GEN_INT (1), const0_rtx));
  	emit_insn (nvptx_gen_shuffle (tmp, tmp, idx, kind));
  	emit_insn (gen_rtx_SET (dst, gen_rtx_NE (BImode, tmp, const0_rtx)));
! 	res = end_sequence ();
        }
        break;
      case E_QImode:
*************** nvptx_gen_shuffle (rtx dst, rtx src, rtx
*** 2124,2131 ****
  	emit_insn (nvptx_gen_shuffle (tmp, tmp, idx, kind));
  	emit_insn (gen_rtx_SET (dst, gen_rtx_fmt_e (TRUNCATE, GET_MODE (dst),
  						    tmp)));
! 	res = get_insns ();
! 	end_sequence ();
        }
        break;
  
--- 2125,2131 ----
  	emit_insn (nvptx_gen_shuffle (tmp, tmp, idx, kind));
  	emit_insn (gen_rtx_SET (dst, gen_rtx_fmt_e (TRUNCATE, GET_MODE (dst),
  						    tmp)));
! 	res = end_sequence ();
        }
        break;
  
*************** nvptx_gen_shared_bcast (rtx reg, propaga
*** 2188,2195 ****
  	emit_insn (nvptx_gen_shared_bcast (tmp, pm, rep, data, vector));
  	if (pm & PM_write)
  	  emit_insn (gen_rtx_SET (reg, gen_rtx_NE (BImode, tmp, const0_rtx)));
! 	res = get_insns ();
! 	end_sequence ();
        }
        break;
  
--- 2188,2194 ----
  	emit_insn (nvptx_gen_shared_bcast (tmp, pm, rep, data, vector));
  	if (pm & PM_write)
  	  emit_insn (gen_rtx_SET (reg, gen_rtx_NE (BImode, tmp, const0_rtx)));
! 	res = end_sequence ();
        }
        break;
  
*************** nvptx_gen_shared_bcast (rtx reg, propaga
*** 2225,2232 ****
  	    emit_insn (res);
  	    emit_insn (gen_adddi3 (data->ptr, data->ptr,
  				   GEN_INT (GET_MODE_SIZE (GET_MODE (reg)))));
! 	    res = get_insns ();
! 	    end_sequence ();
  	  }
  	else
  	  rep = 1;
--- 2224,2230 ----
  	    emit_insn (res);
  	    emit_insn (gen_adddi3 (data->ptr, data->ptr,
  				   GEN_INT (GET_MODE_SIZE (GET_MODE (reg)))));
! 	    res = end_sequence ();
  	  }
  	else
  	  rep = 1;
*************** nvptx_propagate (bool is_call, basic_blo
*** 4597,4604 ****
  	}
        emit_insn (gen_rtx_CLOBBER (GET_MODE (tmp), tmp));
        emit_insn (gen_rtx_CLOBBER (GET_MODE (ptr), ptr));
!       rtx cpy = get_insns ();
!       end_sequence ();
        insn = emit_insn_after (cpy, insn);
      }
  
--- 4595,4601 ----
  	}
        emit_insn (gen_rtx_CLOBBER (GET_MODE (tmp), tmp));
        emit_insn (gen_rtx_CLOBBER (GET_MODE (ptr), ptr));
!       rtx cpy = end_sequence ();
        insn = emit_insn_after (cpy, insn);
      }
  
*************** workaround_uninit_method_1 (void)
*** 5603,5610 ****
        if (nvptx_comment && first != NULL)
  	emit_insn (gen_comment ("Start: Added by -minit-regs=1"));
        emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
!       rtx_insn *inits = get_insns ();
!       end_sequence ();
  
        if (dump_file && (dump_flags & TDF_DETAILS))
  	for (rtx_insn *init = inits; init != NULL; init = NEXT_INSN (init))
--- 5600,5606 ----
        if (nvptx_comment && first != NULL)
  	emit_insn (gen_comment ("Start: Added by -minit-regs=1"));
        emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
!       rtx_insn *inits = end_sequence ();
  
        if (dump_file && (dump_flags & TDF_DETAILS))
  	for (rtx_insn *init = inits; init != NULL; init = NEXT_INSN (init))
*************** workaround_uninit_method_2 (void)
*** 5660,5667 ****
        if (nvptx_comment && first != NULL)
  	emit_insn (gen_comment ("Start: Added by -minit-regs=2:"));
        emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
!       rtx_insn *inits = get_insns ();
!       end_sequence ();
  
        if (dump_file && (dump_flags & TDF_DETAILS))
  	for (rtx_insn *init = inits; init != NULL; init = NEXT_INSN (init))
--- 5656,5662 ----
        if (nvptx_comment && first != NULL)
  	emit_insn (gen_comment ("Start: Added by -minit-regs=2:"));
        emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
!       rtx_insn *inits = end_sequence ();
  
        if (dump_file && (dump_flags & TDF_DETAILS))
  	for (rtx_insn *init = inits; init != NULL; init = NEXT_INSN (init))
*************** workaround_uninit_method_3 (void)
*** 5731,5738 ****
  
  	      start_sequence ();
  	      emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
! 	      rtx_insn *inits = get_insns ();
! 	      end_sequence ();
  
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		for (rtx_insn *init = inits; init != NULL;
--- 5726,5732 ----
  
  	      start_sequence ();
  	      emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
! 	      rtx_insn *inits = end_sequence ();
  
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		for (rtx_insn *init = inits; init != NULL;
*************** workaround_uninit_method_3 (void)
*** 5763,5770 ****
  	    emit_insn (gen_comment ("Start: Added by -minit-regs=3:"));
  	    emit_insn (e->insns.r);
  	    emit_insn (gen_comment ("End: Added by -minit-regs=3:"));
! 	    e->insns.r = get_insns ();
! 	    end_sequence ();
  	  }
        }
  
--- 5757,5763 ----
  	    emit_insn (gen_comment ("Start: Added by -minit-regs=3:"));
  	    emit_insn (e->insns.r);
  	    emit_insn (gen_comment ("End: Added by -minit-regs=3:"));
! 	    e->insns.r = end_sequence ();
  	  }
        }
  
diff -Nrcpad gcc-16-20250511/gcc/config/nvptx/nvptx.h gcc-16-20250518/gcc/config/nvptx/nvptx.h
*** gcc-16-20250511/gcc/config/nvptx/nvptx.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/nvptx/nvptx.h	Sun May 18 22:32:07 2025
***************
*** 101,106 ****
--- 101,107 ----
     PTX ISA Version 3.1.  */
  #define TARGET_PTX_4_1 (ptx_version_option >= PTX_VERSION_4_1)
  #define TARGET_PTX_4_2 (ptx_version_option >= PTX_VERSION_4_2)
+ #define TARGET_PTX_5_0 (ptx_version_option >= PTX_VERSION_5_0)
  #define TARGET_PTX_6_0 (ptx_version_option >= PTX_VERSION_6_0)
  #define TARGET_PTX_6_3 (ptx_version_option >= PTX_VERSION_6_3)
  #define TARGET_PTX_7_0 (ptx_version_option >= PTX_VERSION_7_0)
diff -Nrcpad gcc-16-20250511/gcc/config/nvptx/nvptx.opt gcc-16-20250518/gcc/config/nvptx/nvptx.opt
*** gcc-16-20250511/gcc/config/nvptx/nvptx.opt	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/nvptx/nvptx.opt	Sun May 18 22:32:07 2025
*************** march-map=sm_60
*** 88,97 ****
  Target RejectNegative Alias(misa=,sm_53)
  
  march-map=sm_61
! Target RejectNegative Alias(misa=,sm_53)
  
  march-map=sm_62
! Target RejectNegative Alias(misa=,sm_53)
  
  march-map=sm_70
  Target RejectNegative Alias(misa=,sm_70)
--- 88,97 ----
  Target RejectNegative Alias(misa=,sm_53)
  
  march-map=sm_61
! Target RejectNegative Alias(misa=,sm_61)
  
  march-map=sm_62
! Target RejectNegative Alias(misa=,sm_61)
  
  march-map=sm_70
  Target RejectNegative Alias(misa=,sm_70)
*************** EnumValue
*** 134,139 ****
--- 134,142 ----
  Enum(ptx_version) String(4.2) Value(PTX_VERSION_4_2)
  
  EnumValue
+ Enum(ptx_version) String(5.0) Value(PTX_VERSION_5_0)
+ 
+ EnumValue
  Enum(ptx_version) String(6.0) Value(PTX_VERSION_6_0)
  
  EnumValue
diff -Nrcpad gcc-16-20250511/gcc/config/or1k/or1k.cc gcc-16-20250518/gcc/config/or1k/or1k.cc
*** gcc-16-20250511/gcc/config/or1k/or1k.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/or1k/or1k.cc	Sun May 18 22:32:07 2025
*************** or1k_init_pic_reg (void)
*** 460,467 ****
        cfun->machine->set_got_insn =
  	emit_insn (gen_set_got_tmp (pic_offset_table_rtx));
  
!       rtx_insn *seq = get_insns ();
!       end_sequence ();
  
        edge entry_edge = single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun));
        insert_insn_on_edge (seq, entry_edge);
--- 460,466 ----
        cfun->machine->set_got_insn =
  	emit_insn (gen_set_got_tmp (pic_offset_table_rtx));
  
!       rtx_insn *seq = end_sequence ();
  
        edge entry_edge = single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun));
        insert_insn_on_edge (seq, entry_edge);
diff -Nrcpad gcc-16-20250511/gcc/config/pa/pa.cc gcc-16-20250518/gcc/config/pa/pa.cc
*** gcc-16-20250511/gcc/config/pa/pa.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/pa/pa.cc	Sun May 18 22:32:07 2025
*************** legitimize_tls_address (rtx addr)
*** 1123,1130 ****
  	else
  	  emit_insn (gen_tld_load (tmp, addr));
  	t1 = hppa_tls_call (tmp);
! 	insn = get_insns ();
! 	end_sequence ();
  	t2 = gen_reg_rtx (Pmode);
  	emit_libcall_block (insn, t2, t1,
  			    gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
--- 1123,1129 ----
  	else
  	  emit_insn (gen_tld_load (tmp, addr));
  	t1 = hppa_tls_call (tmp);
! 	insn = end_sequence ();
  	t2 = gen_reg_rtx (Pmode);
  	emit_libcall_block (insn, t2, t1,
  			    gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
diff -Nrcpad gcc-16-20250511/gcc/config/pru/pru.cc gcc-16-20250518/gcc/config/pru/pru.cc
*** gcc-16-20250511/gcc/config/pru/pru.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/pru/pru.cc	Sun May 18 22:32:07 2025
*************** pru_expand_fp_compare (rtx comparison, m
*** 1040,1047 ****
  
    cmp = emit_library_call_value (libfunc, 0, LCT_CONST, SImode,
  				 op0, op_mode, op1, op_mode);
!   insns = get_insns ();
!   end_sequence ();
  
    emit_libcall_block (insns, cmp, cmp,
  		      gen_rtx_fmt_ee (code, SImode, op0, op1));
--- 1040,1046 ----
  
    cmp = emit_library_call_value (libfunc, 0, LCT_CONST, SImode,
  				 op0, op_mode, op1, op_mode);
!   insns = end_sequence ();
  
    emit_libcall_block (insns, cmp, cmp,
  		      gen_rtx_fmt_ee (code, SImode, op0, op1));
*************** pru_reorg_loop (rtx_insn *insns)
*** 2919,2926 ****
  	    LABEL_NUSES (end->label)++;
  
  	    /* Emit the whole sequence before the doloop_end.  */
! 	    insn = get_insns ();
! 	    end_sequence ();
  	    emit_insn_before (insn, end->insn);
  
  	    /* Delete the doloop_end.  */
--- 2918,2924 ----
  	    LABEL_NUSES (end->label)++;
  
  	    /* Emit the whole sequence before the doloop_end.  */
! 	    insn = end_sequence ();
  	    emit_insn_before (insn, end->insn);
  
  	    /* Delete the doloop_end.  */
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/autovec-opt.md gcc-16-20250518/gcc/config/riscv/autovec-opt.md
*** gcc-16-20250511/gcc/config/riscv/autovec-opt.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/autovec-opt.md	Sun May 18 22:32:07 2025
***************
*** 1696,1698 ****
--- 1696,1715 ----
  				   riscv_vector::BINARY_OP, ops);
    }
    [(set_attr "type" "vialu")])
+ 
+ (define_insn_and_split "*<optab>_vx_<mode>"
+  [(set (match_operand:V_VLSI    0 "register_operand")
+        (any_int_binop_no_shift_vx:V_VLSI
+ 	 (match_operand:V_VLSI  2 "<binop_rhs2_predicate>")
+ 	 (vec_duplicate:V_VLSI
+ 	   (match_operand:<VEL> 1 "register_operand"))))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     rtx ops[] = {operands[0], operands[2], operands[1]};
+     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (<CODE>, <MODE>mode),
+ 				   riscv_vector::BINARY_OP, ops);
+   }
+   [(set_attr "type" "vialu")])
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/gen-riscv-ext-opt.cc gcc-16-20250518/gcc/config/riscv/gen-riscv-ext-opt.cc
*** gcc-16-20250511/gcc/config/riscv/gen-riscv-ext-opt.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/config/riscv/gen-riscv-ext-opt.cc	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,105 ----
+ #include <vector>
+ #include <string>
+ #include <set>
+ #include <stdio.h>
+ #include "riscv-opts.h"
+ 
+ struct version_t
+ {
+   int major;
+   int minor;
+   version_t (int major, int minor,
+ 	     enum riscv_isa_spec_class spec = ISA_SPEC_CLASS_NONE)
+     : major (major), minor (minor)
+   {}
+   bool operator<(const version_t &other) const
+   {
+     if (major != other.major)
+       return major < other.major;
+     return minor < other.minor;
+   }
+ 
+   bool operator== (const version_t &other) const
+   {
+     return major == other.major && minor == other.minor;
+   }
+ };
+ 
+ static void
+ print_ext_doc_entry (const std::string &ext_name, const std::string &full_name,
+ 		     const std::string &desc,
+ 		     const std::vector<version_t> &supported_versions)
+ {
+   // Implementation of the function to print the documentation entry
+   // for the extension.
+   std::set<version_t> unique_versions;
+   for (const auto &version : supported_versions)
+     unique_versions.insert (version);
+   printf ("@item %s\n", ext_name.c_str ());
+   printf ("@tab");
+   for (const auto &version : unique_versions)
+     {
+       printf (" %d.%d", version.major, version.minor);
+     }
+   printf ("\n");
+   printf ("@tab %s", full_name.c_str ());
+   if (desc.size ())
+     printf (", %s", desc.c_str ());
+   printf ("\n\n");
+ }
+ 
+ int
+ main ()
+ {
+   puts ("; Target options for the RISC-V port of the compiler");
+   puts (";");
+   puts ("; Copyright (C) 2025 Free Software Foundation, Inc.");
+   puts (";");
+   puts ("; This file is part of GCC.");
+   puts (";");
+   puts (
+     "; GCC is free software; you can redistribute it and/or modify it under");
+   puts (
+     "; the terms of the GNU General Public License as published by the Free");
+   puts (
+     "; Software Foundation; either version 3, or (at your option) any later");
+   puts ("; version.");
+   puts (";");
+   puts ("; GCC is distributed in the hope that it will be useful, but WITHOUT");
+   puts ("; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY");
+   puts ("; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public");
+   puts ("; License for more details.");
+   puts (";");
+   puts ("; You should have received a copy of the GNU General Public License");
+   puts ("; along with GCC; see the file COPYING3.  If not see ");
+   puts ("; <http://www.gnu.org/licenses/>.");
+ 
+   puts ("; This file is generated automatically using");
+   puts (";  gcc/config/riscv/gen-riscv-ext-opt.cc from:");
+   puts (";       gcc/config/riscv/riscv-ext.def");
+   puts ("");
+   puts ("; Please *DO NOT* edit manually.");
+ 
+   std::set<std::string> all_vars;
+ #define DEFINE_RISCV_EXT(NAME, UPPERCAE_NAME, FULL_NAME, DESC, URL, DEP_EXTS,  \
+ 			 SUPPORTED_VERSIONS, FLAG_GROUP, BITMASK_GROUP_ID,     \
+ 			 BITMASK_BIT_POSITION, EXTRA_EXTENSION_FLAGS)          \
+   all_vars.insert ("riscv_" #FLAG_GROUP "_subext");
+ #include "riscv-ext.def"
+ #undef DEFINE_RISCV_EXT
+ 
+   for (auto var : all_vars)
+     {
+       puts ("TargetVariable");
+       printf ("int %s\n\n", var.c_str ());
+     }
+ 
+ #define DEFINE_RISCV_EXT(NAME, UPPERCAE_NAME, FULL_NAME, DESC, URL, DEP_EXTS,  \
+ 			 SUPPORTED_VERSIONS, FLAG_GROUP, BITMASK_GROUP_ID,     \
+ 			 BITMASK_BIT_POSITION, EXTRA_EXTENSION_FLAGS)          \
+   puts ("Mask(" #UPPERCAE_NAME ") Var(riscv_" #FLAG_GROUP "_subext)\n");
+ #include "riscv-ext.def"
+ #undef DEFINE_RISCV_EXT
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/gen-riscv-ext-texi.cc gcc-16-20250518/gcc/config/riscv/gen-riscv-ext-texi.cc
*** gcc-16-20250511/gcc/config/riscv/gen-riscv-ext-texi.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/config/riscv/gen-riscv-ext-texi.cc	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,88 ----
+ #include <vector>
+ #include <string>
+ #include <set>
+ #include <stdio.h>
+ #include "riscv-opts.h"
+ 
+ struct version_t
+ {
+   int major;
+   int minor;
+   version_t (int major, int minor,
+ 	     enum riscv_isa_spec_class spec = ISA_SPEC_CLASS_NONE)
+     : major (major), minor (minor)
+   {}
+   bool operator<(const version_t &other) const
+   {
+     if (major != other.major)
+       return major < other.major;
+     return minor < other.minor;
+   }
+ 
+   bool operator== (const version_t &other) const
+   {
+     return major == other.major && minor == other.minor;
+   }
+ };
+ 
+ static void
+ print_ext_doc_entry (const std::string &ext_name, const std::string &full_name,
+ 		     const std::string &desc,
+ 		     const std::vector<version_t> &supported_versions)
+ {
+   // Implementation of the function to print the documentation entry
+   // for the extension.
+   std::set<version_t> unique_versions;
+   for (const auto &version : supported_versions)
+     unique_versions.insert (version);
+   printf ("@item %s\n", ext_name.c_str ());
+   printf ("@tab");
+   for (const auto &version : unique_versions)
+     {
+       printf (" %d.%d", version.major, version.minor);
+     }
+   printf ("\n");
+   printf ("@tab %s", full_name.c_str ());
+   if (desc.size ())
+     printf (", %s", desc.c_str ());
+   printf ("\n\n");
+ }
+ 
+ int
+ main ()
+ {
+   puts ("@c Copyright (C) 2025 Free Software Foundation, Inc.");
+   puts ("@c This is part of the GCC manual.");
+   puts ("@c For copying conditions, see the file gcc/doc/include/fdl.texi.");
+   puts ("");
+   puts ("@c This file is generated automatically using");
+   puts ("@c  gcc/config/riscv/gen-riscv-ext-texi.cc from:");
+   puts ("@c       gcc/config/riscv/riscv-ext.def");
+   puts ("@c       gcc/config/riscv/riscv-opts.h");
+   puts ("");
+   puts ("@c Please *DO NOT* edit manually.");
+   puts ("");
+   puts ("@multitable @columnfractions .10 .10 .80");
+   puts ("@headitem Extension Name @tab Supported Version @tab Description");
+   puts ("");
+ 
+   /* g extension is a very speical extension that no clear version...  */
+   puts ("@item g");
+   puts ("@tab -");
+   puts (
+     "@tab General-purpose computing base extension, @samp{g} will expand to");
+   puts ("@samp{i}, @samp{m}, @samp{a}, @samp{f}, @samp{d}, @samp{zicsr} and");
+   puts ("@samp{zifencei}.");
+   puts ("");
+ 
+ #define DEFINE_RISCV_EXT(NAME, UPPERCAE_NAME, FULL_NAME, DESC, URL, DEP_EXTS,  \
+ 			 SUPPORTED_VERSIONS, FLAG_GROUP, BITMASK_GROUP_ID,     \
+ 			 BITMASK_BIT_POSITION, EXTRA_EXTENSION_FLAGS)          \
+   print_ext_doc_entry (#NAME, FULL_NAME, DESC,                                 \
+ 		       std::vector<version_t> SUPPORTED_VERSIONS);
+ #include "riscv-ext.def"
+ #undef DEFINE_RISCV_EXT
+ 
+   puts ("@end multitable");
+   return 0;
+ }
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-c.cc gcc-16-20250518/gcc/config/riscv/riscv-c.cc
*** gcc-16-20250511/gcc/config/riscv/riscv-c.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/riscv-c.cc	Sun May 18 22:32:07 2025
*************** along with GCC; see the file COPYING3.
*** 36,45 ****
  
  struct pragma_intrinsic_flags
  {
!   int intrinsic_target_flags;
  
    int intrinsic_riscv_vector_elen_flags;
!   int intrinsic_riscv_zvl_flags;
    int intrinsic_riscv_zvb_subext;
    int intrinsic_riscv_zvk_subext;
  };
--- 36,45 ----
  
  struct pragma_intrinsic_flags
  {
!   int intrinsic_riscv_isa_flags;
  
    int intrinsic_riscv_vector_elen_flags;
!   int intrinsic_riscv_zvl_subext;
    int intrinsic_riscv_zvb_subext;
    int intrinsic_riscv_zvk_subext;
  };
*************** struct pragma_intrinsic_flags
*** 47,62 ****
  static void
  riscv_pragma_intrinsic_flags_pollute (struct pragma_intrinsic_flags *flags)
  {
!   flags->intrinsic_target_flags = target_flags;
    flags->intrinsic_riscv_vector_elen_flags = riscv_vector_elen_flags;
!   flags->intrinsic_riscv_zvl_flags = riscv_zvl_flags;
    flags->intrinsic_riscv_zvb_subext = riscv_zvb_subext;
    flags->intrinsic_riscv_zvk_subext = riscv_zvk_subext;
  
!   target_flags = target_flags
      | MASK_VECTOR;
  
!   riscv_zvl_flags = riscv_zvl_flags
      | MASK_ZVL32B
      | MASK_ZVL64B
      | MASK_ZVL128B
--- 47,62 ----
  static void
  riscv_pragma_intrinsic_flags_pollute (struct pragma_intrinsic_flags *flags)
  {
!   flags->intrinsic_riscv_isa_flags = riscv_isa_flags;
    flags->intrinsic_riscv_vector_elen_flags = riscv_vector_elen_flags;
!   flags->intrinsic_riscv_zvl_subext = riscv_zvl_subext;
    flags->intrinsic_riscv_zvb_subext = riscv_zvb_subext;
    flags->intrinsic_riscv_zvk_subext = riscv_zvk_subext;
  
!   riscv_isa_flags = riscv_isa_flags
      | MASK_VECTOR;
  
!   riscv_zvl_subext = riscv_zvl_subext
      | MASK_ZVL32B
      | MASK_ZVL64B
      | MASK_ZVL128B
*************** riscv_pragma_intrinsic_flags_pollute (st
*** 97,106 ****
  static void
  riscv_pragma_intrinsic_flags_restore (struct pragma_intrinsic_flags *flags)
  {
!   target_flags = flags->intrinsic_target_flags;
  
    riscv_vector_elen_flags = flags->intrinsic_riscv_vector_elen_flags;
!   riscv_zvl_flags = flags->intrinsic_riscv_zvl_flags;
    riscv_zvb_subext = flags->intrinsic_riscv_zvb_subext;
    riscv_zvk_subext = flags->intrinsic_riscv_zvk_subext;
  }
--- 97,106 ----
  static void
  riscv_pragma_intrinsic_flags_restore (struct pragma_intrinsic_flags *flags)
  {
!   riscv_isa_flags = flags->intrinsic_riscv_isa_flags;
  
    riscv_vector_elen_flags = flags->intrinsic_riscv_vector_elen_flags;
!   riscv_zvl_subext = flags->intrinsic_riscv_zvl_subext;
    riscv_zvb_subext = flags->intrinsic_riscv_zvb_subext;
    riscv_zvk_subext = flags->intrinsic_riscv_zvk_subext;
  }
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-ext-corev.def gcc-16-20250518/gcc/config/riscv/riscv-ext-corev.def
*** gcc-16-20250511/gcc/config/riscv/riscv-ext-corev.def	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/config/riscv/riscv-ext-corev.def	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,87 ----
+ /* CORE-V extension definition file for RISC-V.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ 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/>.
+ 
+ Please run `make riscv-regen` in build folder to make sure updated anything.
+ 
+ Format of DEFINE_RISCV_EXT, please refer to riscv-ext.def.  */
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xcvalu,
+   /* UPPERCAE_NAME */ XCVALU,
+   /* FULL_NAME */ "Core-V miscellaneous ALU extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xcv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xcvbi,
+   /* UPPERCAE_NAME */ XCVBI,
+   /* FULL_NAME */ "xcvbi extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xcv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xcvelw,
+   /* UPPERCAE_NAME */ XCVELW,
+   /* FULL_NAME */ "Core-V event load word extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xcv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xcvmac,
+   /* UPPERCAE_NAME */ XCVMAC,
+   /* FULL_NAME */ "Core-V multiply-accumulate extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xcv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xcvsimd,
+   /* UPPERCAE_NAME */ XCVSIMD,
+   /* FULL_NAME */ "xcvsimd extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xcv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-ext-sifive.def gcc-16-20250518/gcc/config/riscv/riscv-ext-sifive.def
*** gcc-16-20250511/gcc/config/riscv/riscv-ext-sifive.def	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/config/riscv/riscv-ext-sifive.def	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,87 ----
+ /* SiFive extension definition file for RISC-V.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ 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/>.
+ 
+ Please run `make riscv-regen` in build folder to make sure updated anything.
+ 
+ Format of DEFINE_RISCV_EXT, please refer to riscv-ext.def.  */
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xsfcease,
+   /* UPPERCAE_NAME */ XSFCEASE,
+   /* FULL_NAME */ "xsfcease extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xsf,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xsfvcp,
+   /* UPPERCAE_NAME */ XSFVCP,
+   /* FULL_NAME */ "xsfvcp extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32x"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xsf,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xsfvfnrclipxfqf,
+   /* UPPERCAE_NAME */ XSFVFNRCLIPXFQF,
+   /* FULL_NAME */ "xsfvfnrclipxfqf extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xsf,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xsfvqmaccdod,
+   /* UPPERCAE_NAME */ XSFVQMACCDOD,
+   /* FULL_NAME */ "xsfvqmaccdod extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xsf,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xsfvqmaccqoq,
+   /* UPPERCAE_NAME */ XSFVQMACCQOQ,
+   /* FULL_NAME */ "xsfvqmaccqoq extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xsf,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-ext-thead.def gcc-16-20250518/gcc/config/riscv/riscv-ext-thead.def
*** gcc-16-20250511/gcc/config/riscv/riscv-ext-thead.def	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/config/riscv/riscv-ext-thead.def	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,191 ----
+ /* T-head extension definition file for RISC-V.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ 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/>.
+ 
+ Please run `make riscv-regen` in build folder to make sure updated anything.
+ 
+ Format of DEFINE_RISCV_EXT, please refer to riscv-ext.def.  */
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadba,
+   /* UPPERCAE_NAME */ XTHEADBA,
+   /* FULL_NAME */ "T-head address calculation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadbb,
+   /* UPPERCAE_NAME */ XTHEADBB,
+   /* FULL_NAME */ "T-head basic bit-manipulation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadbs,
+   /* UPPERCAE_NAME */ XTHEADBS,
+   /* FULL_NAME */ "T-head single-bit instructions extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadcmo,
+   /* UPPERCAE_NAME */ XTHEADCMO,
+   /* FULL_NAME */ "T-head cache management operations extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadcondmov,
+   /* UPPERCAE_NAME */ XTHEADCONDMOV,
+   /* FULL_NAME */ "T-head conditional move extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadfmemidx,
+   /* UPPERCAE_NAME */ XTHEADFMEMIDX,
+   /* FULL_NAME */ "T-head indexed memory operations for floating-point registers extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadfmv,
+   /* UPPERCAE_NAME */ XTHEADFMV,
+   /* FULL_NAME */ "T-head double floating-point high-bit data transmission extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadint,
+   /* UPPERCAE_NAME */ XTHEADINT,
+   /* FULL_NAME */ "T-head acceleration interruption extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadmac,
+   /* UPPERCAE_NAME */ XTHEADMAC,
+   /* FULL_NAME */ "T-head multiply-accumulate extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadmemidx,
+   /* UPPERCAE_NAME */ XTHEADMEMIDX,
+   /* FULL_NAME */ "T-head indexed memory operation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadmempair,
+   /* UPPERCAE_NAME */ XTHEADMEMPAIR,
+   /* FULL_NAME */ "T-head two-GPR memory operation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadsync,
+   /* UPPERCAE_NAME */ XTHEADSYNC,
+   /* FULL_NAME */ "T-head multi-core synchronization extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xtheadvector,
+   /* UPPERCAE_NAME */ XTHEADVECTOR,
+   /* FULL_NAME */ "xtheadvector extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xthead,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-ext-ventana.def gcc-16-20250518/gcc/config/riscv/riscv-ext-ventana.def
*** gcc-16-20250511/gcc/config/riscv/riscv-ext-ventana.def	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/config/riscv/riscv-ext-ventana.def	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,35 ----
+ /* Ventana extension definition file for RISC-V.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ 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/>.
+ 
+ Please run `make riscv-regen` in build folder to make sure updated anything.
+ 
+ Format of DEFINE_RISCV_EXT, please refer to riscv-ext.def.  */
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ xventanacondops,
+   /* UPPERCAE_NAME */ XVENTANACONDOPS,
+   /* FULL_NAME */ "Ventana integer conditional operations extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ xventana,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-ext.def gcc-16-20250518/gcc/config/riscv/riscv-ext.def
*** gcc-16-20250511/gcc/config/riscv/riscv-ext.def	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/config/riscv/riscv-ext.def	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,1915 ----
+ /* RISC-V extension definition file for RISC-V.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ 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/>.
+ 
+ Please run `make riscv-regen` in build folder to make sure updated anything.
+ 
+ Format of DEFINE_RISCV_EXT:
+   NAME:
+     The name of the extension, e.g. "i".
+   UPPERCASE_NAME:
+     The name of the extension in uppercase, e.g. "ZBA", this used
+     for generate TARGET_<ext-name> marco and MASK_<ext-name> macro.
+     For those extension only named with single letter, it should also come with
+     'RV', e.g. 'v' should use 'RVV' here.
+     Some of old extension like 'i' and 'm' are not follow the rule.
+   FULL_NAME:
+     The full name of the extension, e.g. "Base integer extension".
+   DESC:
+     A short description of the extension, this will used during generating
+     documentation, GNU Texinfo format can be used this field.
+   URL:
+     A URL for the extension.
+   DEP_EXTS:
+     A list of dependent extensions, this is a list of strings or
+     a list of tuples.  The first element of the tuple is the name
+     of the extension and the second element is a function that
+     takes a subset_list and returns true if the extension should be added as
+     a dependent extension, `c` and `zca` are examples of this.
+   SUPPORTED_VERSIONS:
+     A list of tuples, each tuple contains the major version number, minor
+     version number and the class of the specification.  The version number is a
+     list of integers, e.g. {2, 0} for version 2.0.  The class is
+     a string, e.g. "ISA_SPEC_CLASS_20191213", the class of the
+     specification is not required for any new extension.
+   FLAG_GROUP:
+     The group of the extension, this is used to group extensions
+     together.  The group is a string, e.g. "base", "zi", "zm", "za", "zf",
+     "zc", "zb", "zk" and "zi".
+     This should be auto generated in theory in some day...
+   BITMASK_GROUP_ID:
+     The group id of the extension for the __riscv_feature_bits.
+     this field should sync with riscv-c-api-doc, and keep BITMASK_NOT_YET_ALLOCATED
+     if not got allocated.
+     https://github.com/riscv-non-isa/riscv-c-api-doc/blob/main/src/c-api.adoc#extension-bitmask-definitions
+   BITMASK_BIT_POSITION:
+     The bit position of the extension for the __riscv_feature_bits.
+     this field should sync with riscv-c-api-doc, and keep BITMASK_NOT_YET_ALLOCATED
+     if not got allocated.
+     https://github.com/riscv-non-isa/riscv-c-api-doc/blob/main/src/c-api.adoc#extension-bitmask-definitions
+   EXTRA_EXTENSION_FLAGS:
+     Extra flags for the extension, this is a bitmask of the
+     extra flags.  The extra flags are:
+     - EXT_FLAG_MACRO: Set this flag if this extension is just a macro of set of
+        extensions, and not define any new instrcutions, new CSRs or new
+        behaviors, the example is `b` extension is just a macro of `zba`, `zbb`
+        and `zbs`.
+ */
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ e,
+   /* UPPERCAE_NAME */ RVE,
+   /* FULL_NAME */ "Reduced base integer extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{2, 0}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ i,
+   /* UPPERCAE_NAME */ RVI,
+   /* FULL_NAME */ "Base integer extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{2, 1, ISA_SPEC_CLASS_20191213},
+ 			     {2, 1, ISA_SPEC_CLASS_20190608},
+ 			     {2, 0, ISA_SPEC_CLASS_2P2}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 8,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ m,
+   /* UPPERCAE_NAME */ MUL,
+   /* FULL_NAME */ "Integer multiplication and division extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zmmul"}),
+   /* SUPPORTED_VERSIONS */ ({{2, 0}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 12,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ a,
+   /* UPPERCAE_NAME */ ATOMIC,
+   /* FULL_NAME */ "Atomic extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zaamo", "zalrsc"}),
+   /* SUPPORTED_VERSIONS */ ({{2, 1, ISA_SPEC_CLASS_20191213},
+ 			     {2, 0, ISA_SPEC_CLASS_20190608},
+ 			     {2, 0, ISA_SPEC_CLASS_2P2}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 0,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ f,
+   /* UPPERCAE_NAME */ HARD_FLOAT,
+   /* FULL_NAME */ "Single-precision floating-point extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{2, 2, ISA_SPEC_CLASS_20191213},
+ 			     {2, 2, ISA_SPEC_CLASS_20190608},
+ 			     {2, 0, ISA_SPEC_CLASS_2P2}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 5,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ d,
+   /* UPPERCAE_NAME */ DOUBLE_FLOAT,
+   /* FULL_NAME */ "Double-precision floating-point extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"f", "zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{2, 2, ISA_SPEC_CLASS_20191213},
+ 			     {2, 2, ISA_SPEC_CLASS_20190608},
+ 			     {2, 0, ISA_SPEC_CLASS_2P2}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 3,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ c,
+   /* UPPERCAE_NAME */ RVC,
+   /* FULL_NAME */ "Compressed extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zca",
+ 		   {"zcf",
+ 		    [] (const riscv_subset_list *subset_list) -> bool
+ 		      {
+ 			return subset_list->xlen () == 32
+ 			       && subset_list->lookup ("f");
+ 		      }},
+ 		   {"zcd",
+ 		    [] (const riscv_subset_list *subset_list) -> bool
+ 		      {
+ 			return subset_list->lookup ("d");
+ 		      }}}),
+   /* SUPPORTED_VERSIONS */ ({{2, 0}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 2,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ b,
+   /* UPPERCAE_NAME */ RVB,
+   /* FULL_NAME */ "b extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zba", "zbb", "zbs"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ v,
+   /* UPPERCAE_NAME */ RVV,
+   /* FULL_NAME */ "Vector extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl128b", "zve64d"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 21,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ h,
+   /* UPPERCAE_NAME */ RVH,
+   /* FULL_NAME */ "Hypervisor extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ base,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zic64b,
+   /* UPPERCAE_NAME */ ZIC64B,
+   /* FULL_NAME */ "Cache block size isf 64 bytes",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zicbom,
+   /* UPPERCAE_NAME */ ZICBOM,
+   /* FULL_NAME */ "Cache-block management extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zicbop,
+   /* UPPERCAE_NAME */ ZICBOP,
+   /* FULL_NAME */ "Cache-block prefetch extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zicboz,
+   /* UPPERCAE_NAME */ ZICBOZ,
+   /* FULL_NAME */ "Cache-block zero extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 37,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ ziccamoa,
+   /* UPPERCAE_NAME */ ZICCAMOA,
+   /* FULL_NAME */ "Main memory supports all atomics in A",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ ziccif,
+   /* UPPERCAE_NAME */ ZICCIF,
+   /* FULL_NAME */ "Main memory supports instruction fetch with atomicity requirement",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zicclsm,
+   /* UPPERCAE_NAME */ ZICCLSM,
+   /* FULL_NAME */ "Main memory supports misaligned loads/stores",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ ziccrse,
+   /* UPPERCAE_NAME */ ZICCRSE,
+   /* FULL_NAME */ "Main memory supports forward progress on LR/SC sequences",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zicfilp,
+   /* UPPERCAE_NAME */ ZICFILP,
+   /* FULL_NAME */ "zicfilp extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zicfiss,
+   /* UPPERCAE_NAME */ ZICFISS,
+   /* FULL_NAME */ "zicfiss extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr", "zimop"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zicntr,
+   /* UPPERCAE_NAME */ ZICNTR,
+   /* FULL_NAME */ "Standard extension for base counters and timers",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{2, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zicond,
+   /* UPPERCAE_NAME */ ZICOND,
+   /* FULL_NAME */ "Integer conditional operations extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 38,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zicsr,
+   /* UPPERCAE_NAME */ ZICSR,
+   /* FULL_NAME */ "Control and status register access extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{2, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zifencei,
+   /* UPPERCAE_NAME */ ZIFENCEI,
+   /* FULL_NAME */ "Instruction-fetch fence extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{2, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zihintntl,
+   /* UPPERCAE_NAME */ ZIHINTNTL,
+   /* FULL_NAME */ "Non-temporal locality hints extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 39,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zihintpause,
+   /* UPPERCAE_NAME */ ZIHINTPAUSE,
+   /* FULL_NAME */ "Pause hint extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{2, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 40,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zihpm,
+   /* UPPERCAE_NAME */ ZIHPM,
+   /* FULL_NAME */ "Standard extension for hardware performance counters",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{2, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zimop,
+   /* UPPERCAE_NAME */ ZIMOP,
+   /* FULL_NAME */ "zimop extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ 1,
+   /* BITMASK_BIT_POSITION*/ 1,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zilsd,
+   /* UPPERCAE_NAME */ ZILSD,
+   /* FULL_NAME */ "Load/Store pair instructions extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zi,
+   /* BITMASK_GROUP_ID */ 1,
+   /* BITMASK_BIT_POSITION*/ 1,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zmmul,
+   /* UPPERCAE_NAME */ ZMMUL,
+   /* FULL_NAME */ "Integer multiplication extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zm,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ za128rs,
+   /* UPPERCAE_NAME */ ZA128RS,
+   /* FULL_NAME */ "Reservation set size of 128 bytes",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ za,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ za64rs,
+   /* UPPERCAE_NAME */ ZA64RS,
+   /* FULL_NAME */ "Reservation set size of 64 bytes",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ za,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zaamo,
+   /* UPPERCAE_NAME */ ZAAMO,
+   /* FULL_NAME */ "zaamo extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ za,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zabha,
+   /* UPPERCAE_NAME */ ZABHA,
+   /* FULL_NAME */ "zabha extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zaamo"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ za,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zacas,
+   /* UPPERCAE_NAME */ ZACAS,
+   /* FULL_NAME */ "zacas extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zaamo"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ za,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 26,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zalrsc,
+   /* UPPERCAE_NAME */ ZALRSC,
+   /* FULL_NAME */ "zalrsc extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ za,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zawrs,
+   /* UPPERCAE_NAME */ ZAWRS,
+   /* FULL_NAME */ "Wait-on-reservation-set extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zalrsc"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ za,
+   /* BITMASK_GROUP_ID */ 1,
+   /* BITMASK_BIT_POSITION*/ 7,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zama16b,
+   /* UPPERCAE_NAME */ ZAMA16B,
+   /* FULL_NAME */ "Zama16b extension",
+   /* DESC */ "Misaligned loads, stores, and AMOs to main memory regions that do"
+ 	     " not cross a naturally aligned 16-byte boundary are atomic.",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ za,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zfa,
+   /* UPPERCAE_NAME */ ZFA,
+   /* FULL_NAME */ "Additional floating-point extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"f"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zf,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 34,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zfbfmin,
+   /* UPPERCAE_NAME */ ZFBFMIN,
+   /* FULL_NAME */ "zfbfmin extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zfhmin"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zf,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zfh,
+   /* UPPERCAE_NAME */ ZFH,
+   /* FULL_NAME */ "Half-precision floating-point extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zfhmin"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zf,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 35,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zfhmin,
+   /* UPPERCAE_NAME */ ZFHMIN,
+   /* FULL_NAME */ "Minimal half-precision floating-point extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"f"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zf,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 36,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zfinx,
+   /* UPPERCAE_NAME */ ZFINX,
+   /* FULL_NAME */ "Single-precision floating-point in integer registers extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zinx,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zdinx,
+   /* UPPERCAE_NAME */ ZDINX,
+   /* FULL_NAME */ "Double-precision floating-point in integer registers extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zfinx", "zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zinx,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zca,
+   /* UPPERCAE_NAME */ ZCA,
+   /* FULL_NAME */ "Integer compressed instruction extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({{"c",
+ [] (const riscv_subset_list *subset_list) -> bool
+ {
+   /* For RV32 Zca implies C for one of these combinations of
+      extensions: Zca, F_Zca_Zcf and FD_Zca_Zcf_Zcd.  */
+   if (subset_list->xlen () == 32)
+     {
+       if (subset_list->lookup ("d"))
+ 	return subset_list->lookup ("zcf") && subset_list->lookup ("zcd");
+ 
+       if (subset_list->lookup ("f"))
+ 	return subset_list->lookup ("zcf");
+ 
+       return true;
+     }
+ 
+   /* For RV64 Zca implies C for one of these combinations of
+      extensions: Zca and FD_Zca_Zcd (Zcf is not available
+      for RV64).  */
+   if (subset_list->xlen () == 64)
+     {
+       if (subset_list->lookup ("d"))
+ 	return subset_list->lookup ("zcd");
+ 
+       return true;
+     }
+ 
+   /* Do nothing for future RV128 specification. Behaviour
+      for this case is not yet well defined.  */
+   return false;
+ 
+ }}}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zc,
+   /* BITMASK_GROUP_ID */ 1,
+   /* BITMASK_BIT_POSITION*/ 2,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zcb,
+   /* UPPERCAE_NAME */ ZCB,
+   /* FULL_NAME */ "Simple compressed instruction extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zca"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zc,
+   /* BITMASK_GROUP_ID */ 1,
+   /* BITMASK_BIT_POSITION*/ 3,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zcd,
+   /* UPPERCAE_NAME */ ZCD,
+   /* FULL_NAME */ "Compressed double-precision floating point loads and stores extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zca"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zc,
+   /* BITMASK_GROUP_ID */ 1,
+   /* BITMASK_BIT_POSITION*/ 4,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zce,
+   /* UPPERCAE_NAME */ ZCE,
+   /* FULL_NAME */ "Compressed instruction extensions for embedded processors",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zca", "zcb", "zcmp", "zcmt",
+ 		  {"zcf",
+ 		   [] (const riscv_subset_list *subset_list) -> bool
+ 		     {
+ 		       return subset_list->xlen () == 32
+ 			      && subset_list->lookup ("f");
+ 		     }}}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zc,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zcf,
+   /* UPPERCAE_NAME */ ZCF,
+   /* FULL_NAME */ "Compressed single-precision floating point loads and stores extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zca"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zc,
+   /* BITMASK_GROUP_ID */ 1,
+   /* BITMASK_BIT_POSITION*/ 5,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zcmop,
+   /* UPPERCAE_NAME */ ZCMOP,
+   /* FULL_NAME */ "zcmop extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zca"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zc,
+   /* BITMASK_GROUP_ID */ 1,
+   /* BITMASK_BIT_POSITION*/ 6,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zcmp,
+   /* UPPERCAE_NAME */ ZCMP,
+   /* FULL_NAME */ "Compressed push pop extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zca"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zc,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zcmt,
+   /* UPPERCAE_NAME */ ZCMT,
+   /* FULL_NAME */ "Table jump instruction extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zca", "zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zc,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zclsd,
+   /* UPPERCAE_NAME */ ZCLSD,
+   /* FULL_NAME */ "Compressed load/store pair instructions extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zca", "zilsd"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zc,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zba,
+   /* UPPERCAE_NAME */ ZBA,
+   /* FULL_NAME */ "Address calculation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zb,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 27,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zbb,
+   /* UPPERCAE_NAME */ ZBB,
+   /* FULL_NAME */ "Basic bit manipulation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zb,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 28,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zbc,
+   /* UPPERCAE_NAME */ ZBC,
+   /* FULL_NAME */ "Carry-less multiplication extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zb,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 29,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zbkb,
+   /* UPPERCAE_NAME */ ZBKB,
+   /* FULL_NAME */ "Cryptography bit-manipulation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zb,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 30,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zbkc,
+   /* UPPERCAE_NAME */ ZBKC,
+   /* FULL_NAME */ "Cryptography carry-less multiply extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zb,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 31,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zbkx,
+   /* UPPERCAE_NAME */ ZBKX,
+   /* FULL_NAME */ "Cryptography crossbar permutation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zb,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 32,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zbs,
+   /* UPPERCAE_NAME */ ZBS,
+   /* FULL_NAME */ "Single-bit operation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zb,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 33,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zk,
+   /* UPPERCAE_NAME */ ZK,
+   /* FULL_NAME */ "Standard scalar cryptography extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zkn", "zkr", "zkt"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zkn,
+   /* UPPERCAE_NAME */ ZKN,
+   /* FULL_NAME */ "NIST algorithm suite extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zbkb", "zbkc", "zbkx", "zkne", "zknd", "zknh"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zknd,
+   /* UPPERCAE_NAME */ ZKND,
+   /* FULL_NAME */ "AES Decryption extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 41,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zkne,
+   /* UPPERCAE_NAME */ ZKNE,
+   /* FULL_NAME */ "AES Encryption extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 42,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zknh,
+   /* UPPERCAE_NAME */ ZKNH,
+   /* FULL_NAME */ "Hash function extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 43,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zkr,
+   /* UPPERCAE_NAME */ ZKR,
+   /* FULL_NAME */ "Entropy source extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zks,
+   /* UPPERCAE_NAME */ ZKS,
+   /* FULL_NAME */ "ShangMi algorithm suite extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zbkb", "zbkc", "zbkx", "zksed", "zksh"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zksed,
+   /* UPPERCAE_NAME */ ZKSED,
+   /* FULL_NAME */ "SM4 block cipher extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 44,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zksh,
+   /* UPPERCAE_NAME */ ZKSH,
+   /* FULL_NAME */ "SM3 hash function extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 45,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zkt,
+   /* UPPERCAE_NAME */ ZKT,
+   /* FULL_NAME */ "Data independent execution latency extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 46,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ ztso,
+   /* UPPERCAE_NAME */ ZTSO,
+   /* FULL_NAME */ "Total store ordering extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zt,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 47,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvbb,
+   /* UPPERCAE_NAME */ ZVBB,
+   /* FULL_NAME */ "Vector basic bit-manipulation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvkb"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvb,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 48,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvbc,
+   /* UPPERCAE_NAME */ ZVBC,
+   /* FULL_NAME */ "Vector carryless multiplication extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve64x"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvb,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 49,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zve32f,
+   /* UPPERCAE_NAME */ ZVE32F,
+   /* FULL_NAME */ "Vector extensions for embedded processors",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"f", "zve32x", "zvl32b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zve,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 61,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zve32x,
+   /* UPPERCAE_NAME */ ZVE32X,
+   /* FULL_NAME */ "Vector extensions for embedded processors",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr", "zvl32b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zve,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 60,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zve64d,
+   /* UPPERCAE_NAME */ ZVE64D,
+   /* FULL_NAME */ "Vector extensions for embedded processors",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"d", "zve64f", "zvl64b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zve,
+   /* BITMASK_GROUP_ID */ 1,
+   /* BITMASK_BIT_POSITION*/ 0,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zve64f,
+   /* UPPERCAE_NAME */ ZVE64F,
+   /* FULL_NAME */ "Vector extensions for embedded processors",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"f", "zve32f", "zve64x", "zvl64b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zve,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 63,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zve64x,
+   /* UPPERCAE_NAME */ ZVE64X,
+   /* FULL_NAME */ "Vector extensions for embedded processors",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32x", "zvl64b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zve,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 62,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvfbfmin,
+   /* UPPERCAE_NAME */ ZVFBFMIN,
+   /* FULL_NAME */ "Vector BF16 converts extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32f"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvf,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvfbfwma,
+   /* UPPERCAE_NAME */ ZVFBFWMA,
+   /* FULL_NAME */ "zvfbfwma extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvfbfmin", "zfbfmin"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvf,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvfh,
+   /* UPPERCAE_NAME */ ZVFH,
+   /* FULL_NAME */ "Vector half-precision floating-point extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32f", "zfhmin"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvf,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 50,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvfhmin,
+   /* UPPERCAE_NAME */ ZVFHMIN,
+   /* FULL_NAME */ "Vector minimal half-precision floating-point extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32f"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvf,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 51,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvkb,
+   /* UPPERCAE_NAME */ ZVKB,
+   /* FULL_NAME */ "Vector cryptography bit-manipulation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32x"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 52,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvkg,
+   /* UPPERCAE_NAME */ ZVKG,
+   /* FULL_NAME */ "Vector GCM/GMAC extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32x"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 53,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvkn,
+   /* UPPERCAE_NAME */ ZVKN,
+   /* FULL_NAME */ "Vector NIST Algorithm Suite extension",
+   /* DESC */ "@samp{zvkn} will expand to",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvkned", "zvknhb", "zvkb", "zvkt"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvknc,
+   /* UPPERCAE_NAME */ ZVKNC,
+   /* FULL_NAME */ "Vector NIST Algorithm Suite with carryless multiply extension, @samp{zvknc}",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvkn", "zvbc"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvkned,
+   /* UPPERCAE_NAME */ ZVKNED,
+   /* FULL_NAME */ "Vector AES block cipher extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32x"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 54,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvkng,
+   /* UPPERCAE_NAME */ ZVKNG,
+   /* FULL_NAME */ "Vector NIST Algorithm Suite with GCM extension, @samp{zvkng} will expand",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvkn", "zvkg"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvknha,
+   /* UPPERCAE_NAME */ ZVKNHA,
+   /* FULL_NAME */ "Vector SHA-2 secure hash extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32x"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 55,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvknhb,
+   /* UPPERCAE_NAME */ ZVKNHB,
+   /* FULL_NAME */ "Vector SHA-2 secure hash extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve64x"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 56,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvks,
+   /* UPPERCAE_NAME */ ZVKS,
+   /* FULL_NAME */ "Vector ShangMi algorithm suite extension, @samp{zvks} will expand",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvksed", "zvksh", "zvkb", "zvkt"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvksc,
+   /* UPPERCAE_NAME */ ZVKSC,
+   /* FULL_NAME */ "Vector ShangMi algorithm suite with carryless multiplication extension,",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvks", "zvbc"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvksed,
+   /* UPPERCAE_NAME */ ZVKSED,
+   /* FULL_NAME */ "Vector SM4 Block Cipher extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32x"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 57,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvksg,
+   /* UPPERCAE_NAME */ ZVKSG,
+   /* FULL_NAME */ "Vector ShangMi algorithm suite with GCM extension, @samp{zvksg} will expand",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvks", "zvkg"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvksh,
+   /* UPPERCAE_NAME */ ZVKSH,
+   /* FULL_NAME */ "Vector SM3 Secure Hash extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32x"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 58,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvkt,
+   /* UPPERCAE_NAME */ ZVKT,
+   /* FULL_NAME */ "Vector data independent execution latency extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvk,
+   /* BITMASK_GROUP_ID */ 0,
+   /* BITMASK_BIT_POSITION*/ 59,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl1024b,
+   /* UPPERCAE_NAME */ ZVL1024B,
+   /* FULL_NAME */ "Minimum vector length standard extensions",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl512b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl128b,
+   /* UPPERCAE_NAME */ ZVL128B,
+   /* FULL_NAME */ "Minimum vector length standard extensions",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl64b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl16384b,
+   /* UPPERCAE_NAME */ ZVL16384B,
+   /* FULL_NAME */ "zvl16384b extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl8192b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl2048b,
+   /* UPPERCAE_NAME */ ZVL2048B,
+   /* FULL_NAME */ "Minimum vector length standard extensions",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl1024b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl256b,
+   /* UPPERCAE_NAME */ ZVL256B,
+   /* FULL_NAME */ "Minimum vector length standard extensions",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl128b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl32768b,
+   /* UPPERCAE_NAME */ ZVL32768B,
+   /* FULL_NAME */ "zvl32768b extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl16384b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl32b,
+   /* UPPERCAE_NAME */ ZVL32B,
+   /* FULL_NAME */ "Minimum vector length standard extensions",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl4096b,
+   /* UPPERCAE_NAME */ ZVL4096B,
+   /* FULL_NAME */ "Minimum vector length standard extensions",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl2048b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl512b,
+   /* UPPERCAE_NAME */ ZVL512B,
+   /* FULL_NAME */ "Minimum vector length standard extensions",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl256b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl64b,
+   /* UPPERCAE_NAME */ ZVL64B,
+   /* FULL_NAME */ "Minimum vector length standard extensions",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl32b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl65536b,
+   /* UPPERCAE_NAME */ ZVL65536B,
+   /* FULL_NAME */ "zvl65536b extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl32768b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zvl8192b,
+   /* UPPERCAE_NAME */ ZVL8192B,
+   /* FULL_NAME */ "zvl8192b extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zvl4096b"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zvl,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zhinx,
+   /* UPPERCAE_NAME */ ZHINX,
+   /* FULL_NAME */ "Half-precision floating-point in integer registers extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zhinxmin"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zinx,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ zhinxmin,
+   /* UPPERCAE_NAME */ ZHINXMIN,
+   /* FULL_NAME */ "Minimal half-precision floating-point in integer registers extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zfinx"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ zinx,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ sdtrig,
+   /* UPPERCAE_NAME */ SDTRIG,
+   /* FULL_NAME */ "sdtrig extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sd,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ sha,
+   /* UPPERCAE_NAME */ SHA,
+   /* FULL_NAME */ "The augmented hypervisor extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"h", "shcounterenw", "shgatpa", "shtvala", "shvstvala", "shvstvecd", "shvsatpa", "ssstateen"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sh,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ shcounterenw,
+   /* UPPERCAE_NAME */ SHCOUNTERENW,
+   /* FULL_NAME */ "Support writeable enables for any supported counter",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"h", "zihpm"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sh,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ shgatpa,
+   /* UPPERCAE_NAME */ SHGATPA,
+   /* FULL_NAME */ "SvNNx4 mode supported for all modes supported by satp",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"h", "ssstateen"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sh,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ shtvala,
+   /* UPPERCAE_NAME */ SHTVALA,
+   /* FULL_NAME */ "The htval register provides all needed values",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"h"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sh,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ shvstvala,
+   /* UPPERCAE_NAME */ SHVSTVALA,
+   /* FULL_NAME */ "The vstval register provides all needed values",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"h"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sh,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ shvstvecd,
+   /* UPPERCAE_NAME */ SHVSTVECD,
+   /* FULL_NAME */ "The vstvec register supports Direct mode",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"h"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sh,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ shvsatpa,
+   /* UPPERCAE_NAME */ SHVSATPA,
+   /* FULL_NAME */ "The vsatp register supports all modes supported by satp",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"h"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sh,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ smaia,
+   /* UPPERCAE_NAME */ SMAIA,
+   /* FULL_NAME */ "Advanced interrupt architecture extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"ssaia"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sm,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ smepmp,
+   /* UPPERCAE_NAME */ SMEPMP,
+   /* FULL_NAME */ "PMP Enhancements for memory access and execution prevention on Machine mode",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sm,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ smmpm,
+   /* UPPERCAE_NAME */ SMMPM,
+   /* FULL_NAME */ "smmpm extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sm,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ smnpm,
+   /* UPPERCAE_NAME */ SMNPM,
+   /* FULL_NAME */ "smnpm extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sm,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ smstateen,
+   /* UPPERCAE_NAME */ SMSTATEEN,
+   /* FULL_NAME */ "State enable extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"ssstateen"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sm,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ ssaia,
+   /* UPPERCAE_NAME */ SSAIA,
+   /* FULL_NAME */ "Advanced interrupt architecture extension for supervisor-mode",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ ss,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ sscofpmf,
+   /* UPPERCAE_NAME */ SSCOFPMF,
+   /* FULL_NAME */ "Count overflow & filtering extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ ss,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ ssnpm,
+   /* UPPERCAE_NAME */ SSNPM,
+   /* FULL_NAME */ "ssnpm extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ ss,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ sspm,
+   /* UPPERCAE_NAME */ SSPM,
+   /* FULL_NAME */ "sspm extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ ss,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ ssstateen,
+   /* UPPERCAE_NAME */ SSSTATEEN,
+   /* FULL_NAME */ "State-enable extension for supervisor-mode",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ ss,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ sstc,
+   /* UPPERCAE_NAME */ SSTC,
+   /* FULL_NAME */ "Supervisor-mode timer interrupts extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zicsr"}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ ss,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ ssstrict,
+   /* UPPERCAE_NAME */ SSSTRICT,
+   /* FULL_NAME */ "ssstrict extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ ss,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ supm,
+   /* UPPERCAE_NAME */ SUPM,
+   /* FULL_NAME */ "supm extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ su,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ svinval,
+   /* UPPERCAE_NAME */ SVINVAL,
+   /* FULL_NAME */ "Fine-grained address-translation cache invalidation extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ svnapot,
+   /* UPPERCAE_NAME */ SVNAPOT,
+   /* FULL_NAME */ "NAPOT translation contiguity extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ svpbmt,
+   /* UPPERCAE_NAME */ SVPBMT,
+   /* FULL_NAME */ "Page-based memory types extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ svvptc,
+   /* UPPERCAE_NAME */ SVVPTC,
+   /* FULL_NAME */ "svvptc extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ svadu,
+   /* UPPERCAE_NAME */ SVADU,
+   /* FULL_NAME */ "Hardware Updating of A/D Bits extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
+   /* NAME */ svade,
+   /* UPPERCAE_NAME */ SVADE,
+   /* FULL_NAME */ "Cause exception when hardware updating of A/D bits is disabled",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({}),
+   /* SUPPORTED_VERSIONS */ ({{1, 0}}),
+   /* FLAG_GROUP */ sv,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ #include "riscv-ext-corev.def"
+ #include "riscv-ext-sifive.def"
+ #include "riscv-ext-thead.def"
+ #include "riscv-ext-ventana.def"
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-ext.opt gcc-16-20250518/gcc/config/riscv/riscv-ext.opt
*** gcc-16-20250511/gcc/config/riscv/riscv-ext.opt	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/config/riscv/riscv-ext.opt	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,421 ----
+ ; Target options for the RISC-V port of the compiler
+ ;
+ ; Copyright (C) 2025 Free Software Foundation, Inc.
+ ;
+ ; 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/>.
+ ; This file is generated automatically using
+ ;  gcc/config/riscv/gen-riscv-ext-opt.cc from:
+ ;       gcc/config/riscv/riscv-ext.def
+ 
+ ; Please *DO NOT* edit manually.
+ TargetVariable
+ int riscv_base_subext
+ 
+ TargetVariable
+ int riscv_sd_subext
+ 
+ TargetVariable
+ int riscv_sh_subext
+ 
+ TargetVariable
+ int riscv_sm_subext
+ 
+ TargetVariable
+ int riscv_ss_subext
+ 
+ TargetVariable
+ int riscv_su_subext
+ 
+ TargetVariable
+ int riscv_sv_subext
+ 
+ TargetVariable
+ int riscv_xcv_subext
+ 
+ TargetVariable
+ int riscv_xsf_subext
+ 
+ TargetVariable
+ int riscv_xthead_subext
+ 
+ TargetVariable
+ int riscv_xventana_subext
+ 
+ TargetVariable
+ int riscv_za_subext
+ 
+ TargetVariable
+ int riscv_zb_subext
+ 
+ TargetVariable
+ int riscv_zc_subext
+ 
+ TargetVariable
+ int riscv_zf_subext
+ 
+ TargetVariable
+ int riscv_zi_subext
+ 
+ TargetVariable
+ int riscv_zinx_subext
+ 
+ TargetVariable
+ int riscv_zk_subext
+ 
+ TargetVariable
+ int riscv_zm_subext
+ 
+ TargetVariable
+ int riscv_zt_subext
+ 
+ TargetVariable
+ int riscv_zvb_subext
+ 
+ TargetVariable
+ int riscv_zve_subext
+ 
+ TargetVariable
+ int riscv_zvf_subext
+ 
+ TargetVariable
+ int riscv_zvk_subext
+ 
+ TargetVariable
+ int riscv_zvl_subext
+ 
+ Mask(RVE) Var(riscv_base_subext)
+ 
+ Mask(RVI) Var(riscv_base_subext)
+ 
+ Mask(MUL) Var(riscv_base_subext)
+ 
+ Mask(ATOMIC) Var(riscv_base_subext)
+ 
+ Mask(HARD_FLOAT) Var(riscv_base_subext)
+ 
+ Mask(DOUBLE_FLOAT) Var(riscv_base_subext)
+ 
+ Mask(RVC) Var(riscv_base_subext)
+ 
+ Mask(RVB) Var(riscv_base_subext)
+ 
+ Mask(RVV) Var(riscv_base_subext)
+ 
+ Mask(RVH) Var(riscv_base_subext)
+ 
+ Mask(ZIC64B) Var(riscv_zi_subext)
+ 
+ Mask(ZICBOM) Var(riscv_zi_subext)
+ 
+ Mask(ZICBOP) Var(riscv_zi_subext)
+ 
+ Mask(ZICBOZ) Var(riscv_zi_subext)
+ 
+ Mask(ZICCAMOA) Var(riscv_zi_subext)
+ 
+ Mask(ZICCIF) Var(riscv_zi_subext)
+ 
+ Mask(ZICCLSM) Var(riscv_zi_subext)
+ 
+ Mask(ZICCRSE) Var(riscv_zi_subext)
+ 
+ Mask(ZICFILP) Var(riscv_zi_subext)
+ 
+ Mask(ZICFISS) Var(riscv_zi_subext)
+ 
+ Mask(ZICNTR) Var(riscv_zi_subext)
+ 
+ Mask(ZICOND) Var(riscv_zi_subext)
+ 
+ Mask(ZICSR) Var(riscv_zi_subext)
+ 
+ Mask(ZIFENCEI) Var(riscv_zi_subext)
+ 
+ Mask(ZIHINTNTL) Var(riscv_zi_subext)
+ 
+ Mask(ZIHINTPAUSE) Var(riscv_zi_subext)
+ 
+ Mask(ZIHPM) Var(riscv_zi_subext)
+ 
+ Mask(ZIMOP) Var(riscv_zi_subext)
+ 
+ Mask(ZILSD) Var(riscv_zi_subext)
+ 
+ Mask(ZMMUL) Var(riscv_zm_subext)
+ 
+ Mask(ZA128RS) Var(riscv_za_subext)
+ 
+ Mask(ZA64RS) Var(riscv_za_subext)
+ 
+ Mask(ZAAMO) Var(riscv_za_subext)
+ 
+ Mask(ZABHA) Var(riscv_za_subext)
+ 
+ Mask(ZACAS) Var(riscv_za_subext)
+ 
+ Mask(ZALRSC) Var(riscv_za_subext)
+ 
+ Mask(ZAWRS) Var(riscv_za_subext)
+ 
+ Mask(ZAMA16B) Var(riscv_za_subext)
+ 
+ Mask(ZFA) Var(riscv_zf_subext)
+ 
+ Mask(ZFBFMIN) Var(riscv_zf_subext)
+ 
+ Mask(ZFH) Var(riscv_zf_subext)
+ 
+ Mask(ZFHMIN) Var(riscv_zf_subext)
+ 
+ Mask(ZFINX) Var(riscv_zinx_subext)
+ 
+ Mask(ZDINX) Var(riscv_zinx_subext)
+ 
+ Mask(ZCA) Var(riscv_zc_subext)
+ 
+ Mask(ZCB) Var(riscv_zc_subext)
+ 
+ Mask(ZCD) Var(riscv_zc_subext)
+ 
+ Mask(ZCE) Var(riscv_zc_subext)
+ 
+ Mask(ZCF) Var(riscv_zc_subext)
+ 
+ Mask(ZCMOP) Var(riscv_zc_subext)
+ 
+ Mask(ZCMP) Var(riscv_zc_subext)
+ 
+ Mask(ZCMT) Var(riscv_zc_subext)
+ 
+ Mask(ZCLSD) Var(riscv_zc_subext)
+ 
+ Mask(ZBA) Var(riscv_zb_subext)
+ 
+ Mask(ZBB) Var(riscv_zb_subext)
+ 
+ Mask(ZBC) Var(riscv_zb_subext)
+ 
+ Mask(ZBKB) Var(riscv_zb_subext)
+ 
+ Mask(ZBKC) Var(riscv_zb_subext)
+ 
+ Mask(ZBKX) Var(riscv_zb_subext)
+ 
+ Mask(ZBS) Var(riscv_zb_subext)
+ 
+ Mask(ZK) Var(riscv_zk_subext)
+ 
+ Mask(ZKN) Var(riscv_zk_subext)
+ 
+ Mask(ZKND) Var(riscv_zk_subext)
+ 
+ Mask(ZKNE) Var(riscv_zk_subext)
+ 
+ Mask(ZKNH) Var(riscv_zk_subext)
+ 
+ Mask(ZKR) Var(riscv_zk_subext)
+ 
+ Mask(ZKS) Var(riscv_zk_subext)
+ 
+ Mask(ZKSED) Var(riscv_zk_subext)
+ 
+ Mask(ZKSH) Var(riscv_zk_subext)
+ 
+ Mask(ZKT) Var(riscv_zk_subext)
+ 
+ Mask(ZTSO) Var(riscv_zt_subext)
+ 
+ Mask(ZVBB) Var(riscv_zvb_subext)
+ 
+ Mask(ZVBC) Var(riscv_zvb_subext)
+ 
+ Mask(ZVE32F) Var(riscv_zve_subext)
+ 
+ Mask(ZVE32X) Var(riscv_zve_subext)
+ 
+ Mask(ZVE64D) Var(riscv_zve_subext)
+ 
+ Mask(ZVE64F) Var(riscv_zve_subext)
+ 
+ Mask(ZVE64X) Var(riscv_zve_subext)
+ 
+ Mask(ZVFBFMIN) Var(riscv_zvf_subext)
+ 
+ Mask(ZVFBFWMA) Var(riscv_zvf_subext)
+ 
+ Mask(ZVFH) Var(riscv_zvf_subext)
+ 
+ Mask(ZVFHMIN) Var(riscv_zvf_subext)
+ 
+ Mask(ZVKB) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKG) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKN) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKNC) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKNED) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKNG) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKNHA) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKNHB) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKS) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKSC) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKSED) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKSG) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKSH) Var(riscv_zvk_subext)
+ 
+ Mask(ZVKT) Var(riscv_zvk_subext)
+ 
+ Mask(ZVL1024B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL128B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL16384B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL2048B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL256B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL32768B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL32B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL4096B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL512B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL64B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL65536B) Var(riscv_zvl_subext)
+ 
+ Mask(ZVL8192B) Var(riscv_zvl_subext)
+ 
+ Mask(ZHINX) Var(riscv_zinx_subext)
+ 
+ Mask(ZHINXMIN) Var(riscv_zinx_subext)
+ 
+ Mask(SDTRIG) Var(riscv_sd_subext)
+ 
+ Mask(SHA) Var(riscv_sh_subext)
+ 
+ Mask(SHCOUNTERENW) Var(riscv_sh_subext)
+ 
+ Mask(SHGATPA) Var(riscv_sh_subext)
+ 
+ Mask(SHTVALA) Var(riscv_sh_subext)
+ 
+ Mask(SHVSTVALA) Var(riscv_sh_subext)
+ 
+ Mask(SHVSTVECD) Var(riscv_sh_subext)
+ 
+ Mask(SHVSATPA) Var(riscv_sh_subext)
+ 
+ Mask(SMAIA) Var(riscv_sm_subext)
+ 
+ Mask(SMEPMP) Var(riscv_sm_subext)
+ 
+ Mask(SMMPM) Var(riscv_sm_subext)
+ 
+ Mask(SMNPM) Var(riscv_sm_subext)
+ 
+ Mask(SMSTATEEN) Var(riscv_sm_subext)
+ 
+ Mask(SSAIA) Var(riscv_ss_subext)
+ 
+ Mask(SSCOFPMF) Var(riscv_ss_subext)
+ 
+ Mask(SSNPM) Var(riscv_ss_subext)
+ 
+ Mask(SSPM) Var(riscv_ss_subext)
+ 
+ Mask(SSSTATEEN) Var(riscv_ss_subext)
+ 
+ Mask(SSTC) Var(riscv_ss_subext)
+ 
+ Mask(SSSTRICT) Var(riscv_ss_subext)
+ 
+ Mask(SUPM) Var(riscv_su_subext)
+ 
+ Mask(SVINVAL) Var(riscv_sv_subext)
+ 
+ Mask(SVNAPOT) Var(riscv_sv_subext)
+ 
+ Mask(SVPBMT) Var(riscv_sv_subext)
+ 
+ Mask(SVVPTC) Var(riscv_sv_subext)
+ 
+ Mask(SVADU) Var(riscv_sv_subext)
+ 
+ Mask(SVADE) Var(riscv_sv_subext)
+ 
+ Mask(XCVALU) Var(riscv_xcv_subext)
+ 
+ Mask(XCVBI) Var(riscv_xcv_subext)
+ 
+ Mask(XCVELW) Var(riscv_xcv_subext)
+ 
+ Mask(XCVMAC) Var(riscv_xcv_subext)
+ 
+ Mask(XCVSIMD) Var(riscv_xcv_subext)
+ 
+ Mask(XSFCEASE) Var(riscv_xsf_subext)
+ 
+ Mask(XSFVCP) Var(riscv_xsf_subext)
+ 
+ Mask(XSFVFNRCLIPXFQF) Var(riscv_xsf_subext)
+ 
+ Mask(XSFVQMACCDOD) Var(riscv_xsf_subext)
+ 
+ Mask(XSFVQMACCQOQ) Var(riscv_xsf_subext)
+ 
+ Mask(XTHEADBA) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADBB) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADBS) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADCMO) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADCONDMOV) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADFMEMIDX) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADFMV) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADINT) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADMAC) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADMEMIDX) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADMEMPAIR) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADSYNC) Var(riscv_xthead_subext)
+ 
+ Mask(XTHEADVECTOR) Var(riscv_xthead_subext)
+ 
+ Mask(XVENTANACONDOPS) Var(riscv_xventana_subext)
+ 
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-ext.opt.urls gcc-16-20250518/gcc/config/riscv/riscv-ext.opt.urls
*** gcc-16-20250511/gcc/config/riscv/riscv-ext.opt.urls	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/config/riscv/riscv-ext.opt.urls	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,2 ----
+ ; Autogenerated by regenerate-opt-urls.py from gcc/config/riscv/riscv-ext.opt and generated HTML
+ 
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-opts.h gcc-16-20250518/gcc/config/riscv/riscv-opts.h
*** gcc-16-20250511/gcc/config/riscv/riscv-opts.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/riscv-opts.h	Sun May 18 22:32:07 2025
*************** enum rvv_vector_bits_enum {
*** 136,151 ****
  /* Bit of riscv_zvl_flags will set continually, N-1 bit will set if N-bit is
     set, e.g. MASK_ZVL64B has set then MASK_ZVL32B is set, so we can use
     popcount to calculate the minimal VLEN.  */
! #define TARGET_MIN_VLEN \
!   ((riscv_zvl_flags == 0) \
!    ? 0 \
!    : 32 << (__builtin_popcount (riscv_zvl_flags) - 1))
  
  /* Same as TARGET_MIN_VLEN, but take an OPTS as gcc_options.  */
  #define TARGET_MIN_VLEN_OPTS(opts)                                             \
!   ((opts->x_riscv_zvl_flags == 0)                                              \
       ? 0                                                                       \
!      : 32 << (__builtin_popcount (opts->x_riscv_zvl_flags) - 1))
  
  /* The maximum LMUL according to user configuration.  */
  #define TARGET_MAX_LMUL                                                        \
--- 136,151 ----
  /* Bit of riscv_zvl_flags will set continually, N-1 bit will set if N-bit is
     set, e.g. MASK_ZVL64B has set then MASK_ZVL32B is set, so we can use
     popcount to calculate the minimal VLEN.  */
! #define TARGET_MIN_VLEN                                                        \
!   ((riscv_zvl_subext == 0)                                                     \
!      ? 0                                                                       \
!      : 32 << (__builtin_popcount (riscv_zvl_subext) - 1))
  
  /* Same as TARGET_MIN_VLEN, but take an OPTS as gcc_options.  */
  #define TARGET_MIN_VLEN_OPTS(opts)                                             \
!   ((opts->x_riscv_zvl_subext == 0)                                             \
       ? 0                                                                       \
!      : 32 << (__builtin_popcount (opts->x_riscv_zvl_subext) - 1))
  
  /* The maximum LMUL according to user configuration.  */
  #define TARGET_MAX_LMUL                                                        \
*************** enum riscv_tls_type {
*** 164,167 ****
--- 164,175 ----
  
  #define GPR2VR_COST_UNPROVIDED -1
  
+ /* Extra extension flags, used for carry extra info for a RISC-V extension.  */
+ enum
+ {
+   EXT_FLAG_MACRO = 1 << 0,
+ };
+ 
+ #define BITMASK_NOT_YET_ALLOCATED -1
+ 
  #endif /* ! GCC_RISCV_OPTS_H */
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-shorten-memrefs.cc gcc-16-20250518/gcc/config/riscv/riscv-shorten-memrefs.cc
*** gcc-16-20250511/gcc/config/riscv/riscv-shorten-memrefs.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/riscv-shorten-memrefs.cc	Sun May 18 22:32:07 2025
*************** pass_shorten_memrefs::transform (regno_m
*** 189,196 ****
  		}
  	    }
  	}
!       rtx_insn *seq = get_insns ();
!       end_sequence ();
        emit_insn_before (seq, insn);
      }
  }
--- 189,195 ----
  		}
  	    }
  	}
!       rtx_insn *seq = end_sequence ();
        emit_insn_before (seq, insn);
      }
  }
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-subset.h gcc-16-20250518/gcc/config/riscv/riscv-subset.h
*** gcc-16-20250511/gcc/config/riscv/riscv-subset.h	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/riscv-subset.h	Sun May 18 22:32:07 2025
*************** extern bool riscv_minimal_hwprobe_featur
*** 129,134 ****
  						location_t);
  extern bool
  riscv_ext_is_subset (struct cl_target_option *, struct cl_target_option *);
- extern int riscv_x_target_flags_isa_mask (void);
  
  #endif /* ! GCC_RISCV_SUBSET_H */
--- 129,133 ----
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-vect-permconst.cc gcc-16-20250518/gcc/config/riscv/riscv-vect-permconst.cc
*** gcc-16-20250511/gcc/config/riscv/riscv-vect-permconst.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/riscv-vect-permconst.cc	Sun May 18 22:32:07 2025
*************** vector_permconst::process_bb (basic_bloc
*** 227,233 ****
  	 normalize it to zero.
  
  	 XXX This violates structure sharing conventions.  */
!       rtvec_def *nvec = gen_rtvec (CONST_VECTOR_NUNITS (cvec).to_constant ());
  
        for (i = 0; i < CONST_VECTOR_NUNITS (cvec).to_constant (); i++)
  	nvec->elem[i] = GEN_INT (INTVAL (CONST_VECTOR_ELT (cvec, i)) - bias);
--- 227,233 ----
  	 normalize it to zero.
  
  	 XXX This violates structure sharing conventions.  */
!       rtvec_def *nvec = rtvec_alloc (CONST_VECTOR_NUNITS (cvec).to_constant ());
  
        for (i = 0; i < CONST_VECTOR_NUNITS (cvec).to_constant (); i++)
  	nvec->elem[i] = GEN_INT (INTVAL (CONST_VECTOR_ELT (cvec, i)) - bias);
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-vector-builtins.cc gcc-16-20250518/gcc/config/riscv/riscv-vector-builtins.cc
*** gcc-16-20250511/gcc/config/riscv/riscv-vector-builtins.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/riscv-vector-builtins.cc	Sun May 18 22:32:07 2025
*************** check_required_extensions (const functio
*** 3842,3867 ****
  	required_extensions |= RVV_REQUIRE_RV64BIT;
      }
  
!   uint64_t riscv_isa_flags = 0;
  
    if (TARGET_VECTOR_ELEN_BF_16)
!     riscv_isa_flags |= RVV_REQUIRE_ELEN_BF_16;
    if (TARGET_VECTOR_ELEN_FP_16)
!     riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_16;
    if (TARGET_VECTOR_ELEN_FP_32)
!     riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_32;
    if (TARGET_VECTOR_ELEN_FP_64)
!     riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_64;
    if (TARGET_VECTOR_ELEN_64)
!     riscv_isa_flags |= RVV_REQUIRE_ELEN_64;
    if (TARGET_64BIT)
!     riscv_isa_flags |= RVV_REQUIRE_RV64BIT;
    if (TARGET_FULL_V)
!     riscv_isa_flags |= RVV_REQUIRE_FULL_V;
    if (TARGET_MIN_VLEN > 32)
!     riscv_isa_flags |= RVV_REQUIRE_MIN_VLEN_64;
  
!   uint64_t missing_extensions = required_extensions & ~riscv_isa_flags;
    if (missing_extensions != 0)
      return false;
    return true;
--- 3842,3867 ----
  	required_extensions |= RVV_REQUIRE_RV64BIT;
      }
  
!   uint64_t isa_flags = 0;
  
    if (TARGET_VECTOR_ELEN_BF_16)
!     isa_flags |= RVV_REQUIRE_ELEN_BF_16;
    if (TARGET_VECTOR_ELEN_FP_16)
!     isa_flags |= RVV_REQUIRE_ELEN_FP_16;
    if (TARGET_VECTOR_ELEN_FP_32)
!     isa_flags |= RVV_REQUIRE_ELEN_FP_32;
    if (TARGET_VECTOR_ELEN_FP_64)
!     isa_flags |= RVV_REQUIRE_ELEN_FP_64;
    if (TARGET_VECTOR_ELEN_64)
!     isa_flags |= RVV_REQUIRE_ELEN_64;
    if (TARGET_64BIT)
!     isa_flags |= RVV_REQUIRE_RV64BIT;
    if (TARGET_FULL_V)
!     isa_flags |= RVV_REQUIRE_FULL_V;
    if (TARGET_MIN_VLEN > 32)
!     isa_flags |= RVV_REQUIRE_MIN_VLEN_64;
  
!   uint64_t missing_extensions = required_extensions & ~isa_flags;
    if (missing_extensions != 0)
      return false;
    return true;
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv-vsetvl.cc gcc-16-20250518/gcc/config/riscv/riscv-vsetvl.cc
*** gcc-16-20250511/gcc/config/riscv/riscv-vsetvl.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/riscv-vsetvl.cc	Sun May 18 22:32:07 2025
*************** pre_vsetvl::emit_vsetvl ()
*** 3419,3426 ****
  	    }
  	  start_sequence ();
  	  insert_vsetvl_insn (EMIT_DIRECT, footer_info);
! 	  rtx_insn *rinsn = get_insns ();
! 	  end_sequence ();
  	  default_rtl_profile ();
  	  insert_insn_on_edge (rinsn, eg);
  	  need_commit = true;
--- 3419,3425 ----
  	    }
  	  start_sequence ();
  	  insert_vsetvl_insn (EMIT_DIRECT, footer_info);
! 	  rtx_insn *rinsn = end_sequence ();
  	  default_rtl_profile ();
  	  insert_insn_on_edge (rinsn, eg);
  	  need_commit = true;
*************** pre_vsetvl::emit_vsetvl ()
*** 3451,3458 ****
        start_sequence ();
  
        insert_vsetvl_insn (EMIT_DIRECT, info);
!       rtx_insn *rinsn = get_insns ();
!       end_sequence ();
        default_rtl_profile ();
  
        /* We should not get an abnormal edge here.  */
--- 3450,3456 ----
        start_sequence ();
  
        insert_vsetvl_insn (EMIT_DIRECT, info);
!       rtx_insn *rinsn = end_sequence ();
        default_rtl_profile ();
  
        /* We should not get an abnormal edge here.  */
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv.cc gcc-16-20250518/gcc/config/riscv/riscv.cc
*** gcc-16-20250511/gcc/config/riscv/riscv.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/riscv.cc	Sun May 18 22:32:07 2025
*************** riscv_call_tls_get_addr (rtx sym, rtx re
*** 2856,2864 ****
  					 gen_int_mode (RISCV_CC_BASE, SImode)));
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
!   insn = get_insns ();
! 
!   end_sequence ();
  
    return insn;
  }
--- 2856,2862 ----
  					 gen_int_mode (RISCV_CC_BASE, SImode)));
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
!   insn = end_sequence ();
  
    return insn;
  }
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 3875,3880 ****
--- 3873,3879 ----
  		*total = gr2vr_cost * COSTS_N_INSNS (1);
  		break;
  	      case PLUS:
+ 	      case MINUS:
  		{
  		  rtx op_0 = XEXP (x, 0);
  		  rtx op_1 = XEXP (x, 1);
*************** riscv_can_inline_p (tree caller, tree ca
*** 7918,7928 ****
    struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree);
    struct cl_target_option *caller_opts = TREE_TARGET_OPTION (caller_tree);
  
!   int isa_flag_mask = riscv_x_target_flags_isa_mask ();
! 
!   /* Callee and caller should have the same target options except for ISA.  */
!   int callee_target_flags = callee_opts->x_target_flags & ~isa_flag_mask;
!   int caller_target_flags = caller_opts->x_target_flags & ~isa_flag_mask;
  
    if (callee_target_flags != caller_target_flags)
      return false;
--- 7917,7925 ----
    struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree);
    struct cl_target_option *caller_opts = TREE_TARGET_OPTION (caller_tree);
  
!   /* Callee and caller should have the same target options.  */
!   int callee_target_flags = callee_opts->x_target_flags;
!   int caller_target_flags = caller_opts->x_target_flags;
  
    if (callee_target_flags != caller_target_flags)
      return false;
*************** riscv_gpr_save_operation_p (rtx op)
*** 11583,11593 ****
  	  /* Two CLOBBER and USEs, must check the order.  */
  	  unsigned expect_code = i < 3 ? CLOBBER : USE;
  	  if (GET_CODE (elt) != expect_code
! 	      || !REG_P (XEXP (elt, 1))
! 	      || (REGNO (XEXP (elt, 1)) != gpr_save_reg_order[i]))
  	    return false;
  	}
- 	break;
      }
    return true;
  }
--- 11580,11589 ----
  	  /* Two CLOBBER and USEs, must check the order.  */
  	  unsigned expect_code = i < 3 ? CLOBBER : USE;
  	  if (GET_CODE (elt) != expect_code
! 	      || !REG_P (XEXP (elt, 0))
! 	      || (REGNO (XEXP (elt, 0)) != gpr_save_reg_order[i]))
  	    return false;
  	}
      }
    return true;
  }
*************** riscv_frm_emit_after_bb_end (rtx_insn *c
*** 12181,12188 ****
  	{
  	  start_sequence ();
  	  emit_insn (gen_frrmsi (DYNAMIC_FRM_RTL (cfun)));
! 	  rtx_insn *backup_insn = get_insns ();
! 	  end_sequence ();
  
  	  insert_insn_on_edge (backup_insn, eg);
  	}
--- 12177,12183 ----
  	{
  	  start_sequence ();
  	  emit_insn (gen_frrmsi (DYNAMIC_FRM_RTL (cfun)));
! 	  rtx_insn *backup_insn = end_sequence ();
  
  	  insert_insn_on_edge (backup_insn, eg);
  	}
*************** riscv_frm_emit_after_bb_end (rtx_insn *c
*** 12192,12199 ****
      {
        start_sequence ();
        emit_insn (gen_frrmsi (DYNAMIC_FRM_RTL (cfun)));
!       rtx_insn *backup_insn = get_insns ();
!       end_sequence ();
  
        insert_insn_end_basic_block (backup_insn, bb);
      }
--- 12187,12193 ----
      {
        start_sequence ();
        emit_insn (gen_frrmsi (DYNAMIC_FRM_RTL (cfun)));
!       rtx_insn *backup_insn = end_sequence ();
  
        insert_insn_end_basic_block (backup_insn, bb);
      }
*************** synthesize_ior_xor (rtx_code code, rtx o
*** 14229,14235 ****
  {
    /* Trivial cases that don't need synthesis.  */
    if (SMALL_OPERAND (INTVAL (operands[2]))
!      || ((TARGET_ZBS || TARGET_XTHEADBS || TARGET_ZBKB)
  	 && single_bit_mask_operand (operands[2], word_mode)))
      return false;
  
--- 14223,14229 ----
  {
    /* Trivial cases that don't need synthesis.  */
    if (SMALL_OPERAND (INTVAL (operands[2]))
!      || ((TARGET_ZBS || TARGET_ZBKB)
  	 && single_bit_mask_operand (operands[2], word_mode)))
      return false;
  
*************** synthesize_ior_xor (rtx_code code, rtx o
*** 14266,14289 ****
    /* If we're flipping all but a small number of bits we can pre-flip
       the outliers, then flip all the bits, which would restore those
       bits that were pre-flipped. */
!   if ((TARGET_ZBS || TARGET_XTHEADBS || TARGET_ZBKB)
        && budget < 0
        && code == XOR
        && popcount_hwi (~INTVAL (operands[2])) < original_budget)
      {
        /* Pre-flipping bits we want to preserve.  */
        rtx input = operands[1];
        ival = ~INTVAL (operands[2]);
        while (ival)
  	{
  	  HOST_WIDE_INT tmpval = HOST_WIDE_INT_UC (1) << ctz_hwi (ival);
  	  rtx x = GEN_INT (tmpval);
  	  x = gen_rtx_XOR (word_mode, input, x);
! 	  emit_insn (gen_rtx_SET (operands[0], x));
! 	  input = operands[0];
  	  ival &= ~tmpval;
  	}
  
        /* Now flip all the bits, which restores the bits we were
  	 preserving.  */
        rtx x = gen_rtx_NOT (word_mode, input);
--- 14260,14287 ----
    /* If we're flipping all but a small number of bits we can pre-flip
       the outliers, then flip all the bits, which would restore those
       bits that were pre-flipped. */
!   if ((TARGET_ZBS || TARGET_ZBKB)
        && budget < 0
        && code == XOR
        && popcount_hwi (~INTVAL (operands[2])) < original_budget)
      {
        /* Pre-flipping bits we want to preserve.  */
        rtx input = operands[1];
+       rtx output = NULL_RTX;
        ival = ~INTVAL (operands[2]);
        while (ival)
  	{
  	  HOST_WIDE_INT tmpval = HOST_WIDE_INT_UC (1) << ctz_hwi (ival);
  	  rtx x = GEN_INT (tmpval);
  	  x = gen_rtx_XOR (word_mode, input, x);
! 	  output = gen_reg_rtx (word_mode);
! 	  emit_insn (gen_rtx_SET (output, x));
! 	  input = output;
  	  ival &= ~tmpval;
  	}
  
+       gcc_assert (output);
+ 
        /* Now flip all the bits, which restores the bits we were
  	 preserving.  */
        rtx x = gen_rtx_NOT (word_mode, input);
*************** synthesize_ior_xor (rtx_code code, rtx o
*** 14306,14328 ****
        int msb = BITS_PER_WORD - 1 - clz_hwi (ival);
        if (msb - lsb + 1 <= 11)
  	{
  	  /* Rotate the source right by LSB bits.  */
  	  rtx x = GEN_INT (lsb);
! 	  x = gen_rtx_ROTATERT (word_mode, operands[1], x);
! 	  emit_insn (gen_rtx_SET (operands[0], x));
  
  	  /* Shift the constant right by LSB bits.  */
  	  x = GEN_INT (ival >> lsb);
  
  	  /* Perform the IOR/XOR operation.  */
! 	  x = gen_rtx_fmt_ee (code, word_mode, operands[0], x);
! 	  emit_insn (gen_rtx_SET (operands[0], x));
  
  	  /* And rotate left to put everything back in place, we don't
  	     have rotate left by a constant, so use rotate right by
  	     an adjusted constant.  */
  	  x = GEN_INT (BITS_PER_WORD - lsb);
! 	  x = gen_rtx_ROTATERT (word_mode, operands[1], x);
  	  emit_insn (gen_rtx_SET (operands[0], x));
  	  return true;
  	}
--- 14304,14332 ----
        int msb = BITS_PER_WORD - 1 - clz_hwi (ival);
        if (msb - lsb + 1 <= 11)
  	{
+ 	  rtx output = gen_reg_rtx (word_mode);
+ 	  rtx input = operands[1];
+ 
  	  /* Rotate the source right by LSB bits.  */
  	  rtx x = GEN_INT (lsb);
! 	  x = gen_rtx_ROTATERT (word_mode, input, x);
! 	  emit_insn (gen_rtx_SET (output, x));
! 	  input = output;
  
  	  /* Shift the constant right by LSB bits.  */
  	  x = GEN_INT (ival >> lsb);
  
  	  /* Perform the IOR/XOR operation.  */
! 	  x = gen_rtx_fmt_ee (code, word_mode, input, x);
! 	  output = gen_reg_rtx (word_mode);
! 	  emit_insn (gen_rtx_SET (output, x));
! 	  input = output;
  
  	  /* And rotate left to put everything back in place, we don't
  	     have rotate left by a constant, so use rotate right by
  	     an adjusted constant.  */
  	  x = GEN_INT (BITS_PER_WORD - lsb);
! 	  x = gen_rtx_ROTATERT (word_mode, input, x);
  	  emit_insn (gen_rtx_SET (operands[0], x));
  	  return true;
  	}
*************** synthesize_ior_xor (rtx_code code, rtx o
*** 14343,14364 ****
        if ((INTVAL (operands[2]) & HOST_WIDE_INT_UC (0x7ff)) != 0
  	  && msb - lsb + 1 <= 11)
  	{
  	  /* Rotate the source left by ROTCOUNT bits, we don't have
  	     rotate left by a constant, so use rotate right by an
  	     adjusted constant.  */
  	  rtx x = GEN_INT (BITS_PER_WORD - rotcount);
! 	  x = gen_rtx_ROTATERT (word_mode, operands[1], x);
! 	  emit_insn (gen_rtx_SET (operands[0], x));
  
  	  /* We've already rotated the constant.  So perform the IOR/XOR
  	     operation.  */
  	  x = GEN_INT (ival);
! 	  x = gen_rtx_fmt_ee (code, word_mode, operands[0], x);
! 	  emit_insn (gen_rtx_SET (operands[0], x));
  
  	  /* And rotate right to put everything into its proper place.  */
  	  x = GEN_INT (rotcount);
! 	  x = gen_rtx_ROTATERT (word_mode, operands[0], x);
  	  emit_insn (gen_rtx_SET (operands[0], x));
  	  return true;
  	}
--- 14347,14374 ----
        if ((INTVAL (operands[2]) & HOST_WIDE_INT_UC (0x7ff)) != 0
  	  && msb - lsb + 1 <= 11)
  	{
+ 	  rtx output = gen_reg_rtx (word_mode);
+ 	  rtx input = operands[1];
+ 
  	  /* Rotate the source left by ROTCOUNT bits, we don't have
  	     rotate left by a constant, so use rotate right by an
  	     adjusted constant.  */
  	  rtx x = GEN_INT (BITS_PER_WORD - rotcount);
! 	  x = gen_rtx_ROTATERT (word_mode, input, x);
! 	  emit_insn (gen_rtx_SET (output, x));
! 	  input = output;
  
  	  /* We've already rotated the constant.  So perform the IOR/XOR
  	     operation.  */
  	  x = GEN_INT (ival);
! 	  x = gen_rtx_fmt_ee (code, word_mode, input, x);
! 	  output = gen_reg_rtx (word_mode);
! 	  emit_insn (gen_rtx_SET (output, x));
! 	  input = output;
  
  	  /* And rotate right to put everything into its proper place.  */
  	  x = GEN_INT (rotcount);
! 	  x = gen_rtx_ROTATERT (word_mode, input, x);
  	  emit_insn (gen_rtx_SET (operands[0], x));
  	  return true;
  	}
*************** synthesize_ior_xor (rtx_code code, rtx o
*** 14380,14385 ****
--- 14390,14396 ----
    /* Synthesis is better than loading the constant.  */
    ival = INTVAL (operands[2]);
    rtx input = operands[1];
+   rtx output;
  
    /* Emit the [x]ori insn that sets the low 11 bits into
       the proper state.  */
*************** synthesize_ior_xor (rtx_code code, rtx o
*** 14387,14394 ****
      {
        rtx x = GEN_INT (ival & HOST_WIDE_INT_UC (0x7ff));
        x = gen_rtx_fmt_ee (code, word_mode, input, x);
!       emit_insn (gen_rtx_SET (operands[0], x));
!       input = operands[0];
        ival &= ~HOST_WIDE_INT_UC (0x7ff);
      }
  
--- 14398,14406 ----
      {
        rtx x = GEN_INT (ival & HOST_WIDE_INT_UC (0x7ff));
        x = gen_rtx_fmt_ee (code, word_mode, input, x);
!       output = gen_reg_rtx (word_mode);
!       emit_insn (gen_rtx_SET (output, x));
!       input = output;
        ival &= ~HOST_WIDE_INT_UC (0x7ff);
      }
  
*************** synthesize_ior_xor (rtx_code code, rtx o
*** 14402,14411 ****
        HOST_WIDE_INT tmpval = HOST_WIDE_INT_UC (1) << ctz_hwi (ival);
        rtx x = GEN_INT (tmpval);
        x = gen_rtx_fmt_ee (code, word_mode, input, x);
!       emit_insn (gen_rtx_SET (operands[0], x));
!       input = operands[0];
        ival &= ~tmpval;
      }
    return true;
  }
  
--- 14414,14425 ----
        HOST_WIDE_INT tmpval = HOST_WIDE_INT_UC (1) << ctz_hwi (ival);
        rtx x = GEN_INT (tmpval);
        x = gen_rtx_fmt_ee (code, word_mode, input, x);
!       output = gen_reg_rtx (word_mode);
!       emit_insn (gen_rtx_SET (output, x));
!       input = output;
        ival &= ~tmpval;
      }
+   emit_move_insn (operands[0], output);
    return true;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/riscv.opt gcc-16-20250518/gcc/config/riscv/riscv.opt
*** gcc-16-20250511/gcc/config/riscv/riscv.opt	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/riscv.opt	Sun May 18 22:32:07 2025
*************** momit-leaf-frame-pointer
*** 168,190 ****
  Target Mask(OMIT_LEAF_FRAME_POINTER) Save
  Omit the frame pointer in leaf functions.
  
! Mask(64BIT)
! 
! Mask(MUL)
! 
! Mask(ATOMIC)
! 
! Mask(HARD_FLOAT)
! 
! Mask(DOUBLE_FLOAT)
! 
! Mask(RVC)
  
! Mask(RVE)
  
! Mask(VECTOR)
  
! Mask(FULL_V)
  
  mriscv-attribute
  Target Var(riscv_emit_attribute_p) Init(-1)
--- 168,181 ----
  Target Mask(OMIT_LEAF_FRAME_POINTER) Save
  Omit the frame pointer in leaf functions.
  
! TargetVariable
! int riscv_isa_flags
  
! Mask(64BIT) Var(riscv_isa_flags)
  
! Mask(VECTOR) Var(riscv_isa_flags)
  
! Mask(FULL_V) Var(riscv_isa_flags)
  
  mriscv-attribute
  Target Var(riscv_emit_attribute_p) Init(-1)
*************** TargetVariable
*** 233,327 ****
  long riscv_stack_protector_guard_offset = 0
  
  TargetVariable
- int riscv_zi_subext
- 
- Mask(ZICSR)       Var(riscv_zi_subext)
- 
- Mask(ZIFENCEI)    Var(riscv_zi_subext)
- 
- Mask(ZIHINTNTL)   Var(riscv_zi_subext)
- 
- Mask(ZIHINTPAUSE) Var(riscv_zi_subext)
- 
- Mask(ZICOND)      Var(riscv_zi_subext)
- 
- Mask(ZICCAMOA)    Var(riscv_zi_subext)
- 
- Mask(ZICCIF)      Var(riscv_zi_subext)
- 
- Mask(ZICCLSM)     Var(riscv_zi_subext)
- 
- Mask(ZICCRSE)     Var(riscv_zi_subext)
- 
- Mask(ZICFISS)     Var(riscv_zi_subext)
- 
- Mask(ZICFILP)     Var(riscv_zi_subext)
- 
- TargetVariable
- int riscv_za_subext
- 
- Mask(ZAWRS)  Var(riscv_za_subext)
- 
- Mask(ZAAMO)  Var(riscv_za_subext)
- 
- Mask(ZALRSC) Var(riscv_za_subext)
- 
- Mask(ZABHA) Var(riscv_za_subext)
- 
- Mask(ZACAS) Var(riscv_za_subext)
- 
- Mask(ZA64RS)  Var(riscv_za_subext)
- 
- Mask(ZA128RS) Var(riscv_za_subext)
- 
- Mask(ZAMA16B) Var(riscv_za_subext)
- 
- TargetVariable
- int riscv_zb_subext
- 
- Mask(ZBA) Var(riscv_zb_subext)
- 
- Mask(ZBB) Var(riscv_zb_subext)
- 
- Mask(ZBC) Var(riscv_zb_subext)
- 
- Mask(ZBS) Var(riscv_zb_subext)
- 
- TargetVariable
- int riscv_zinx_subext
- 
- Mask(ZFINX)    Var(riscv_zinx_subext)
- 
- Mask(ZDINX)    Var(riscv_zinx_subext)
- 
- Mask(ZHINX)    Var(riscv_zinx_subext)
- 
- Mask(ZHINXMIN) Var(riscv_zinx_subext)
- 
- TargetVariable
- int riscv_zk_subext
- 
- Mask(ZBKB)  Var(riscv_zk_subext)
- 
- Mask(ZBKC)  Var(riscv_zk_subext)
- 
- Mask(ZBKX)  Var(riscv_zk_subext)
- 
- Mask(ZKNE)  Var(riscv_zk_subext)
- 
- Mask(ZKND)  Var(riscv_zk_subext)
- 
- Mask(ZKNH)  Var(riscv_zk_subext)
- 
- Mask(ZKR)   Var(riscv_zk_subext)
- 
- Mask(ZKSED) Var(riscv_zk_subext)
- 
- Mask(ZKSH)  Var(riscv_zk_subext)
- 
- Mask(ZKT)   Var(riscv_zk_subext)
- 
- TargetVariable
  int riscv_vector_elen_flags
  
  Mask(VECTOR_ELEN_32)    Var(riscv_vector_elen_flags)
--- 224,229 ----
*************** Mask(VECTOR_ELEN_FP_16) Var(riscv_vector
*** 337,547 ****
  Mask(VECTOR_ELEN_BF_16) Var(riscv_vector_elen_flags)
  
  TargetVariable
- int riscv_zvl_flags
- 
- Mask(ZVL32B)    Var(riscv_zvl_flags)
- 
- Mask(ZVL64B)    Var(riscv_zvl_flags)
- 
- Mask(ZVL128B)   Var(riscv_zvl_flags)
- 
- Mask(ZVL256B)   Var(riscv_zvl_flags)
- 
- Mask(ZVL512B)   Var(riscv_zvl_flags)
- 
- Mask(ZVL1024B)  Var(riscv_zvl_flags)
- 
- Mask(ZVL2048B)  Var(riscv_zvl_flags)
- 
- Mask(ZVL4096B)  Var(riscv_zvl_flags)
- 
- Mask(ZVL8192B)  Var(riscv_zvl_flags)
- 
- Mask(ZVL16384B) Var(riscv_zvl_flags)
- 
- Mask(ZVL32768B) Var(riscv_zvl_flags)
- 
- Mask(ZVL65536B) Var(riscv_zvl_flags)
- 
- TargetVariable
- int riscv_zvb_subext
- 
- Mask(ZVBB) Var(riscv_zvb_subext)
- 
- Mask(ZVBC) Var(riscv_zvb_subext)
- 
- Mask(ZVKB) Var(riscv_zvb_subext)
- 
- TargetVariable
- int riscv_zvk_subext
- 
- Mask(ZVKG)   Var(riscv_zvk_subext)
- 
- Mask(ZVKNED) Var(riscv_zvk_subext)
- 
- Mask(ZVKNHA) Var(riscv_zvk_subext)
- 
- Mask(ZVKNHB) Var(riscv_zvk_subext)
- 
- Mask(ZVKSED) Var(riscv_zvk_subext)
- 
- Mask(ZVKSH)  Var(riscv_zvk_subext)
- 
- Mask(ZVKN)   Var(riscv_zvk_subext)
- 
- Mask(ZVKNC)  Var(riscv_zvk_subext)
- 
- Mask(ZVKNG)  Var(riscv_zvk_subext)
- 
- Mask(ZVKS)   Var(riscv_zvk_subext)
- 
- Mask(ZVKSC)  Var(riscv_zvk_subext)
- 
- Mask(ZVKSG)  Var(riscv_zvk_subext)
- 
- Mask(ZVKT)   Var(riscv_zvk_subext)
- 
- TargetVariable
- int riscv_zicmo_subext
- 
- Mask(ZICBOZ) Var(riscv_zicmo_subext)
- 
- Mask(ZICBOM) Var(riscv_zicmo_subext)
- 
- Mask(ZICBOP) Var(riscv_zicmo_subext)
- 
- Mask(ZIC64B) Var(riscv_zicmo_subext)
- 
- TargetVariable
- int riscv_mop_subext
- 
- Mask(ZIMOP) Var(riscv_mop_subext)
- 
- Mask(ZCMOP) Var(riscv_mop_subext)
- 
- TargetVariable
- int riscv_zf_subext
- 
- Mask(ZFBFMIN)  Var(riscv_zf_subext)
- 
- Mask(ZFHMIN)  Var(riscv_zf_subext)
- 
- Mask(ZFH)     Var(riscv_zf_subext)
- 
- Mask(ZVFBFMIN) Var(riscv_zf_subext)
- 
- Mask(ZVFBFWMA) Var(riscv_zf_subext)
- 
- Mask(ZVFHMIN) Var(riscv_zf_subext)
- 
- Mask(ZVFH)    Var(riscv_zf_subext)
- 
- TargetVariable
- int riscv_zfa_subext
- 
- Mask(ZFA) Var(riscv_zfa_subext)
- 
- TargetVariable
- int riscv_zm_subext
- 
- Mask(ZMMUL) Var(riscv_zm_subext)
- 
- TargetVariable
- int riscv_zc_subext
- 
- Mask(ZCA)  Var(riscv_zc_subext)
- 
- Mask(ZCB)  Var(riscv_zc_subext)
- 
- Mask(ZCE)  Var(riscv_zc_subext)
- 
- Mask(ZCF)  Var(riscv_zc_subext)
- 
- Mask(ZCD)  Var(riscv_zc_subext)
- 
- Mask(ZCMP) Var(riscv_zc_subext)
- 
- Mask(ZCMT) Var(riscv_zc_subext)
- 
- Mask(XCVBI) Var(riscv_xcv_subext)
- 
- TargetVariable
- int riscv_sv_subext
- 
- Mask(SVADE) Var(riscv_sv_subext)
- 
- Mask(SVADU) Var(riscv_sv_subext)
- 
- Mask(SVINVAL) Var(riscv_sv_subext)
- 
- Mask(SVNAPOT) Var(riscv_sv_subext)
- 
- Mask(SVVPTC) Var(riscv_sv_subext)
- 
- TargetVariable
- int riscv_ztso_subext
- 
- Mask(ZTSO) Var(riscv_ztso_subext)
- 
- TargetVariable
- int riscv_xcv_subext
- 
- Mask(XCVMAC) Var(riscv_xcv_subext)
- 
- Mask(XCVALU) Var(riscv_xcv_subext)
- 
- Mask(XCVELW) Var(riscv_xcv_subext)
- 
- Mask(XCVSIMD) Var(riscv_xcv_subext)
- 
- TargetVariable
- int riscv_xthead_subext
- 
- Mask(XTHEADBA)      Var(riscv_xthead_subext)
- 
- Mask(XTHEADBB)      Var(riscv_xthead_subext)
- 
- Mask(XTHEADBS)      Var(riscv_xthead_subext)
- 
- Mask(XTHEADCMO)     Var(riscv_xthead_subext)
- 
- Mask(XTHEADCONDMOV) Var(riscv_xthead_subext)
- 
- Mask(XTHEADFMEMIDX) Var(riscv_xthead_subext)
- 
- Mask(XTHEADFMV)     Var(riscv_xthead_subext)
- 
- Mask(XTHEADINT)     Var(riscv_xthead_subext)
- 
- Mask(XTHEADMAC)     Var(riscv_xthead_subext)
- 
- Mask(XTHEADMEMIDX)  Var(riscv_xthead_subext)
- 
- Mask(XTHEADMEMPAIR) Var(riscv_xthead_subext)
- 
- Mask(XTHEADSYNC)    Var(riscv_xthead_subext)
- 
- Mask(XTHEADVECTOR)  Var(riscv_xthead_subext)
- 
- TargetVariable
- int riscv_xventana_subext
- 
- Mask(XVENTANACONDOPS) Var(riscv_xventana_subext)
- 
- TargetVariable
- int riscv_sifive_subext
- 
- Mask(XSFVCP) Var(riscv_sifive_subext)
- 
- Mask(XSFCEASE) Var(riscv_sifive_subext)
- 
- Mask(XSFVQMACCQOQ) Var(riscv_sifive_subext)
- 
- Mask(XSFVQMACCDOD) Var(riscv_sifive_subext)
- 
- Mask(XSFVFNRCLIPXFQF) Var(riscv_sifive_subext)
- 
- TargetVariable
  int riscv_fmv_priority = 0
  
  Enum
--- 239,244 ----
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/t-riscv gcc-16-20250518/gcc/config/riscv/t-riscv
*** gcc-16-20250511/gcc/config/riscv/t-riscv	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/t-riscv	Sun May 18 22:32:07 2025
*************** s-riscv-vector-type-indexer.gen.defs: bu
*** 187,189 ****
--- 187,230 ----
  	$(STAMP) s-riscv-vector-type-indexer.gen.defs
  
  genprog+=rvv-type-indexer
+ 
+ RISCV_EXT_DEFS = \
+   $(srcdir)/config/riscv/riscv-ext.def \
+   $(srcdir)/config/riscv/riscv-ext-corev.def \
+   $(srcdir)/config/riscv/riscv-ext.def \
+   $(srcdir)/config/riscv/riscv-ext-sifive.def \
+   $(srcdir)/config/riscv/riscv-ext-thead.def \
+   $(srcdir)/config/riscv/riscv-ext-ventana.def
+ 
+ $(srcdir)/config/riscv/riscv-ext.opt: $(RISCV_EXT_DEFS)
+ 
+ build/gen-riscv-ext-opt$(build_exeext): $(srcdir)/config/riscv/gen-riscv-ext-opt.cc \
+ 	$(RISCV_EXT_DEFS)
+ 	$(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) $< -o $@
+ 
+ s-riscv-ext.opt: build/gen-riscv-ext-opt$(build_exeext)
+ 	$(RUN_GEN) build/gen-riscv-ext-opt$(build_exeext) > tmp-riscv-ext.opt
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-riscv-ext.opt $(srcdir)/config/riscv/riscv-ext.opt
+ 	$(STAMP) s-riscv-ext.opt
+ 
+ build/gen-riscv-ext-texi$(build_exeext): $(srcdir)/config/riscv/gen-riscv-ext-texi.cc \
+ 	$(RISCV_EXT_DEFS)
+ 	$(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) $< -o $@
+ 
+ 
+ $(srcdir)/doc/riscv-ext.texi: $(RISCV_EXT_DEFS)
+ $(srcdir)/doc/riscv-ext.texi: s-riscv-ext.texi ; @true
+ 
+ # Generate the doc when generating option file.
+ $(srcdir)/config/riscv/riscv-ext.opt: s-riscv-ext.texi ; @true
+ 
+ s-riscv-ext.texi: build/gen-riscv-ext-texi$(build_exeext)
+ 	$(RUN_GEN) build/gen-riscv-ext-texi$(build_exeext) > tmp-riscv-ext.texi
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-riscv-ext.texi $(srcdir)/doc/riscv-ext.texi
+ 	$(STAMP) s-riscv-ext.texi
+ 
+ # Run `riscv-regen' after you changed or added anything from riscv-ext*.def
+ 
+ .PHONY: riscv-regen
+ 
+ riscv-regen: s-riscv-ext.texi s-riscv-ext.opt
diff -Nrcpad gcc-16-20250511/gcc/config/riscv/vector-iterators.md gcc-16-20250518/gcc/config/riscv/vector-iterators.md
*** gcc-16-20250511/gcc/config/riscv/vector-iterators.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/riscv/vector-iterators.md	Sun May 18 22:32:07 2025
***************
*** 4042,4048 ****
  ])
  
  (define_code_iterator any_int_binop_no_shift_vx [
!   plus
  ])
  
  (define_code_iterator any_int_unop [neg not])
--- 4042,4048 ----
  ])
  
  (define_code_iterator any_int_binop_no_shift_vx [
!   plus minus
  ])
  
  (define_code_iterator any_int_unop [neg not])
diff -Nrcpad gcc-16-20250511/gcc/config/rl78/rl78.cc gcc-16-20250518/gcc/config/rl78/rl78.cc
*** gcc-16-20250511/gcc/config/rl78/rl78.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/rl78/rl78.cc	Sun May 18 22:32:07 2025
*************** rl78_emit_libcall (const char *name, enu
*** 4953,4960 ****
        gcc_unreachable ();
      }
  
!   insns = get_insns ();
!   end_sequence ();
    emit_libcall_block (insns, operands[0], ret, equiv);
    return ret;
  }
--- 4953,4959 ----
        gcc_unreachable ();
      }
  
!   insns = end_sequence ();
    emit_libcall_block (insns, operands[0], ret, equiv);
    return ret;
  }
diff -Nrcpad gcc-16-20250511/gcc/config/rs6000/rs6000.cc gcc-16-20250518/gcc/config/rs6000/rs6000.cc
*** gcc-16-20250511/gcc/config/rs6000/rs6000.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/rs6000/rs6000.cc	Sun May 18 22:32:07 2025
*************** rs6000_debug_legitimize_address (rtx x,
*** 9259,9266 ****
  
    start_sequence ();
    ret = rs6000_legitimize_address (x, oldx, mode);
!   insns = get_insns ();
!   end_sequence ();
  
    if (ret != x)
      {
--- 9259,9265 ----
  
    start_sequence ();
    ret = rs6000_legitimize_address (x, oldx, mode);
!   insns = end_sequence ();
  
    if (ret != x)
      {
diff -Nrcpad gcc-16-20250511/gcc/config/s390/s390.cc gcc-16-20250518/gcc/config/s390/s390.cc
*** gcc-16-20250511/gcc/config/s390/s390.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/s390/s390.cc	Sun May 18 22:32:07 2025
*************** legitimize_tls_address (rtx addr, rtx re
*** 5589,5596 ****
  	new_rtx = force_const_mem (Pmode, new_rtx);
  	emit_move_insn (r2, new_rtx);
  	s390_emit_tls_call_insn (r2, tls_call);
! 	insn = get_insns ();
! 	end_sequence ();
  
  	new_rtx = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_NTPOFF);
  	temp = gen_reg_rtx (Pmode);
--- 5589,5595 ----
  	new_rtx = force_const_mem (Pmode, new_rtx);
  	emit_move_insn (r2, new_rtx);
  	s390_emit_tls_call_insn (r2, tls_call);
! 	insn = end_sequence ();
  
  	new_rtx = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_NTPOFF);
  	temp = gen_reg_rtx (Pmode);
*************** legitimize_tls_address (rtx addr, rtx re
*** 5612,5619 ****
  	new_rtx = force_const_mem (Pmode, new_rtx);
  	emit_move_insn (r2, new_rtx);
  	s390_emit_tls_call_insn (r2, tls_call);
! 	insn = get_insns ();
! 	end_sequence ();
  
  	new_rtx = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx), UNSPEC_TLSLDM_NTPOFF);
  	temp = gen_reg_rtx (Pmode);
--- 5611,5617 ----
  	new_rtx = force_const_mem (Pmode, new_rtx);
  	emit_move_insn (r2, new_rtx);
  	s390_emit_tls_call_insn (r2, tls_call);
! 	insn = end_sequence ();
  
  	new_rtx = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx), UNSPEC_TLSLDM_NTPOFF);
  	temp = gen_reg_rtx (Pmode);
*************** s390_two_part_insv (struct alignment_con
*** 7869,7876 ****
  			    const0_rtx, ins))
  	{
  	  *seq1 = NULL;
! 	  *seq2 = get_insns ();
! 	  end_sequence ();
  	  return tmp;
  	}
        end_sequence ();
--- 7867,7873 ----
  			    const0_rtx, ins))
  	{
  	  *seq1 = NULL;
! 	  *seq2 = end_sequence ();
  	  return tmp;
  	}
        end_sequence ();
*************** s390_two_part_insv (struct alignment_con
*** 7879,7891 ****
    /* Failed to use insv.  Generate a two part shift and mask.  */
    start_sequence ();
    tmp = s390_expand_mask_and_shift (ins, mode, ac->shift);
!   *seq1 = get_insns ();
!   end_sequence ();
  
    start_sequence ();
    tmp = expand_simple_binop (SImode, IOR, tmp, val, NULL_RTX, 1, OPTAB_DIRECT);
!   *seq2 = get_insns ();
!   end_sequence ();
  
    return tmp;
  }
--- 7876,7886 ----
    /* Failed to use insv.  Generate a two part shift and mask.  */
    start_sequence ();
    tmp = s390_expand_mask_and_shift (ins, mode, ac->shift);
!   *seq1 = end_sequence ();
  
    start_sequence ();
    tmp = expand_simple_binop (SImode, IOR, tmp, val, NULL_RTX, 1, OPTAB_DIRECT);
!   *seq2 = end_sequence ();
  
    return tmp;
  }
*************** s390_load_got (void)
*** 11811,11818 ****
  
    emit_move_insn (got_rtx, s390_got_symbol ());
  
!   insns = get_insns ();
!   end_sequence ();
    return insns;
  }
  
--- 11806,11812 ----
  
    emit_move_insn (got_rtx, s390_got_symbol ());
  
!   insns = end_sequence ();
    return insns;
  }
  
*************** s390_va_start (tree valist, rtx nextarg
*** 13579,13586 ****
  
        start_sequence ();
        emit_move_insn (reg, gen_rtx_REG (Pmode, 1));
!       seq = get_insns ();
!       end_sequence ();
  
        push_topmost_sequence ();
        emit_insn_after (seq, entry_of_function ());
--- 13573,13579 ----
  
        start_sequence ();
        emit_move_insn (reg, gen_rtx_REG (Pmode, 1));
!       seq = end_sequence ();
  
        push_topmost_sequence ();
        emit_insn_after (seq, entry_of_function ());
diff -Nrcpad gcc-16-20250511/gcc/config/s390/vector.md gcc-16-20250518/gcc/config/s390/vector.md
*** gcc-16-20250511/gcc/config/s390/vector.md	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/s390/vector.md	Sun May 18 22:32:07 2025
***************
*** 953,959 ****
        else
  	{
  	  reg_pair += 2;  // get rid of prefix %f
! 	  snprintf (buf, sizeof (buf), "ldr\t%%f0,%%f1;vpdi\t%%%%v%s,%%v1,%%%%v%s,5", reg_pair, reg_pair);
  	  output_asm_insn (buf, operands);
  	  return "";
  	}
--- 953,959 ----
        else
  	{
  	  reg_pair += 2;  // get rid of prefix %f
! 	  snprintf (buf, sizeof (buf), "vlr\t%%v0,%%v1;vpdi\t%%%%v%s,%%v1,%%%%v%s,5", reg_pair, reg_pair);
  	  output_asm_insn (buf, operands);
  	  return "";
  	}
diff -Nrcpad gcc-16-20250511/gcc/config/sh/sh_treg_combine.cc gcc-16-20250518/gcc/config/sh/sh_treg_combine.cc
*** gcc-16-20250511/gcc/config/sh/sh_treg_combine.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/sh/sh_treg_combine.cc	Sun May 18 22:32:07 2025
*************** sh_treg_combine::make_not_reg_insn (rtx
*** 945,954 ****
    else
      gcc_unreachable ();
  
!   rtx i = get_insns ();
!   end_sequence ();
! 
!   return i;
  }
  
  rtx_insn *
--- 945,951 ----
    else
      gcc_unreachable ();
  
!   return end_sequence ();
  }
  
  rtx_insn *
diff -Nrcpad gcc-16-20250511/gcc/config/sparc/sparc.cc gcc-16-20250518/gcc/config/sparc/sparc.cc
*** gcc-16-20250511/gcc/config/sparc/sparc.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/sparc/sparc.cc	Sun May 18 22:32:07 2025
*************** sparc_legitimize_tls_address (rtx addr)
*** 4762,4769 ****
  					     addr, const1_rtx));
  	use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0);
  	RTL_CONST_CALL_P (insn) = 1;
! 	insn = get_insns ();
! 	end_sequence ();
  	emit_libcall_block (insn, ret, o0, addr);
  	break;
  
--- 4762,4768 ----
  					     addr, const1_rtx));
  	use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0);
  	RTL_CONST_CALL_P (insn) = 1;
! 	insn = end_sequence ();
  	emit_libcall_block (insn, ret, o0, addr);
  	break;
  
*************** sparc_legitimize_tls_address (rtx addr)
*** 4782,4789 ****
  					      const1_rtx));
  	use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0);
  	RTL_CONST_CALL_P (insn) = 1;
! 	insn = get_insns ();
! 	end_sequence ();
  	/* Attach a unique REG_EQUAL, to allow the RTL optimizers to
  	  share the LD_BASE result with other LD model accesses.  */
  	emit_libcall_block (insn, temp3, o0,
--- 4781,4787 ----
  					      const1_rtx));
  	use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0);
  	RTL_CONST_CALL_P (insn) = 1;
! 	insn = end_sequence ();
  	/* Attach a unique REG_EQUAL, to allow the RTL optimizers to
  	  share the LD_BASE result with other LD model accesses.  */
  	emit_libcall_block (insn, temp3, o0,
*************** sparc_output_mi_thunk (FILE *file, tree
*** 12530,12537 ****
  	  if (!TARGET_VXWORKS_RTP)
  	    pic_offset_table_rtx = got_register_rtx;
  	  scratch = sparc_legitimize_pic_address (funexp, scratch);
! 	  seq = get_insns ();
! 	  end_sequence ();
  	  emit_and_preserve (seq, spill_reg, pic_offset_table_rtx);
  	}
        else if (TARGET_ARCH32)
--- 12528,12534 ----
  	  if (!TARGET_VXWORKS_RTP)
  	    pic_offset_table_rtx = got_register_rtx;
  	  scratch = sparc_legitimize_pic_address (funexp, scratch);
! 	  seq = end_sequence ();
  	  emit_and_preserve (seq, spill_reg, pic_offset_table_rtx);
  	}
        else if (TARGET_ARCH32)
*************** sparc_output_mi_thunk (FILE *file, tree
*** 12557,12564 ****
  	      spill_reg = gen_rtx_REG (DImode, 15);  /* %o7 */
  	      start_sequence ();
  	      sparc_emit_set_symbolic_const64 (scratch, funexp, spill_reg);
! 	      seq = get_insns ();
! 	      end_sequence ();
  	      emit_and_preserve (seq, spill_reg, 0);
  	      break;
  
--- 12554,12560 ----
  	      spill_reg = gen_rtx_REG (DImode, 15);  /* %o7 */
  	      start_sequence ();
  	      sparc_emit_set_symbolic_const64 (scratch, funexp, spill_reg);
! 	      seq = end_sequence ();
  	      emit_and_preserve (seq, spill_reg, 0);
  	      break;
  
*************** sparc_init_pic_reg (void)
*** 13242,13249 ****
    load_got_register ();
    if (!TARGET_VXWORKS_RTP)
      emit_move_insn (pic_offset_table_rtx, got_register_rtx);
!   seq = get_insns ();
!   end_sequence ();
  
    entry_edge = single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun));
    insert_insn_on_edge (seq, entry_edge);
--- 13238,13244 ----
    load_got_register ();
    if (!TARGET_VXWORKS_RTP)
      emit_move_insn (pic_offset_table_rtx, got_register_rtx);
!   seq = end_sequence ();
  
    entry_edge = single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun));
    insert_insn_on_edge (seq, entry_edge);
diff -Nrcpad gcc-16-20250511/gcc/config/stormy16/stormy16.cc gcc-16-20250518/gcc/config/stormy16/stormy16.cc
*** gcc-16-20250511/gcc/config/stormy16/stormy16.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/stormy16/stormy16.cc	Sun May 18 22:32:07 2025
*************** xstormy16_split_cbranch (machine_mode mo
*** 405,412 ****
  
    start_sequence ();
    xstormy16_expand_arith (mode, COMPARE, dest, op0, op1);
!   seq = get_insns ();
!   end_sequence ();
  
    gcc_assert (INSN_P (seq));
  
--- 405,411 ----
  
    start_sequence ();
    xstormy16_expand_arith (mode, COMPARE, dest, op0, op1);
!   seq = end_sequence ();
  
    gcc_assert (INSN_P (seq));
  
diff -Nrcpad gcc-16-20250511/gcc/config/xtensa/xtensa.cc gcc-16-20250518/gcc/config/xtensa/xtensa.cc
*** gcc-16-20250511/gcc/config/xtensa/xtensa.cc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config/xtensa/xtensa.cc	Sun May 18 22:32:07 2025
*************** xtensa_copy_incoming_a7 (rtx opnd)
*** 1482,1489 ****
    if (mode == DFmode || mode == DImode)
      emit_insn (gen_movsi_internal (gen_rtx_SUBREG (SImode, tmp, 0),
  				   gen_rtx_REG (SImode, A7_REG - 1)));
!   entry_insns = get_insns ();
!   end_sequence ();
  
    if (cfun->machine->vararg_a7)
      {
--- 1482,1488 ----
    if (mode == DFmode || mode == DImode)
      emit_insn (gen_movsi_internal (gen_rtx_SUBREG (SImode, tmp, 0),
  				   gen_rtx_REG (SImode, A7_REG - 1)));
!   entry_insns = end_sequence ();
  
    if (cfun->machine->vararg_a7)
      {
*************** xtensa_expand_block_set_libcall (rtx dst
*** 1644,1651 ****
  		     GEN_INT (value), SImode,
  		     GEN_INT (bytes), SImode);
  
!   seq = get_insns ();
!   end_sequence ();
  
    return seq;
  }
--- 1643,1649 ----
  		     GEN_INT (value), SImode,
  		     GEN_INT (bytes), SImode);
  
!   seq = end_sequence ();
  
    return seq;
  }
*************** xtensa_expand_block_set_unrolled_loop (r
*** 1706,1713 ****
      }
    while (bytes > 0);
  
!   seq = get_insns ();
!   end_sequence ();
  
    return seq;
  }
--- 1704,1710 ----
      }
    while (bytes > 0);
  
!   seq = end_sequence ();
  
    return seq;
  }
*************** xtensa_expand_block_set_small_loop (rtx
*** 1788,1795 ****
    emit_insn (gen_addsi3 (dst, dst, GEN_INT (align)));
    emit_cmp_and_jump_insns (dst, end, NE, const0_rtx, SImode, true, label);
  
!   seq = get_insns ();
!   end_sequence ();
  
    return seq;
  }
--- 1785,1791 ----
    emit_insn (gen_addsi3 (dst, dst, GEN_INT (align)));
    emit_cmp_and_jump_insns (dst, end, NE, const0_rtx, SImode, true, label);
  
!   seq = end_sequence ();
  
    return seq;
  }
*************** xtensa_call_tls_desc (rtx sym, rtx *retp
*** 2467,2474 ****
    emit_move_insn (a_io, arg);
    call_insn = emit_call_insn (gen_tls_call (a_io, fn, sym, const1_rtx));
    use_reg (&CALL_INSN_FUNCTION_USAGE (call_insn), a_io);
!   insns = get_insns ();
!   end_sequence ();
  
    *retp = a_io;
    return insns;
--- 2463,2469 ----
    emit_move_insn (a_io, arg);
    call_insn = emit_call_insn (gen_tls_call (a_io, fn, sym, const1_rtx));
    use_reg (&CALL_INSN_FUNCTION_USAGE (call_insn), a_io);
!   insns = end_sequence ();
  
    *retp = a_io;
    return insns;
diff -Nrcpad gcc-16-20250511/gcc/config.gcc gcc-16-20250518/gcc/config.gcc
*** gcc-16-20250511/gcc/config.gcc	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/config.gcc	Sun May 18 22:32:07 2025
*************** riscv*)
*** 558,563 ****
--- 558,564 ----
  	extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h riscv_th_vector.h sifive_vector.h"
  	target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
  	target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.h"
+ 	extra_options="${extra_options} riscv/riscv-ext.opt"
  	;;
  rs6000*-*-*)
  	extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
*************** case "${target}" in
*** 4459,4465 ****
  
  		case "$with_abi" in
  		"" \
! 		| apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
  			#OK
  			;;
  		*)
--- 4460,4466 ----
  
  		case "$with_abi" in
  		"" \
! 		| apcs-gnu | atpcs | aapcs | aapcs-linux )
  			#OK
  			;;
  		*)
*************** case "${target}" in
*** 5658,5663 ****
--- 5659,5665 ----
  			#TODO 'sm_[...]' list per 'nvptx-sm.def'.
  			sm_30 | sm_35 | sm_37 \
  			| sm_52 | sm_53 \
+ 			| sm_61 \
  			| sm_70 | sm_75 \
  			| sm_80 | sm_89 )
  				TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG $nvptx_multilib"
diff -Nrcpad gcc-16-20250511/gcc/cp/ChangeLog gcc-16-20250518/gcc/cp/ChangeLog
*** gcc-16-20250511/gcc/cp/ChangeLog	Sun May 11 22:32:09 2025
--- gcc-16-20250518/gcc/cp/ChangeLog	Sun May 18 22:32:07 2025
***************
*** 1,3 ****
--- 1,83 ----
+ 2025-05-16  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	* cp-gimplify.cc (cp_fold): Do the conversion unconditionally, even for same-type cases.
+ 
+ 2025-05-16  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* typeck.cc (check_return_expr): Suppress conversions for NVRO
+ 	in coroutine ramp functions.
+ 
+ 2025-05-16  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* decl.cc (poplevel): Set BLOCK_OUTER_CURLY_BRACE_P on the
+ 	body block for functions with no subblocks.
+ 
+ 2025-05-16  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* module.cc (importer_interface): Adjust flags.
+ 	(get_importer_interface): Rename flags.
+ 	(trees_out::core_bools): Clean up special casing.
+ 	(trees_out::write_function_def): Rename flag.
+ 
+ 2025-05-15  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/120161
+ 	* pt.cc (unify) <case RECORD_TYPE>: When comparing specializations
+ 	of a non-primary template, still perform a type comparison.
+ 
+ 2025-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* module.cc (trees_out::lang_decl_bools): Stream implicit_constexpr.
+ 	(trees_in::lang_decl_bools): Likewise.
+ 	(trees_in::is_matching_decl): Check it.
+ 
+ 2025-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99599
+ 	* pt.cc (conversion_may_instantiate_p): Make sure
+ 	classes are complete.
+ 
+ 2025-05-14  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	* cp-gimplify.cc (cp_fold): Remove a remnant comment.
+ 
+ 2025-05-14  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/120125
+ 	* module.cc (trees_out::write_function_def): Only set
+ 	DECL_NOT_REALLY_EXTERN if the importer might need to emit it.
+ 	* optimize.cc (maybe_thunk_body): Don't assume 'fn' has a cgraph
+ 	node created.
+ 
+ 2025-05-14  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/119864
+ 	* decl2.cc (start_objects): Only use module initialized for
+ 	host.
+ 	(c_parse_final_cleanups): Don't always create an OMP offload
+ 	init function in modules.
+ 
+ 2025-05-14  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* name-lookup.cc (lookup_imported_hidden_friend): Add back
+ 	lazy_load_pendings with comment.
+ 
+ 2025-05-14  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	* cp-gimplify.cc (cp_fold): Add to_underlying.
+ 
+ 2025-05-14  Owen Avery  <powerboat9.gamer@gmail.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	* method.cc (synthesized_method_walk): Check whether
+ 	-Wvirtual-move-assign is enabled at the location of a base
+ 	class's move assignment operator.
+ 
+ 2025-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120012
+ 	* class.cc (check_non_pod_aggregate): Check is_empty_class.
+ 
  2025-05-10  Jason Merrill  <jason@redhat.com>
  
  	PR c++/120204
diff -Nrcpad gcc-16-20250511/gcc/cp/class.cc gcc-16-20250518/gcc/cp/class.cc
*** gcc-16-20250511/gcc/cp/class.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/class.cc	Sun May 18 22:32:07 2025
*************** check_non_pod_aggregate (tree field)
*** 6879,6886 ****
    tree type = TREE_TYPE (field);
    if (TYPE_IDENTIFIER (type) == as_base_identifier)
      type = TYPE_CONTEXT (type);
!   if (!CLASS_TYPE_P (type) || (!CLASSTYPE_NON_POD_AGGREGATE (type)
! 			       && !CLASSTYPE_NON_AGGREGATE_POD (type)))
      return;
    tree size = end_of_class (type, (DECL_FIELD_IS_BASE (field)
  				   ? eoc_nvsize : eoc_nv_or_dsize));
--- 6879,6888 ----
    tree type = TREE_TYPE (field);
    if (TYPE_IDENTIFIER (type) == as_base_identifier)
      type = TYPE_CONTEXT (type);
!   if (!CLASS_TYPE_P (type)
!       || is_empty_class (type)
!       || (!CLASSTYPE_NON_POD_AGGREGATE (type)
! 	  && !CLASSTYPE_NON_AGGREGATE_POD (type)))
      return;
    tree size = end_of_class (type, (DECL_FIELD_IS_BASE (field)
  				   ? eoc_nvsize : eoc_nv_or_dsize));
diff -Nrcpad gcc-16-20250511/gcc/cp/cp-gimplify.cc gcc-16-20250518/gcc/cp/cp-gimplify.cc
*** gcc-16-20250511/gcc/cp/cp-gimplify.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/cp-gimplify.cc	Sun May 18 22:32:07 2025
*************** cp_fold (tree x, fold_flags_t flags)
*** 3343,3361 ****
  		|| id_equal (DECL_NAME (callee), "addressof")
  		/* This addressof equivalent is used heavily in libstdc++.  */
  		|| id_equal (DECL_NAME (callee), "__addressof")
  		|| id_equal (DECL_NAME (callee), "as_const")))
  	  {
  	    r = CALL_EXPR_ARG (x, 0);
! 	    /* Check that the return and argument types are sane before
! 	       folding.  */
! 	    if (INDIRECT_TYPE_P (TREE_TYPE (x))
! 		&& INDIRECT_TYPE_P (TREE_TYPE (r)))
! 	      {
! 		if (!same_type_p (TREE_TYPE (x), TREE_TYPE (r)))
! 		  r = build_nop (TREE_TYPE (x), r);
! 		x = cp_fold (r, flags);
! 		break;
! 	      }
  	  }
  
  	int sv = optimize, nw = sv;
--- 3343,3355 ----
  		|| id_equal (DECL_NAME (callee), "addressof")
  		/* This addressof equivalent is used heavily in libstdc++.  */
  		|| id_equal (DECL_NAME (callee), "__addressof")
+ 		|| id_equal (DECL_NAME (callee), "to_underlying")
  		|| id_equal (DECL_NAME (callee), "as_const")))
  	  {
  	    r = CALL_EXPR_ARG (x, 0);
! 	    r = build_nop (TREE_TYPE (x), r);
! 	    x = cp_fold (r, flags);
! 	    break;
  	  }
  
  	int sv = optimize, nw = sv;
diff -Nrcpad gcc-16-20250511/gcc/cp/decl.cc gcc-16-20250518/gcc/cp/decl.cc
*** gcc-16-20250511/gcc/cp/decl.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/decl.cc	Sun May 18 22:32:07 2025
*************** poplevel (int keep, int reverse, int fun
*** 846,856 ****
        DECL_INITIAL (current_function_decl) = block ? block : subblocks;
        if (subblocks)
  	{
! 	  if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl))
! 	    {
! 	      if (BLOCK_SUBBLOCKS (subblocks))
! 		BLOCK_OUTER_CURLY_BRACE_P (BLOCK_SUBBLOCKS (subblocks)) = 1;
! 	    }
  	  else
  	    BLOCK_OUTER_CURLY_BRACE_P (subblocks) = 1;
  	}
--- 846,854 ----
        DECL_INITIAL (current_function_decl) = block ? block : subblocks;
        if (subblocks)
  	{
! 	  if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl)
! 	      && BLOCK_SUBBLOCKS (subblocks))
! 	    BLOCK_OUTER_CURLY_BRACE_P (BLOCK_SUBBLOCKS (subblocks)) = 1;
  	  else
  	    BLOCK_OUTER_CURLY_BRACE_P (subblocks) = 1;
  	}
diff -Nrcpad gcc-16-20250511/gcc/cp/decl2.cc gcc-16-20250518/gcc/cp/decl2.cc
*** gcc-16-20250511/gcc/cp/decl2.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/decl2.cc	Sun May 18 22:32:07 2025
*************** start_objects (bool initp, unsigned prio
*** 4186,4192 ****
  	       bool omp_target = false)
  {
    bool default_init = initp && priority == DEFAULT_INIT_PRIORITY;
!   bool is_module_init = default_init && module_global_init_needed ();
    tree name = NULL_TREE;
  
    if (is_module_init)
--- 4186,4196 ----
  	       bool omp_target = false)
  {
    bool default_init = initp && priority == DEFAULT_INIT_PRIORITY;
!   /* FIXME: We may eventually want to treat OpenMP offload initializers
!      in modules specially as well.  */
!   bool is_module_init = (default_init
! 			 && !omp_target
! 			 && module_global_init_needed ());
    tree name = NULL_TREE;
  
    if (is_module_init)
*************** c_parse_final_cleanups (void)
*** 5878,5889 ****
        if (static_init_fini_fns[true]->get_or_insert (DEFAULT_INIT_PRIORITY))
  	has_module_inits = true;
  
!       if (flag_openmp)
! 	{
! 	  if (!static_init_fini_fns[2 + true])
! 	    static_init_fini_fns[2 + true] = priority_map_t::create_ggc ();
! 	  static_init_fini_fns[2 + true]->get_or_insert (DEFAULT_INIT_PRIORITY);
! 	}
      }
  
    /* Generate initialization and destruction functions for all
--- 5882,5889 ----
        if (static_init_fini_fns[true]->get_or_insert (DEFAULT_INIT_PRIORITY))
  	has_module_inits = true;
  
!       /* FIXME: We need to work out what static constructors on OpenMP offload
! 	 target in modules will look like.  */
      }
  
    /* Generate initialization and destruction functions for all
diff -Nrcpad gcc-16-20250511/gcc/cp/method.cc gcc-16-20250518/gcc/cp/method.cc
*** gcc-16-20250511/gcc/cp/method.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/method.cc	Sun May 18 22:32:07 2025
*************** synthesized_method_walk (tree ctype, spe
*** 2949,2955 ****
  	  && BINFO_VIRTUAL_P (base_binfo)
  	  && fn && TREE_CODE (fn) == FUNCTION_DECL
  	  && move_fn_p (fn) && !trivial_fn_p (fn)
! 	  && vbase_has_user_provided_move_assign (BINFO_TYPE (base_binfo)))
  	warning (OPT_Wvirtual_move_assign,
  		 "defaulted move assignment for %qT calls a non-trivial "
  		 "move assignment operator for virtual base %qT",
--- 2949,2957 ----
  	  && BINFO_VIRTUAL_P (base_binfo)
  	  && fn && TREE_CODE (fn) == FUNCTION_DECL
  	  && move_fn_p (fn) && !trivial_fn_p (fn)
! 	  && vbase_has_user_provided_move_assign (BINFO_TYPE (base_binfo))
! 	  && warning_enabled_at (DECL_SOURCE_LOCATION (fn),
! 				 OPT_Wvirtual_move_assign))
  	warning (OPT_Wvirtual_move_assign,
  		 "defaulted move assignment for %qT calls a non-trivial "
  		 "move assignment operator for virtual base %qT",
diff -Nrcpad gcc-16-20250511/gcc/cp/module.cc gcc-16-20250518/gcc/cp/module.cc
*** gcc-16-20250511/gcc/cp/module.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/module.cc	Sun May 18 22:32:07 2025
*************** trees_in::start (unsigned code)
*** 5546,5553 ****
  
  enum class importer_interface {
    unknown,	  /* The definition may or may not need to be emitted.  */
!   always_import,  /* The definition can always be found in another TU.  */
!   always_emit,	  /* The definition must be emitted in the importer's TU. */
  };
  
  /* Returns what kind of interface an importer will have of DECL.  */
--- 5546,5555 ----
  
  enum class importer_interface {
    unknown,	  /* The definition may or may not need to be emitted.  */
!   external,	  /* The definition can always be found in another TU.  */
!   internal,	  /* The definition should be emitted in the importer's TU.  */
!   always_emit,	  /* The definition must be emitted in the importer's TU,
! 		     regardless of if it's used or not. */
  };
  
  /* Returns what kind of interface an importer will have of DECL.  */
*************** get_importer_interface (tree decl)
*** 5558,5570 ****
    /* Internal linkage entities must be emitted in each importer if
       there is a definition available.  */
    if (!TREE_PUBLIC (decl))
!     return importer_interface::always_emit;
  
!   /* Entities that aren't vague linkage are either not definitions or
!      will be emitted in this TU, so importers can just refer to an
!      external definition.  */
    if (!vague_linkage_p (decl))
!     return importer_interface::always_import;
  
    /* For explicit instantiations, importers can always rely on there
       being a definition in another TU, unless this is a definition
--- 5560,5572 ----
    /* Internal linkage entities must be emitted in each importer if
       there is a definition available.  */
    if (!TREE_PUBLIC (decl))
!     return importer_interface::internal;
  
!   /* Other entities that aren't vague linkage are either not definitions
!      or will be publicly emitted in this TU, so importers can just refer
!      to an external definition.  */
    if (!vague_linkage_p (decl))
!     return importer_interface::external;
  
    /* For explicit instantiations, importers can always rely on there
       being a definition in another TU, unless this is a definition
*************** get_importer_interface (tree decl)
*** 5574,5586 ****
        && DECL_EXPLICIT_INSTANTIATION (decl))
      return (header_module_p () && !DECL_EXTERNAL (decl)
  	    ? importer_interface::always_emit
! 	    : importer_interface::always_import);
  
    /* A gnu_inline function is never emitted in any TU.  */
    if (TREE_CODE (decl) == FUNCTION_DECL
        && DECL_DECLARED_INLINE_P (decl)
        && lookup_attribute ("gnu_inline", DECL_ATTRIBUTES (decl)))
!     return importer_interface::always_import;
  
    /* Everything else has vague linkage.  */
    return importer_interface::unknown;
--- 5576,5588 ----
        && DECL_EXPLICIT_INSTANTIATION (decl))
      return (header_module_p () && !DECL_EXTERNAL (decl)
  	    ? importer_interface::always_emit
! 	    : importer_interface::external);
  
    /* A gnu_inline function is never emitted in any TU.  */
    if (TREE_CODE (decl) == FUNCTION_DECL
        && DECL_DECLARED_INLINE_P (decl)
        && lookup_attribute ("gnu_inline", DECL_ATTRIBUTES (decl)))
!     return importer_interface::external;
  
    /* Everything else has vague linkage.  */
    return importer_interface::unknown;
*************** trees_out::core_bools (tree t, bits_out&
*** 5722,5750 ****
  	   DECL_NOT_REALLY_EXTERN -> base.not_really_extern
  	     == that was a lie, it is here  */
  
  	bool is_external = t->decl_common.decl_flag_1;
! 	if (!is_external)
! 	  /* decl_flag_1 is DECL_EXTERNAL. Things we emit here, might
! 	     well be external from the POV of an importer.  */
! 	  // FIXME: Do we need to know if this is a TEMPLATE_RESULT --
! 	  // a flag from the caller?
! 	  switch (code)
! 	    {
! 	    default:
! 	      break;
! 
! 	    case VAR_DECL:
! 	      if (TREE_PUBLIC (t)
! 		  && DECL_VTABLE_OR_VTT_P (t))
! 		/* We handle vtable linkage specially.  */
! 		is_external = true;
! 	      gcc_fallthrough ();
! 	    case FUNCTION_DECL:
! 	      if (get_importer_interface (t)
! 		  == importer_interface::always_import)
! 		is_external = true;
! 	      break;
! 	    }
  	WB (is_external);
        }
  
--- 5724,5736 ----
  	   DECL_NOT_REALLY_EXTERN -> base.not_really_extern
  	     == that was a lie, it is here  */
  
+ 	/* decl_flag_1 is DECL_EXTERNAL. Things we emit here, might
+ 	   well be external from the POV of an importer.  */
  	bool is_external = t->decl_common.decl_flag_1;
! 	if (!is_external
! 	    && VAR_OR_FUNCTION_DECL_P (t)
! 	    && get_importer_interface (t) == importer_interface::external)
! 	  is_external = true;
  	WB (is_external);
        }
  
*************** trees_out::lang_decl_bools (tree t, bits
*** 6024,6030 ****
        WB (lang->u.fn.has_dependent_explicit_spec_p);
        WB (lang->u.fn.immediate_fn_p);
        WB (lang->u.fn.maybe_deleted);
!       /* We do not stream lang->u.fn.implicit_constexpr.  */
        WB (lang->u.fn.escalated_p);
        WB (lang->u.fn.xobj_func);
        goto lds_min;
--- 6010,6016 ----
        WB (lang->u.fn.has_dependent_explicit_spec_p);
        WB (lang->u.fn.immediate_fn_p);
        WB (lang->u.fn.maybe_deleted);
!       WB (lang->u.fn.implicit_constexpr);
        WB (lang->u.fn.escalated_p);
        WB (lang->u.fn.xobj_func);
        goto lds_min;
*************** trees_in::lang_decl_bools (tree t, bits_
*** 6095,6101 ****
        RB (lang->u.fn.has_dependent_explicit_spec_p);
        RB (lang->u.fn.immediate_fn_p);
        RB (lang->u.fn.maybe_deleted);
!       /* We do not stream lang->u.fn.implicit_constexpr.  */
        RB (lang->u.fn.escalated_p);
        RB (lang->u.fn.xobj_func);
        goto lds_min;
--- 6081,6087 ----
        RB (lang->u.fn.has_dependent_explicit_spec_p);
        RB (lang->u.fn.immediate_fn_p);
        RB (lang->u.fn.maybe_deleted);
!       RB (lang->u.fn.implicit_constexpr);
        RB (lang->u.fn.escalated_p);
        RB (lang->u.fn.xobj_func);
        goto lds_min;
*************** trees_in::is_matching_decl (tree existin
*** 12193,12205 ****
  
        /* Similarly if EXISTING has undeduced constexpr, but DECL's
  	 is already deduced.  */
!       if (DECL_MAYBE_DELETED (e_inner) && !DECL_MAYBE_DELETED (d_inner)
! 	  && DECL_DECLARED_CONSTEXPR_P (d_inner))
! 	DECL_DECLARED_CONSTEXPR_P (e_inner) = true;
!       else if (!DECL_MAYBE_DELETED (e_inner) && DECL_MAYBE_DELETED (d_inner))
! 	/* Nothing to do.  */;
        else if (DECL_DECLARED_CONSTEXPR_P (e_inner)
! 	       != DECL_DECLARED_CONSTEXPR_P (d_inner))
  	{
  	  mismatch_msg = G_("conflicting %<constexpr%> for imported "
  			    "declaration %#qD");
--- 12179,12201 ----
  
        /* Similarly if EXISTING has undeduced constexpr, but DECL's
  	 is already deduced.  */
!       if (DECL_DECLARED_CONSTEXPR_P (e_inner)
! 	  == DECL_DECLARED_CONSTEXPR_P (d_inner))
! 	/* Already matches.  */;
!       else if (DECL_DECLARED_CONSTEXPR_P (d_inner)
! 	       && (DECL_MAYBE_DELETED (e_inner)
! 		   || decl_implicit_constexpr_p (d_inner)))
! 	/* DECL was deduced, copy to EXISTING.  */
! 	{
! 	  DECL_DECLARED_CONSTEXPR_P (e_inner) = true;
! 	  if (decl_implicit_constexpr_p (d_inner))
! 	    DECL_LANG_SPECIFIC (e_inner)->u.fn.implicit_constexpr = true;
! 	}
        else if (DECL_DECLARED_CONSTEXPR_P (e_inner)
! 	       && (DECL_MAYBE_DELETED (d_inner)
! 		   || decl_implicit_constexpr_p (e_inner)))
! 	/* EXISTING was deduced, leave it alone.  */;
!       else
  	{
  	  mismatch_msg = G_("conflicting %<constexpr%> for imported "
  			    "declaration %#qD");
*************** trees_out::write_function_def (tree decl
*** 12638,12644 ****
      {
        unsigned flags = 0;
  
!       flags |= 1 * DECL_NOT_REALLY_EXTERN (decl);
        if (f)
  	{
  	  flags |= 2;
--- 12634,12644 ----
      {
        unsigned flags = 0;
  
!       /* Whether the importer should emit this definition, if used.  */
!       flags |= 1 * (DECL_NOT_REALLY_EXTERN (decl)
! 		    && (get_importer_interface (decl)
! 			!= importer_interface::external));
! 
        if (f)
  	{
  	  flags |= 2;
diff -Nrcpad gcc-16-20250511/gcc/cp/name-lookup.cc gcc-16-20250518/gcc/cp/name-lookup.cc
*** gcc-16-20250511/gcc/cp/name-lookup.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/name-lookup.cc	Sun May 18 22:32:07 2025
*************** lookup_imported_hidden_friend (tree frie
*** 4556,4561 ****
--- 4556,4564 ----
        || !DECL_MODULE_ENTITY_P (inner))
      return NULL_TREE;
  
+   /* Load any templates matching FRIEND_TMPL from importers.  */
+   lazy_load_pendings (friend_tmpl);
+ 
    tree name = DECL_NAME (inner);
    tree *slot = find_namespace_slot (current_namespace, name, false);
    if (!slot || !*slot || TREE_CODE (*slot) != BINDING_VECTOR)
diff -Nrcpad gcc-16-20250511/gcc/cp/optimize.cc gcc-16-20250518/gcc/cp/optimize.cc
*** gcc-16-20250511/gcc/cp/optimize.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/optimize.cc	Sun May 18 22:32:07 2025
*************** maybe_thunk_body (tree fn, bool force)
*** 309,316 ****
        defer_mangling_aliases = save_defer_mangling_aliases;
        cgraph_node::get_create (fns[0])->set_comdat_group (comdat_group);
        cgraph_node::get_create (fns[1])->add_to_same_comdat_group
! 	(cgraph_node::get_create (fns[0]));
!       symtab_node::get (fn)->add_to_same_comdat_group
  	(symtab_node::get (fns[0]));
        if (fns[2])
  	/* If *[CD][12]* dtors go into the *[CD]5* comdat group and dtor is
--- 309,316 ----
        defer_mangling_aliases = save_defer_mangling_aliases;
        cgraph_node::get_create (fns[0])->set_comdat_group (comdat_group);
        cgraph_node::get_create (fns[1])->add_to_same_comdat_group
! 	(cgraph_node::get (fns[0]));
!       symtab_node::get_create (fn)->add_to_same_comdat_group
  	(symtab_node::get (fns[0]));
        if (fns[2])
  	/* If *[CD][12]* dtors go into the *[CD]5* comdat group and dtor is
diff -Nrcpad gcc-16-20250511/gcc/cp/pt.cc gcc-16-20250518/gcc/cp/pt.cc
*** gcc-16-20250511/gcc/cp/pt.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/pt.cc	Sun May 18 22:32:07 2025
*************** conversion_may_instantiate_p (tree to, t
*** 23529,23541 ****
  
    /* Converting to a non-aggregate class type will consider its
       user-declared constructors, which might induce instantiation.  */
!   if (CLASS_TYPE_P (to)
        && type_has_converting_constructor (to))
      return true;
  
    /* Similarly, converting from a class type will consider its conversion
       functions.  */
!   if (CLASS_TYPE_P (from)
        && TYPE_HAS_CONVERSION (from))
      return true;
  
--- 23529,23541 ----
  
    /* Converting to a non-aggregate class type will consider its
       user-declared constructors, which might induce instantiation.  */
!   if (CLASS_TYPE_P (complete_type (to))
        && type_has_converting_constructor (to))
      return true;
  
    /* Similarly, converting from a class type will consider its conversion
       functions.  */
!   if (CLASS_TYPE_P (complete_type (from))
        && TYPE_HAS_CONVERSION (from))
      return true;
  
*************** unify (tree tparms, tree targs, tree par
*** 25785,25794 ****
  			  INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (parm)),
  			  INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (t)),
  			  UNIFY_ALLOW_NONE, explain_p);
! 	  else
! 	    return unify_success (explain_p);
  	}
!       else if (!same_type_ignoring_top_level_qualifiers_p (parm, arg))
  	return unify_type_mismatch (explain_p, parm, arg);
        return unify_success (explain_p);
  
--- 25785,25794 ----
  			  INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (parm)),
  			  INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (t)),
  			  UNIFY_ALLOW_NONE, explain_p);
! 	  gcc_checking_assert (t == arg);
  	}
! 
!       if (!same_type_ignoring_top_level_qualifiers_p (parm, arg))
  	return unify_type_mismatch (explain_p, parm, arg);
        return unify_success (explain_p);
  
diff -Nrcpad gcc-16-20250511/gcc/cp/typeck.cc gcc-16-20250518/gcc/cp/typeck.cc
*** gcc-16-20250511/gcc/cp/typeck.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/cp/typeck.cc	Sun May 18 22:32:07 2025
*************** check_return_expr (tree retval, bool *no
*** 11463,11468 ****
--- 11463,11474 ----
  	  && call_from_lambda_thunk_p (retval))
  	converted = true;
  
+       /* Don't check copy-initialization for NRV in a coroutine ramp; we
+ 	 implement this case as NRV, but it's specified as directly
+ 	 initializing the return value from get_return_object().  */
+       if (DECL_RAMP_FN (current_function_decl) && named_return_value_okay_p)
+ 	converted = true;
+ 
        /* First convert the value to the function's return type, then
  	 to the type of return value's location to handle the
  	 case that functype is smaller than the valtype.  */
diff -Nrcpad gcc-16-20250511/gcc/diagnostic-format-html.cc gcc-16-20250518/gcc/diagnostic-format-html.cc
*** gcc-16-20250511/gcc/diagnostic-format-html.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/diagnostic-format-html.cc	Sun May 18 22:32:07 2025
*************** along with GCC; see the file COPYING3.
*** 27,37 ****
--- 27,40 ----
  #include "diagnostic-metadata.h"
  #include "diagnostic-format.h"
  #include "diagnostic-format-html.h"
+ #include "diagnostic-format-text.h"
  #include "diagnostic-output-file.h"
  #include "diagnostic-buffer.h"
  #include "selftest.h"
  #include "selftest-diagnostic.h"
  #include "pretty-print-format-impl.h"
+ #include "pretty-print-urlifier.h"
+ #include "edit-context.h"
  #include "intl.h"
  
  namespace xml {
*************** public:
*** 280,287 ****
    friend class diagnostic_html_format_buffer;
  
    html_builder (diagnostic_context &context,
! 		 pretty_printer &pp,
! 		 const line_maps *line_maps);
  
    void on_report_diagnostic (const diagnostic_info &diagnostic,
  			     diagnostic_t orig_diag_kind,
--- 283,290 ----
    friend class diagnostic_html_format_buffer;
  
    html_builder (diagnostic_context &context,
! 		pretty_printer &pp,
! 		const line_maps *line_maps);
  
    void on_report_diagnostic (const diagnostic_info &diagnostic,
  			     diagnostic_t orig_diag_kind,
*************** public:
*** 303,313 ****
--- 306,332 ----
      m_printer = &pp;
    }
  
+   std::unique_ptr<xml::element>
+   make_element_for_metadata (const diagnostic_metadata &metadata);
+ 
+   std::unique_ptr<xml::element>
+   make_element_for_source (const diagnostic_info &diagnostic);
+ 
+   std::unique_ptr<xml::element>
+   make_element_for_path (const diagnostic_path &path);
+ 
+   std::unique_ptr<xml::element>
+   make_element_for_patch (const diagnostic_info &diagnostic);
+ 
  private:
    std::unique_ptr<xml::element>
    make_element_for_diagnostic (const diagnostic_info &diagnostic,
  			       diagnostic_t orig_diag_kind);
  
+   std::unique_ptr<xml::element>
+   make_metadata_element (label_text label,
+ 			 label_text url);
+ 
    diagnostic_context &m_context;
    pretty_printer *m_printer;
    const line_maps *m_line_maps;
*************** html_builder::make_element_for_diagnosti
*** 560,587 ****
  
    if (diagnostic.metadata)
      {
!       int cwe = diagnostic.metadata->get_cwe ();
!       if (cwe)
! 	{
! 	  diag_element->add_text (label_text::borrow (" "));
! 	  auto cwe_span = make_span (label_text::borrow ("gcc-cwe-metadata"));
! 	  cwe_span->add_text (label_text::borrow ("["));
! 	  {
! 	    auto anchor = std::make_unique<xml::element> ("a", true);
! 	    anchor->set_attr ("href", label_text::take (get_cwe_url (cwe)));
! 	    pretty_printer pp;
! 	    pp_printf (&pp, "CWE-%i", cwe);
! 	    anchor->add_text
! 	      (label_text::take (xstrdup (pp_formatted_text (&pp))));
! 	    cwe_span->add_child (std::move (anchor));
! 	  }
! 	  cwe_span->add_text (label_text::borrow ("]"));
! 	  diag_element->add_child (std::move (cwe_span));
! 	}
      }
  
-   // TODO: show any rules
- 
    label_text option_text = label_text::take
      (m_context.make_option_name (diagnostic.option_id,
  				 orig_diag_kind, diagnostic.kind));
--- 579,589 ----
  
    if (diagnostic.metadata)
      {
!       diag_element->add_text (label_text::borrow (" "));
!       diag_element->add_child
! 	(make_element_for_metadata (*diagnostic.metadata));
      }
  
    label_text option_text = label_text::take
      (m_context.make_option_name (diagnostic.option_id,
  				 orig_diag_kind, diagnostic.kind));
*************** html_builder::make_element_for_diagnosti
*** 608,627 ****
        diag_element->add_child (std::move (option_span));
      }
  
    {
!     auto pre = std::make_unique<xml::element> ("pre", true);
!     pre->set_attr ("class", label_text::borrow ("gcc-annotated-source"));
!     // TODO: ideally we'd like to capture elements within the following:
!     diagnostic_show_locus (&m_context, m_context.m_source_printing,
! 			   diagnostic.richloc, diagnostic.kind,
! 			   m_printer);
!     pre->add_text
!       (label_text::take (xstrdup (pp_formatted_text (m_printer))));
!     pp_clear_output_area (m_printer);
!     diag_element->add_child (std::move (pre));
    }
  
!   return diag_element;
  }
  
  /* Implementation of diagnostic_context::m_diagrams.m_emission_cb
--- 610,731 ----
        diag_element->add_child (std::move (option_span));
      }
  
+   /* Source (and fix-it hints).  */
+   if (auto source_element = make_element_for_source (diagnostic))
+     diag_element->add_child (std::move (source_element));
+ 
+   /* Execution path.  */
+   if (auto path = diagnostic.richloc->get_path ())
+     if (auto path_element = make_element_for_path (*path))
+       diag_element->add_child (std::move (path_element));
+ 
+   if (auto patch_element = make_element_for_patch (diagnostic))
+     diag_element->add_child (std::move (patch_element));
+ 
+   return diag_element;
+ }
+ 
+ std::unique_ptr<xml::element>
+ html_builder::make_element_for_source (const diagnostic_info &diagnostic)
+ {
+   // TODO: ideally we'd like to capture elements within the following:
+   m_context.m_last_location = UNKNOWN_LOCATION;
+   pp_clear_output_area (m_printer);
+   diagnostic_show_locus (&m_context,
+ 			 m_context.m_source_printing,
+ 			 diagnostic.richloc, diagnostic.kind,
+ 			 m_printer);
+   auto text = label_text::take (xstrdup (pp_formatted_text (m_printer)));
+   pp_clear_output_area (m_printer);
+ 
+   if (strlen (text.get ()) == 0)
+     return nullptr;
+ 
+   auto pre = std::make_unique<xml::element> ("pre", true);
+   pre->set_attr ("class", label_text::borrow ("gcc-annotated-source"));
+   pre->add_text (std::move (text));
+   return pre;
+ }
+ 
+ std::unique_ptr<xml::element>
+ html_builder::make_element_for_path (const diagnostic_path &path)
+ {
+   m_context.m_last_location = UNKNOWN_LOCATION;
+   diagnostic_text_output_format text_format (m_context);
+   pp_show_color (text_format.get_printer ()) = false;
+   pp_buffer (text_format.get_printer ())->m_flush_p = false;
+   // TODO: ideally we'd like to capture elements within the following:
+   text_format.print_path (path);
+   auto text = label_text::take
+     (xstrdup (pp_formatted_text (text_format.get_printer ())));
+ 
+   if (strlen (text.get ()) == 0)
+     return nullptr;
+ 
+   auto pre = std::make_unique<xml::element> ("pre", true);
+   pre->set_attr ("class", label_text::borrow ("gcc-execution-path"));
+   pre->add_text (std::move (text));
+   return pre;
+ }
+ 
+ std::unique_ptr<xml::element>
+ html_builder::make_element_for_patch (const diagnostic_info &diagnostic)
+ {
+   edit_context ec (m_context.get_file_cache ());
+   ec.add_fixits (diagnostic.richloc);
+   if (char *diff = ec.generate_diff (true))
+     if (strlen (diff) > 0)
+       {
+ 	auto element = std::make_unique<xml::element> ("pre", true);
+ 	element->set_attr ("class", label_text::borrow ("gcc-generated-patch"));
+ 	element->add_text (label_text::take (diff));
+ 	return element;
+       }
+   return nullptr;
+ }
+ 
+ std::unique_ptr<xml::element>
+ html_builder::make_metadata_element (label_text label,
+ 				     label_text url)
+ {
+   auto item = make_span (label_text::borrow ("gcc-metadata-item"));
+   item->add_text (label_text::borrow ("["));
    {
!     auto anchor = std::make_unique<xml::element> ("a", true);
!     anchor->set_attr ("href", std::move (url));
!     anchor->add_child (std::make_unique<xml::text> (std::move (label)));
!     item->add_child (std::move (anchor));
    }
+   item->add_text (label_text::borrow ("]"));
+   return item;
+ }
  
! std::unique_ptr<xml::element>
! html_builder::make_element_for_metadata (const diagnostic_metadata &metadata)
! {
!   auto span_metadata = make_span (label_text::borrow ("gcc-metadata"));
! 
!   int cwe = metadata.get_cwe ();
!   if (cwe)
!     {
!       pretty_printer pp;
!       pp_printf (&pp, "CWE-%i", cwe);
!       label_text label = label_text::take (xstrdup (pp_formatted_text (&pp)));
!       label_text url = label_text::take (get_cwe_url (cwe));
!       span_metadata->add_child
! 	(make_metadata_element (std::move (label), std::move (url)));
!     }
! 
!   for (unsigned idx = 0; idx < metadata.get_num_rules (); ++idx)
!     {
!       auto &rule = metadata.get_rule (idx);
!       label_text label = label_text::take (rule.make_description ());
!       label_text url = label_text::take (rule.make_url ());
!       span_metadata->add_child
! 	(make_metadata_element (std::move (label), std::move (url)));
!     }
! 
!   return span_metadata;
  }
  
  /* Implementation of diagnostic_context::m_diagrams.m_emission_cb
*************** public:
*** 734,739 ****
--- 838,845 ----
      return m_builder.get_document ();
    }
  
+   html_builder &get_builder () { return m_builder; }
+ 
  protected:
    html_output_format (diagnostic_context &context,
  		      const line_maps *line_maps)
*************** public:
*** 852,857 ****
--- 958,968 ----
      return m_format->get_document ();
    }
  
+   html_builder &get_builder () const
+   {
+     return m_format->get_builder ();
+   }
+ 
  private:
    class html_buffered_output_format : public html_output_format
    {
*************** test_simple_log ()
*** 880,886 ****
    test_html_diagnostic_context dc;
  
    rich_location richloc (line_table, UNKNOWN_LOCATION);
!   dc.report (DK_ERROR, richloc, nullptr, 0, "this is a test: %i", 42);
  
    const xml::document &doc  = dc.get_document ();
  
--- 991,997 ----
    test_html_diagnostic_context dc;
  
    rich_location richloc (line_table, UNKNOWN_LOCATION);
!   dc.report (DK_ERROR, richloc, nullptr, 0, "this is a test: %qs", "foo");
  
    const xml::document &doc  = dc.get_document ();
  
*************** test_simple_log ()
*** 899,918 ****
        "  <body>\n"
        "    <div class=\"gcc-diagnostic-list\">\n"
        "      <div class=\"gcc-diagnostic\">\n"
!       "        <span class=\"gcc-message\">this is a test: 42</span>\n"
!       "        <pre class=\"gcc-annotated-source\"></pre>\n"
        "      </div>\n"
        "    </div>\n"
        "  </body>\n"
        "</html>"));
  }
  
  /* Run all of the selftests within this file.  */
  
  void
  diagnostic_format_html_cc_tests ()
  {
    test_simple_log ();
  }
  
  } // namespace selftest
--- 1010,1079 ----
        "  <body>\n"
        "    <div class=\"gcc-diagnostic-list\">\n"
        "      <div class=\"gcc-diagnostic\">\n"
!       "        <span class=\"gcc-message\">this is a test: `<span class=\"gcc-quoted-text\">foo</span>&apos;</span>\n"
        "      </div>\n"
        "    </div>\n"
        "  </body>\n"
        "</html>"));
  }
  
+ static void
+ test_metadata ()
+ {
+   test_html_diagnostic_context dc;
+   html_builder &b = dc.get_builder ();
+ 
+   {
+     diagnostic_metadata metadata;
+     metadata.add_cwe (415);
+     auto element = b.make_element_for_metadata (metadata);
+     pretty_printer pp;
+     element->write_as_xml (&pp, 0, true);
+     ASSERT_STREQ
+       (pp_formatted_text (&pp),
+        "\n"
+        "<span class=\"gcc-metadata\">"
+        "<span class=\"gcc-metadata-item\">"
+        "["
+        "<a href=\"https://cwe.mitre.org/data/definitions/415.html\">"
+        "CWE-415"
+        "</a>"
+        "]"
+        "</span>"
+        "</span>");
+   }
+ 
+   {
+     diagnostic_metadata metadata;
+     diagnostic_metadata::precanned_rule rule ("MISC-42",
+ 					      "http://example.com");
+     metadata.add_rule (rule);
+     auto element = b.make_element_for_metadata (metadata);
+     pretty_printer pp;
+     element->write_as_xml (&pp, 0, true);
+     ASSERT_STREQ
+       (pp_formatted_text (&pp),
+        "\n"
+        "<span class=\"gcc-metadata\">"
+        "<span class=\"gcc-metadata-item\">"
+        "["
+        "<a href=\"http://example.com\">"
+        "MISC-42"
+        "</a>"
+        "]"
+        "</span>"
+        "</span>");
+   }
+ }
+ 
  /* Run all of the selftests within this file.  */
  
  void
  diagnostic_format_html_cc_tests ()
  {
+   auto_fix_quotes fix_quotes;
    test_simple_log ();
+   test_metadata ();
  }
  
  } // namespace selftest
diff -Nrcpad gcc-16-20250511/gcc/doc/extend.texi gcc-16-20250518/gcc/doc/extend.texi
*** gcc-16-20250511/gcc/doc/extend.texi	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/doc/extend.texi	Sun May 18 22:32:07 2025
*************** a function call results in a compile-tim
*** 14374,14379 ****
--- 14374,14382 ----
  @findex acoshf
  @findex acoshl
  @findex acosl
+ @findex acospi
+ @findex acospif
+ @findex acospil
  @findex alloca
  @findex asin
  @findex asinf
*************** a function call results in a compile-tim
*** 14381,14395 ****
--- 14384,14407 ----
  @findex asinhf
  @findex asinhl
  @findex asinl
+ @findex asinpi
+ @findex asinpif
+ @findex asinpil
  @findex atan
  @findex atan2
  @findex atan2f
  @findex atan2l
+ @findex atan2pi
+ @findex atan2pif
+ @findex atan2pil
  @findex atanf
  @findex atanh
  @findex atanhf
  @findex atanhl
  @findex atanl
+ @findex atanpi
+ @findex atanpif
+ @findex atanpil
  @findex bcmp
  @findex bzero
  @findex cabs
*************** a function call results in a compile-tim
*** 14453,14458 ****
--- 14465,14473 ----
  @findex coshf
  @findex coshl
  @findex cosl
+ @findex cospi
+ @findex cospif
+ @findex cospil
  @findex cpow
  @findex cpowf
  @findex cpowl
*************** a function call results in a compile-tim
*** 14688,14693 ****
--- 14703,14711 ----
  @findex sinhf
  @findex sinhl
  @findex sinl
+ @findex sinpi
+ @findex sinpif
+ @findex sinpil
  @findex snprintf
  @findex sprintf
  @findex sqrt
*************** a function call results in a compile-tim
*** 14722,14727 ****
--- 14740,14748 ----
  @findex tanhf
  @findex tanhl
  @findex tanl
+ @findex tanpi
+ @findex tanpif
+ @findex tanpil
  @findex tgamma
  @findex tgammaf
  @findex tgammal
*************** a particular case, a call to the library
*** 14764,14770 ****
  @opindex std
  Outside strict ISO C mode (@option{-ansi}, @option{-std=c90},
  @option{-std=c99} or @option{-std=c11}), the functions
! @code{_exit}, @code{alloca}, @code{bcmp}, @code{bzero},
  @code{dcgettext}, @code{dgettext}, @code{dremf}, @code{dreml},
  @code{drem}, @code{exp10f}, @code{exp10l}, @code{exp10}, @code{ffsll},
  @code{ffsl}, @code{ffs}, @code{fprintf_unlocked},
--- 14785,14794 ----
  @opindex std
  Outside strict ISO C mode (@option{-ansi}, @option{-std=c90},
  @option{-std=c99} or @option{-std=c11}), the functions
! @code{_exit}, @code{alloca}, @code{acospi}, @code{acospif}, @code{acospil},
! @code{asinpi}, @code{asinpif}, @code{asinpil}, @code{atan2pi}, @code{atan2pif},
! @code{atan2pil}, @code{atanpi}, @code{atanpif}, @code{atanpil}, @code{bcmp},
! @code{bzero}, @code{cospi}, @code{cospif}, @code{cospil},
  @code{dcgettext}, @code{dgettext}, @code{dremf}, @code{dreml},
  @code{drem}, @code{exp10f}, @code{exp10l}, @code{exp10}, @code{ffsll},
  @code{ffsl}, @code{ffs}, @code{fprintf_unlocked},
*************** Outside strict ISO C mode (@option{-ansi
*** 14779,14789 ****
  @code{signbit}, @code{signbitf}, @code{signbitl}, @code{signbitd32},
  @code{signbitd64}, @code{signbitd128}, @code{significandf},
  @code{significandl}, @code{significand}, @code{sincosf},
! @code{sincosl}, @code{sincos}, @code{stpcpy}, @code{stpncpy},
! @code{strcasecmp}, @code{strdup}, @code{strfmon}, @code{strncasecmp},
! @code{strndup}, @code{strnlen}, @code{toascii}, @code{y0f}, @code{y0l},
! @code{y0}, @code{y1f}, @code{y1l}, @code{y1}, @code{ynf}, @code{ynl} and
! @code{yn}
  may be handled as built-in functions.
  All these functions have corresponding versions
  prefixed with @code{__builtin_}, which may be used even in strict C90
--- 14803,14814 ----
  @code{signbit}, @code{signbitf}, @code{signbitl}, @code{signbitd32},
  @code{signbitd64}, @code{signbitd128}, @code{significandf},
  @code{significandl}, @code{significand}, @code{sincosf},
! @code{sincosl}, @code{sincos}, @code{sinpif}, @code{sinpil}, @code{sinpi},
! @code{stpcpy}, @code{stpncpy}, @code{strcasecmp}, @code{strdup},
! @code{strfmon}, @code{strncasecmp}, @code{strndup}, @code{strnlen},
! @code{tanpif}, @code{tanpil}, @code{tanpi}, @code{toascii}, @code{y0f},
! @code{y0l}, @code{y0}, @code{y1f}, @code{y1l}, @code{y1}, @code{ynf},
! @code{ynl} and @code{yn}
  may be handled as built-in functions.
  All these functions have corresponding versions
  prefixed with @code{__builtin_}, which may be used even in strict C90
*************** instructions, but allow the compiler to
*** 17905,17911 ****
  * Alpha Built-in Functions::
  * ARC Built-in Functions::
  * ARC SIMD Built-in Functions::
- * ARM iWMMXt Built-in Functions::
  * ARM C Language Extensions (ACLE)::
  * ARM Floating Point Status and Control Intrinsics::
  * ARM ARMv8-M Security Extensions::
--- 17930,17935 ----
*************** _v4hi __builtin_arc_vaddsub4h (__v4hi, _
*** 18521,18680 ****
  _v4hi __builtin_arc_vsubadd4h (__v4hi, __v4hi);
  @end example
  
- @node ARM iWMMXt Built-in Functions
- @subsection ARM iWMMXt Built-in Functions
- 
- These built-in functions are available for the ARM family of
- processors when the @option{-mcpu=iwmmxt} switch is used:
- 
- @smallexample
- typedef int v2si __attribute__ ((vector_size (8)));
- typedef short v4hi __attribute__ ((vector_size (8)));
- typedef char v8qi __attribute__ ((vector_size (8)));
- 
- int __builtin_arm_getwcgr0 (void);
- void __builtin_arm_setwcgr0 (int);
- int __builtin_arm_getwcgr1 (void);
- void __builtin_arm_setwcgr1 (int);
- int __builtin_arm_getwcgr2 (void);
- void __builtin_arm_setwcgr2 (int);
- int __builtin_arm_getwcgr3 (void);
- void __builtin_arm_setwcgr3 (int);
- int __builtin_arm_textrmsb (v8qi, int);
- int __builtin_arm_textrmsh (v4hi, int);
- int __builtin_arm_textrmsw (v2si, int);
- int __builtin_arm_textrmub (v8qi, int);
- int __builtin_arm_textrmuh (v4hi, int);
- int __builtin_arm_textrmuw (v2si, int);
- v8qi __builtin_arm_tinsrb (v8qi, int, int);
- v4hi __builtin_arm_tinsrh (v4hi, int, int);
- v2si __builtin_arm_tinsrw (v2si, int, int);
- long long __builtin_arm_tmia (long long, int, int);
- long long __builtin_arm_tmiabb (long long, int, int);
- long long __builtin_arm_tmiabt (long long, int, int);
- long long __builtin_arm_tmiaph (long long, int, int);
- long long __builtin_arm_tmiatb (long long, int, int);
- long long __builtin_arm_tmiatt (long long, int, int);
- int __builtin_arm_tmovmskb (v8qi);
- int __builtin_arm_tmovmskh (v4hi);
- int __builtin_arm_tmovmskw (v2si);
- long long __builtin_arm_waccb (v8qi);
- long long __builtin_arm_wacch (v4hi);
- long long __builtin_arm_waccw (v2si);
- v8qi __builtin_arm_waddb (v8qi, v8qi);
- v8qi __builtin_arm_waddbss (v8qi, v8qi);
- v8qi __builtin_arm_waddbus (v8qi, v8qi);
- v4hi __builtin_arm_waddh (v4hi, v4hi);
- v4hi __builtin_arm_waddhss (v4hi, v4hi);
- v4hi __builtin_arm_waddhus (v4hi, v4hi);
- v2si __builtin_arm_waddw (v2si, v2si);
- v2si __builtin_arm_waddwss (v2si, v2si);
- v2si __builtin_arm_waddwus (v2si, v2si);
- v8qi __builtin_arm_walign (v8qi, v8qi, int);
- long long __builtin_arm_wand(long long, long long);
- long long __builtin_arm_wandn (long long, long long);
- v8qi __builtin_arm_wavg2b (v8qi, v8qi);
- v8qi __builtin_arm_wavg2br (v8qi, v8qi);
- v4hi __builtin_arm_wavg2h (v4hi, v4hi);
- v4hi __builtin_arm_wavg2hr (v4hi, v4hi);
- v8qi __builtin_arm_wcmpeqb (v8qi, v8qi);
- v4hi __builtin_arm_wcmpeqh (v4hi, v4hi);
- v2si __builtin_arm_wcmpeqw (v2si, v2si);
- v8qi __builtin_arm_wcmpgtsb (v8qi, v8qi);
- v4hi __builtin_arm_wcmpgtsh (v4hi, v4hi);
- v2si __builtin_arm_wcmpgtsw (v2si, v2si);
- v8qi __builtin_arm_wcmpgtub (v8qi, v8qi);
- v4hi __builtin_arm_wcmpgtuh (v4hi, v4hi);
- v2si __builtin_arm_wcmpgtuw (v2si, v2si);
- long long __builtin_arm_wmacs (long long, v4hi, v4hi);
- long long __builtin_arm_wmacsz (v4hi, v4hi);
- long long __builtin_arm_wmacu (long long, v4hi, v4hi);
- long long __builtin_arm_wmacuz (v4hi, v4hi);
- v4hi __builtin_arm_wmadds (v4hi, v4hi);
- v4hi __builtin_arm_wmaddu (v4hi, v4hi);
- v8qi __builtin_arm_wmaxsb (v8qi, v8qi);
- v4hi __builtin_arm_wmaxsh (v4hi, v4hi);
- v2si __builtin_arm_wmaxsw (v2si, v2si);
- v8qi __builtin_arm_wmaxub (v8qi, v8qi);
- v4hi __builtin_arm_wmaxuh (v4hi, v4hi);
- v2si __builtin_arm_wmaxuw (v2si, v2si);
- v8qi __builtin_arm_wminsb (v8qi, v8qi);
- v4hi __builtin_arm_wminsh (v4hi, v4hi);
- v2si __builtin_arm_wminsw (v2si, v2si);
- v8qi __builtin_arm_wminub (v8qi, v8qi);
- v4hi __builtin_arm_wminuh (v4hi, v4hi);
- v2si __builtin_arm_wminuw (v2si, v2si);
- v4hi __builtin_arm_wmulsm (v4hi, v4hi);
- v4hi __builtin_arm_wmulul (v4hi, v4hi);
- v4hi __builtin_arm_wmulum (v4hi, v4hi);
- long long __builtin_arm_wor (long long, long long);
- v2si __builtin_arm_wpackdss (long long, long long);
- v2si __builtin_arm_wpackdus (long long, long long);
- v8qi __builtin_arm_wpackhss (v4hi, v4hi);
- v8qi __builtin_arm_wpackhus (v4hi, v4hi);
- v4hi __builtin_arm_wpackwss (v2si, v2si);
- v4hi __builtin_arm_wpackwus (v2si, v2si);
- long long __builtin_arm_wrord (long long, long long);
- long long __builtin_arm_wrordi (long long, int);
- v4hi __builtin_arm_wrorh (v4hi, long long);
- v4hi __builtin_arm_wrorhi (v4hi, int);
- v2si __builtin_arm_wrorw (v2si, long long);
- v2si __builtin_arm_wrorwi (v2si, int);
- v2si __builtin_arm_wsadb (v2si, v8qi, v8qi);
- v2si __builtin_arm_wsadbz (v8qi, v8qi);
- v2si __builtin_arm_wsadh (v2si, v4hi, v4hi);
- v2si __builtin_arm_wsadhz (v4hi, v4hi);
- v4hi __builtin_arm_wshufh (v4hi, int);
- long long __builtin_arm_wslld (long long, long long);
- long long __builtin_arm_wslldi (long long, int);
- v4hi __builtin_arm_wsllh (v4hi, long long);
- v4hi __builtin_arm_wsllhi (v4hi, int);
- v2si __builtin_arm_wsllw (v2si, long long);
- v2si __builtin_arm_wsllwi (v2si, int);
- long long __builtin_arm_wsrad (long long, long long);
- long long __builtin_arm_wsradi (long long, int);
- v4hi __builtin_arm_wsrah (v4hi, long long);
- v4hi __builtin_arm_wsrahi (v4hi, int);
- v2si __builtin_arm_wsraw (v2si, long long);
- v2si __builtin_arm_wsrawi (v2si, int);
- long long __builtin_arm_wsrld (long long, long long);
- long long __builtin_arm_wsrldi (long long, int);
- v4hi __builtin_arm_wsrlh (v4hi, long long);
- v4hi __builtin_arm_wsrlhi (v4hi, int);
- v2si __builtin_arm_wsrlw (v2si, long long);
- v2si __builtin_arm_wsrlwi (v2si, int);
- v8qi __builtin_arm_wsubb (v8qi, v8qi);
- v8qi __builtin_arm_wsubbss (v8qi, v8qi);
- v8qi __builtin_arm_wsubbus (v8qi, v8qi);
- v4hi __builtin_arm_wsubh (v4hi, v4hi);
- v4hi __builtin_arm_wsubhss (v4hi, v4hi);
- v4hi __builtin_arm_wsubhus (v4hi, v4hi);
- v2si __builtin_arm_wsubw (v2si, v2si);
- v2si __builtin_arm_wsubwss (v2si, v2si);
- v2si __builtin_arm_wsubwus (v2si, v2si);
- v4hi __builtin_arm_wunpckehsb (v8qi);
- v2si __builtin_arm_wunpckehsh (v4hi);
- long long __builtin_arm_wunpckehsw (v2si);
- v4hi __builtin_arm_wunpckehub (v8qi);
- v2si __builtin_arm_wunpckehuh (v4hi);
- long long __builtin_arm_wunpckehuw (v2si);
- v4hi __builtin_arm_wunpckelsb (v8qi);
- v2si __builtin_arm_wunpckelsh (v4hi);
- long long __builtin_arm_wunpckelsw (v2si);
- v4hi __builtin_arm_wunpckelub (v8qi);
- v2si __builtin_arm_wunpckeluh (v4hi);
- long long __builtin_arm_wunpckeluw (v2si);
- v8qi __builtin_arm_wunpckihb (v8qi, v8qi);
- v4hi __builtin_arm_wunpckihh (v4hi, v4hi);
- v2si __builtin_arm_wunpckihw (v2si, v2si);
- v8qi __builtin_arm_wunpckilb (v8qi, v8qi);
- v4hi __builtin_arm_wunpckilh (v4hi, v4hi);
- v2si __builtin_arm_wunpckilw (v2si, v2si);
- long long __builtin_arm_wxor (long long, long long);
- long long __builtin_arm_wzero ();
- @end smallexample
- 
- 
  @node ARM C Language Extensions (ACLE)
  @subsection ARM C Language Extensions (ACLE)
  
--- 18545,18550 ----
diff -Nrcpad gcc-16-20250511/gcc/doc/gm2.texi gcc-16-20250518/gcc/doc/gm2.texi
*** gcc-16-20250511/gcc/doc/gm2.texi	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/doc/gm2.texi	Sun May 18 22:32:07 2025
*************** from @samp{bad} will cause an overflow t
*** 1495,1501 ****
  the code with the following options:
  
  @example
! $ gm2 -g -fsoft-check-all -O2 -c assignvalue.mod
  assignvalue.mod:16:0:inevitable that this error will occur at run time,
  assignment will result in an overflow
  @end example
--- 1495,1501 ----
  the code with the following options:
  
  @example
! $ gm2 -g -fsoft-check-all -O2 -fm2-plugin -c assignvalue.mod
  assignvalue.mod:16:0:inevitable that this error will occur at run time,
  assignment will result in an overflow
  @end example
diff -Nrcpad gcc-16-20250511/gcc/doc/invoke.texi gcc-16-20250518/gcc/doc/invoke.texi
*** gcc-16-20250511/gcc/doc/invoke.texi	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/doc/invoke.texi	Sun May 18 22:32:07 2025
*************** aliases, the default is @option{-fno-ext
*** 3348,3354 ****
  @item -ffold-simple-inlines
  @itemx -fno-fold-simple-inlines
  Permit the C++ frontend to fold calls to @code{std::move}, @code{std::forward},
! @code{std::addressof} and @code{std::as_const}.  In contrast to inlining, this
  means no debug information will be generated for such calls.  Since these
  functions are rarely interesting to debug, this flag is enabled by default
  unless @option{-fno-inline} is active.
--- 3348,3355 ----
  @item -ffold-simple-inlines
  @itemx -fno-fold-simple-inlines
  Permit the C++ frontend to fold calls to @code{std::move}, @code{std::forward},
! @code{std::addressof}, @code{std::to_underlying}
! and @code{std::as_const}.  In contrast to inlining, this
  means no debug information will be generated for such calls.  Since these
  functions are rarely interesting to debug, this flag is enabled by default
  unless @option{-fno-inline} is active.
*************** These @samp{-m} options are defined for
*** 23520,23526 ****
  @opindex mabi
  @item -mabi=@var{name}
  Generate code for the specified ABI@.  Permissible values are: @samp{apcs-gnu},
! @samp{atpcs}, @samp{aapcs}, @samp{aapcs-linux} and @samp{iwmmxt}.
  
  @opindex mapcs-frame
  @item -mapcs-frame
--- 23521,23527 ----
  @opindex mabi
  @item -mabi=@var{name}
  Generate code for the specified ABI@.  Permissible values are: @samp{apcs-gnu},
! @samp{atpcs}, @samp{aapcs} and @samp{aapcs-linux}.
  
  @opindex mapcs-frame
  @item -mapcs-frame
*************** Generate code for the specified PTX ISA
*** 30698,30703 ****
--- 30699,30705 ----
  Valid architecture strings are
  @samp{sm_30}, @samp{sm_35}, @samp{sm_37},
  @samp{sm_52}, @samp{sm_53},
+ @samp{sm_61},
  @samp{sm_70}, @samp{sm_75},
  @samp{sm_80}, and @samp{sm_89}.
  The default depends on how the compiler has been configured, see
*************** Generate code for the specified PTX ISA
*** 30724,30729 ****
--- 30726,30732 ----
  Valid version strings are
  @samp{3.1},
  @samp{4.1}, @samp{4.2},
+ @samp{5.0},
  @samp{6.0}, @samp{6.3},
  @samp{7.0}, @samp{7.3}, and @samp{7.8}.
  The default PTX ISA version is the one that added support for the
*************** syntax @samp{<major>p<minor>} or @samp{<
*** 31143,31643 ****
  @end table
  
  Supported extension are listed below:
- @multitable @columnfractions .10 .10 .80
- @headitem Extension Name @tab Supported Version @tab Description
- @item i
- @tab 2.0, 2.1
- @tab Base integer extension.
- 
- @item e
- @tab 2.0
- @tab Reduced base integer extension.
- 
- @item g
- @tab -
- @tab General-purpose computing base extension, @samp{g} will expand to
- @samp{i}, @samp{m}, @samp{a}, @samp{f}, @samp{d}, @samp{zicsr} and
- @samp{zifencei}.
- 
- @item m
- @tab 2.0
- @tab Integer multiplication and division extension.
- 
- @item a
- @tab 2.0, 2.1
- @tab Atomic extension.
- 
- @item f
- @tab 2.0, 2.2
- @tab Single-precision floating-point extension.
- 
- @item d
- @tab 2.0, 2.2
- @tab Double-precision floating-point extension.
- 
- @item c
- @tab 2.0
- @tab Compressed extension.
- 
- @item h
- @tab 1.0
- @tab Hypervisor extension.
- 
- @item v
- @tab 1.0
- @tab Vector extension.
- 
- @item zicsr
- @tab 2.0
- @tab Control and status register access extension.
- 
- @item zifencei
- @tab 2.0
- @tab Instruction-fetch fence extension.
- 
- @item zicond
- @tab 1.0
- @tab Integer conditional operations extension.
- 
- @item za64rs
- @tab 1.0
- @tab Reservation set size of 64 bytes.
- 
- @item za128rs
- @tab 1.0
- @tab Reservation set size of 128 bytes.
- 
- @item zawrs
- @tab 1.0
- @tab Wait-on-reservation-set extension.
- 
- @item zba
- @tab 1.0
- @tab Address calculation extension.
- 
- @item zbb
- @tab 1.0
- @tab Basic bit manipulation extension.
- 
- @item zbc
- @tab 1.0
- @tab Carry-less multiplication extension.
- 
- @item zbs
- @tab 1.0
- @tab Single-bit operation extension.
- 
- @item zfinx
- @tab 1.0
- @tab Single-precision floating-point in integer registers extension.
- 
- @item zdinx
- @tab 1.0
- @tab Double-precision floating-point in integer registers extension.
- 
- @item zhinx
- @tab 1.0
- @tab Half-precision floating-point in integer registers extension.
- 
- @item zhinxmin
- @tab 1.0
- @tab Minimal half-precision floating-point in integer registers extension.
- 
- @item zbkb
- @tab 1.0
- @tab Cryptography bit-manipulation extension.
- 
- @item zbkc
- @tab 1.0
- @tab Cryptography carry-less multiply extension.
- 
- @item zbkx
- @tab 1.0
- @tab Cryptography crossbar permutation extension.
- 
- @item zkne
- @tab 1.0
- @tab AES Encryption extension.
- 
- @item zknd
- @tab 1.0
- @tab AES Decryption extension.
- 
- @item zknh
- @tab 1.0
- @tab Hash function extension.
- 
- @item zkr
- @tab 1.0
- @tab Entropy source extension.
- 
- @item zksed
- @tab 1.0
- @tab SM4 block cipher extension.
- 
- @item zksh
- @tab 1.0
- @tab SM3 hash function extension.
- 
- @item zkt
- @tab 1.0
- @tab Data independent execution latency extension.
- 
- @item zk
- @tab 1.0
- @tab Standard scalar cryptography extension.
- 
- @item zkn
- @tab 1.0
- @tab NIST algorithm suite extension.
- 
- @item zks
- @tab 1.0
- @tab ShangMi algorithm suite extension.
- 
- @item zihintntl
- @tab 1.0
- @tab Non-temporal locality hints extension.
- 
- @item zihintpause
- @tab 1.0
- @tab Pause hint extension.
- 
- @item zicboz
- @tab 1.0
- @tab Cache-block zero extension.
- 
- @item zicbom
- @tab 1.0
- @tab Cache-block management extension.
- 
- @item zicbop
- @tab 1.0
- @tab Cache-block prefetch extension.
- 
- @item zic64b
- @tab 1.0
- @tab Cache block size isf 64 bytes.
- 
- @item ziccamoa
- @tab 1.0
- @tab Main memory supports all atomics in A.
- 
- @item ziccif
- @tab 1.0
- @tab Main memory supports instruction fetch with atomicity requirement.
- 
- @item zicclsm
- @tab 1.0
- @tab Main memory supports misaligned loads/stores.
- 
- @item ziccrse
- @tab 1.0
- @tab Main memory supports forward progress on LR/SC sequences.
- 
- @item zicntr
- @tab 2.0
- @tab Standard extension for base counters and timers.
- 
- @item zihpm
- @tab 2.0
- @tab Standard extension for hardware performance counters.
- 
- @item ztso
- @tab 1.0
- @tab Total store ordering extension.
- 
- @item zve32x
- @tab 1.0
- @tab Vector extensions for embedded processors.
- 
- @item zve32f
- @tab 1.0
- @tab Vector extensions for embedded processors.
- 
- @item zve64x
- @tab 1.0
- @tab Vector extensions for embedded processors.
- 
- @item zve64f
- @tab 1.0
- @tab Vector extensions for embedded processors.
- 
- @item zve64d
- @tab 1.0
- @tab Vector extensions for embedded processors.
- 
- @item zvl32b
- @tab 1.0
- @tab Minimum vector length standard extensions
- 
- @item zvl64b
- @tab 1.0
- @tab Minimum vector length standard extensions
- 
- @item zvl128b
- @tab 1.0
- @tab Minimum vector length standard extensions
- 
- @item zvl256b
- @tab 1.0
- @tab Minimum vector length standard extensions
- 
- @item zvl512b
- @tab 1.0
- @tab Minimum vector length standard extensions
- 
- @item zvl1024b
- @tab 1.0
- @tab Minimum vector length standard extensions
- 
- @item zvl2048b
- @tab 1.0
- @tab Minimum vector length standard extensions
- 
- @item zvl4096b
- @tab 1.0
- @tab Minimum vector length standard extensions
- 
- @item zvbb
- @tab 1.0
- @tab Vector basic bit-manipulation extension.
- 
- @item zvbc
- @tab 1.0
- @tab Vector carryless multiplication extension.
- 
- @item zvkb
- @tab 1.0
- @tab Vector cryptography bit-manipulation extension.
- 
- @item zvkg
- @tab 1.0
- @tab Vector GCM/GMAC extension.
- 
- @item zvkned
- @tab 1.0
- @tab Vector AES block cipher extension.
- 
- @item zvknha
- @tab 1.0
- @tab Vector SHA-2 secure hash extension.
- 
- @item zvknhb
- @tab 1.0
- @tab Vector SHA-2 secure hash extension.
- 
- @item zvksed
- @tab 1.0
- @tab Vector SM4 Block Cipher extension.
- 
- @item zvksh
- @tab 1.0
- @tab Vector SM3 Secure Hash extension.
- 
- @item zvkn
- @tab 1.0
- @tab Vector NIST Algorithm Suite extension, @samp{zvkn} will expand to
- @samp{zvkned}, @samp{zvknhb}, @samp{zvkb} and @samp{zvkt}.
- 
- @item zvknc
- @tab 1.0
- @tab Vector NIST Algorithm Suite with carryless multiply extension, @samp{zvknc}
- will expand to @samp{zvkn} and @samp{zvbc}.
- 
- @item zvkng
- @tab 1.0
- @tab Vector NIST Algorithm Suite with GCM extension, @samp{zvkng} will expand
- to @samp{zvkn} and @samp{zvkg}.
- 
- @item zvks
- @tab 1.0
- @tab Vector ShangMi algorithm suite extension, @samp{zvks} will expand
- to @samp{zvksed}, @samp{zvksh}, @samp{zvkb} and @samp{zvkt}.
- 
- @item zvksc
- @tab 1.0
- @tab Vector ShangMi algorithm suite with carryless multiplication extension,
- @samp{zvksc} will expand to @samp{zvks} and @samp{zvbc}.
- 
- @item zvksg
- @tab 1.0
- @tab Vector ShangMi algorithm suite with GCM extension, @samp{zvksg} will expand
- to @samp{zvks} and @samp{zvkg}.
- 
- @item zvkt
- @tab 1.0
- @tab Vector data independent execution latency extension.
- 
- @item zfh
- @tab 1.0
- @tab Half-precision floating-point extension.
- 
- @item zfhmin
- @tab 1.0
- @tab Minimal half-precision floating-point extension.
- 
- @item zvfh
- @tab 1.0
- @tab Vector half-precision floating-point extension.
  
! @item zvfhmin
! @tab 1.0
! @tab Vector minimal half-precision floating-point extension.
! 
! @item zvfbfmin
! @tab 1.0
! @tab Vector BF16 converts extension.
! 
! @item zfa
! @tab 1.0
! @tab Additional floating-point extension.
! 
! @item zmmul
! @tab 1.0
! @tab Integer multiplication extension.
! 
! @item zca
! @tab 1.0
! @tab Integer compressed instruction extension.
! 
! @item zcf
! @tab 1.0
! @tab Compressed single-precision floating point loads and stores extension.
! 
! @item zcd
! @tab 1.0
! @tab Compressed double-precision floating point loads and stores extension.
! 
! @item zcb
! @tab 1.0
! @tab Simple compressed instruction extension.
! 
! @item zce
! @tab 1.0
! @tab Compressed instruction extensions for embedded processors.
! 
! @item zcmp
! @tab 1.0
! @tab Compressed push pop extension.
! 
! @item zcmt
! @tab 1.0
! @tab Table jump instruction extension.
! 
! @item smaia
! @tab 1.0
! @tab Advanced interrupt architecture extension.
! 
! @item smepmp
! @tab 1.0
! @tab PMP Enhancements for memory access and execution prevention on Machine mode.
! 
! @item smstateen
! @tab 1.0
! @tab State enable extension.
! 
! @item ssaia
! @tab 1.0
! @tab Advanced interrupt architecture extension for supervisor-mode.
! 
! @item sscofpmf
! @tab 1.0
! @tab Count overflow & filtering extension.
! 
! @item ssstateen
! @tab 1.0
! @tab State-enable extension for supervisor-mode.
! 
! @item sstc
! @tab 1.0
! @tab Supervisor-mode timer interrupts extension.
! 
! @item svade
! @tab 1.0
! @tab Cause exception when hardware updating of A/D bits is disabled
! 
! @item svadu
! @tab 1.0
! @tab Hardware Updating of A/D Bits extension.
! 
! @item svinval
! @tab 1.0
! @tab Fine-grained address-translation cache invalidation extension.
! 
! @item svnapot
! @tab 1.0
! @tab NAPOT translation contiguity extension.
! 
! @item svpbmt
! @tab 1.0
! @tab Page-based memory types extension.
! 
! @item xcvmac
! @tab 1.0
! @tab Core-V multiply-accumulate extension.
! 
! @item xcvalu
! @tab 1.0
! @tab Core-V miscellaneous ALU extension.
! 
! @item xcvelw
! @tab 1.0
! @tab Core-V event load word extension.
! 
! @item xtheadba
! @tab 1.0
! @tab T-head address calculation extension.
! 
! @item xtheadbb
! @tab 1.0
! @tab T-head basic bit-manipulation extension.
! 
! @item xtheadbs
! @tab 1.0
! @tab T-head single-bit instructions extension.
! 
! @item xtheadcmo
! @tab 1.0
! @tab T-head cache management operations extension.
! 
! @item xtheadcondmov
! @tab 1.0
! @tab T-head conditional move extension.
! 
! @item xtheadfmemidx
! @tab 1.0
! @tab T-head indexed memory operations for floating-point registers extension.
! 
! @item xtheadfmv
! @tab 1.0
! @tab T-head double floating-point high-bit data transmission extension.
! 
! @item xtheadint
! @tab 1.0
! @tab T-head acceleration interruption extension.
! 
! @item xtheadmac
! @tab 1.0
! @tab T-head multiply-accumulate extension.
! 
! @item xtheadmemidx
! @tab 1.0
! @tab T-head indexed memory operation extension.
! 
! @item xtheadmempair
! @tab 1.0
! @tab T-head two-GPR memory operation extension.
! 
! @item xtheadsync
! @tab 1.0
! @tab T-head multi-core synchronization extension.
! 
! @item xventanacondops
! @tab 1.0
! @tab Ventana integer conditional operations extension.
! 
! @end multitable
  
  When @option{-march=} is not specified, use the setting from @option{-mcpu}.
  
--- 31146,31153 ----
  @end table
  
  Supported extension are listed below:
  
! @include riscv-ext.texi
  
  When @option{-march=} is not specified, use the setting from @option{-mcpu}.
  
diff -Nrcpad gcc-16-20250511/gcc/doc/md.texi gcc-16-20250518/gcc/doc/md.texi
*** gcc-16-20250511/gcc/doc/md.texi	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/doc/md.texi	Sun May 18 22:32:07 2025
*************** VFP floating-point registers @code{d0}-@
*** 2171,2182 ****
  subset @code{d0}-@code{d15} based on command line options.
  Used for 64 bit values only.  Not valid for Thumb1.
  
- @item y
- The iWMMX co-processor registers.
- 
- @item z
- The iWMMX GR registers.
- 
  @item G
  The floating-point constant 0.0
  
--- 2171,2176 ----
*************** A symbol in the text segment of the curr
*** 2210,2218 ****
  @item Uv
  A memory reference suitable for VFP load/store insns (reg+constant offset)
  
- @item Uy
- A memory reference suitable for iWMMXt load/store instructions.
- 
  @item Uq
  A memory reference suitable for the ARMv4 ldrsb instruction.
  @end table
--- 2204,2209 ----
diff -Nrcpad gcc-16-20250511/gcc/doc/riscv-ext.texi gcc-16-20250518/gcc/doc/riscv-ext.texi
*** gcc-16-20250511/gcc/doc/riscv-ext.texi	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/doc/riscv-ext.texi	Sun May 18 22:32:07 2025
***************
*** 0 ****
--- 1,665 ----
+ @c Copyright (C) 2025 Free Software Foundation, Inc.
+ @c This is part of the GCC manual.
+ @c For copying conditions, see the file gcc/doc/include/fdl.texi.
+ 
+ @c This file is generated automatically using
+ @c  gcc/config/riscv/gen-riscv-ext-texi.cc from:
+ @c       gcc/config/riscv/riscv-ext.def
+ @c       gcc/config/riscv/riscv-opts.h
+ 
+ @c Please *DO NOT* edit manually.
+ 
+ @multitable @columnfractions .10 .10 .80
+ @headitem Extension Name @tab Supported Version @tab Description
+ 
+ @item g
+ @tab -
+ @tab General-purpose computing base extension, @samp{g} will expand to
+ @samp{i}, @samp{m}, @samp{a}, @samp{f}, @samp{d}, @samp{zicsr} and
+ @samp{zifencei}.
+ 
+ @item e
+ @tab 2.0
+ @tab Reduced base integer extension
+ 
+ @item i
+ @tab 2.0 2.1
+ @tab Base integer extension
+ 
+ @item m
+ @tab 2.0
+ @tab Integer multiplication and division extension
+ 
+ @item a
+ @tab 2.0 2.1
+ @tab Atomic extension
+ 
+ @item f
+ @tab 2.0 2.2
+ @tab Single-precision floating-point extension
+ 
+ @item d
+ @tab 2.0 2.2
+ @tab Double-precision floating-point extension
+ 
+ @item c
+ @tab 2.0
+ @tab Compressed extension
+ 
+ @item b
+ @tab 1.0
+ @tab b extension
+ 
+ @item v
+ @tab 1.0
+ @tab Vector extension
+ 
+ @item h
+ @tab 1.0
+ @tab Hypervisor extension
+ 
+ @item zic64b
+ @tab 1.0
+ @tab Cache block size isf 64 bytes
+ 
+ @item zicbom
+ @tab 1.0
+ @tab Cache-block management extension
+ 
+ @item zicbop
+ @tab 1.0
+ @tab Cache-block prefetch extension
+ 
+ @item zicboz
+ @tab 1.0
+ @tab Cache-block zero extension
+ 
+ @item ziccamoa
+ @tab 1.0
+ @tab Main memory supports all atomics in A
+ 
+ @item ziccif
+ @tab 1.0
+ @tab Main memory supports instruction fetch with atomicity requirement
+ 
+ @item zicclsm
+ @tab 1.0
+ @tab Main memory supports misaligned loads/stores
+ 
+ @item ziccrse
+ @tab 1.0
+ @tab Main memory supports forward progress on LR/SC sequences
+ 
+ @item zicfilp
+ @tab 1.0
+ @tab zicfilp extension
+ 
+ @item zicfiss
+ @tab 1.0
+ @tab zicfiss extension
+ 
+ @item zicntr
+ @tab 2.0
+ @tab Standard extension for base counters and timers
+ 
+ @item zicond
+ @tab 1.0
+ @tab Integer conditional operations extension
+ 
+ @item zicsr
+ @tab 2.0
+ @tab Control and status register access extension
+ 
+ @item zifencei
+ @tab 2.0
+ @tab Instruction-fetch fence extension
+ 
+ @item zihintntl
+ @tab 1.0
+ @tab Non-temporal locality hints extension
+ 
+ @item zihintpause
+ @tab 2.0
+ @tab Pause hint extension
+ 
+ @item zihpm
+ @tab 2.0
+ @tab Standard extension for hardware performance counters
+ 
+ @item zimop
+ @tab 1.0
+ @tab zimop extension
+ 
+ @item zilsd
+ @tab 1.0
+ @tab Load/Store pair instructions extension
+ 
+ @item zmmul
+ @tab 1.0
+ @tab Integer multiplication extension
+ 
+ @item za128rs
+ @tab 1.0
+ @tab Reservation set size of 128 bytes
+ 
+ @item za64rs
+ @tab 1.0
+ @tab Reservation set size of 64 bytes
+ 
+ @item zaamo
+ @tab 1.0
+ @tab zaamo extension
+ 
+ @item zabha
+ @tab 1.0
+ @tab zabha extension
+ 
+ @item zacas
+ @tab 1.0
+ @tab zacas extension
+ 
+ @item zalrsc
+ @tab 1.0
+ @tab zalrsc extension
+ 
+ @item zawrs
+ @tab 1.0
+ @tab Wait-on-reservation-set extension
+ 
+ @item zama16b
+ @tab 1.0
+ @tab Zama16b extension, Misaligned loads, stores, and AMOs to main memory regions that do not cross a naturally aligned 16-byte boundary are atomic.
+ 
+ @item zfa
+ @tab 1.0
+ @tab Additional floating-point extension
+ 
+ @item zfbfmin
+ @tab 1.0
+ @tab zfbfmin extension
+ 
+ @item zfh
+ @tab 1.0
+ @tab Half-precision floating-point extension
+ 
+ @item zfhmin
+ @tab 1.0
+ @tab Minimal half-precision floating-point extension
+ 
+ @item zfinx
+ @tab 1.0
+ @tab Single-precision floating-point in integer registers extension
+ 
+ @item zdinx
+ @tab 1.0
+ @tab Double-precision floating-point in integer registers extension
+ 
+ @item zca
+ @tab 1.0
+ @tab Integer compressed instruction extension
+ 
+ @item zcb
+ @tab 1.0
+ @tab Simple compressed instruction extension
+ 
+ @item zcd
+ @tab 1.0
+ @tab Compressed double-precision floating point loads and stores extension
+ 
+ @item zce
+ @tab 1.0
+ @tab Compressed instruction extensions for embedded processors
+ 
+ @item zcf
+ @tab 1.0
+ @tab Compressed single-precision floating point loads and stores extension
+ 
+ @item zcmop
+ @tab 1.0
+ @tab zcmop extension
+ 
+ @item zcmp
+ @tab 1.0
+ @tab Compressed push pop extension
+ 
+ @item zcmt
+ @tab 1.0
+ @tab Table jump instruction extension
+ 
+ @item zclsd
+ @tab 1.0
+ @tab Compressed load/store pair instructions extension
+ 
+ @item zba
+ @tab 1.0
+ @tab Address calculation extension
+ 
+ @item zbb
+ @tab 1.0
+ @tab Basic bit manipulation extension
+ 
+ @item zbc
+ @tab 1.0
+ @tab Carry-less multiplication extension
+ 
+ @item zbkb
+ @tab 1.0
+ @tab Cryptography bit-manipulation extension
+ 
+ @item zbkc
+ @tab 1.0
+ @tab Cryptography carry-less multiply extension
+ 
+ @item zbkx
+ @tab 1.0
+ @tab Cryptography crossbar permutation extension
+ 
+ @item zbs
+ @tab 1.0
+ @tab Single-bit operation extension
+ 
+ @item zk
+ @tab 1.0
+ @tab Standard scalar cryptography extension
+ 
+ @item zkn
+ @tab 1.0
+ @tab NIST algorithm suite extension
+ 
+ @item zknd
+ @tab 1.0
+ @tab AES Decryption extension
+ 
+ @item zkne
+ @tab 1.0
+ @tab AES Encryption extension
+ 
+ @item zknh
+ @tab 1.0
+ @tab Hash function extension
+ 
+ @item zkr
+ @tab 1.0
+ @tab Entropy source extension
+ 
+ @item zks
+ @tab 1.0
+ @tab ShangMi algorithm suite extension
+ 
+ @item zksed
+ @tab 1.0
+ @tab SM4 block cipher extension
+ 
+ @item zksh
+ @tab 1.0
+ @tab SM3 hash function extension
+ 
+ @item zkt
+ @tab 1.0
+ @tab Data independent execution latency extension
+ 
+ @item ztso
+ @tab 1.0
+ @tab Total store ordering extension
+ 
+ @item zvbb
+ @tab 1.0
+ @tab Vector basic bit-manipulation extension
+ 
+ @item zvbc
+ @tab 1.0
+ @tab Vector carryless multiplication extension
+ 
+ @item zve32f
+ @tab 1.0
+ @tab Vector extensions for embedded processors
+ 
+ @item zve32x
+ @tab 1.0
+ @tab Vector extensions for embedded processors
+ 
+ @item zve64d
+ @tab 1.0
+ @tab Vector extensions for embedded processors
+ 
+ @item zve64f
+ @tab 1.0
+ @tab Vector extensions for embedded processors
+ 
+ @item zve64x
+ @tab 1.0
+ @tab Vector extensions for embedded processors
+ 
+ @item zvfbfmin
+ @tab 1.0
+ @tab Vector BF16 converts extension
+ 
+ @item zvfbfwma
+ @tab 1.0
+ @tab zvfbfwma extension
+ 
+ @item zvfh
+ @tab 1.0
+ @tab Vector half-precision floating-point extension
+ 
+ @item zvfhmin
+ @tab 1.0
+ @tab Vector minimal half-precision floating-point extension
+ 
+ @item zvkb
+ @tab 1.0
+ @tab Vector cryptography bit-manipulation extension
+ 
+ @item zvkg
+ @tab 1.0
+ @tab Vector GCM/GMAC extension
+ 
+ @item zvkn
+ @tab 1.0
+ @tab Vector NIST Algorithm Suite extension, @samp{zvkn} will expand to
+ 
+ @item zvknc
+ @tab 1.0
+ @tab Vector NIST Algorithm Suite with carryless multiply extension, @samp{zvknc}
+ 
+ @item zvkned
+ @tab 1.0
+ @tab Vector AES block cipher extension
+ 
+ @item zvkng
+ @tab 1.0
+ @tab Vector NIST Algorithm Suite with GCM extension, @samp{zvkng} will expand
+ 
+ @item zvknha
+ @tab 1.0
+ @tab Vector SHA-2 secure hash extension
+ 
+ @item zvknhb
+ @tab 1.0
+ @tab Vector SHA-2 secure hash extension
+ 
+ @item zvks
+ @tab 1.0
+ @tab Vector ShangMi algorithm suite extension, @samp{zvks} will expand
+ 
+ @item zvksc
+ @tab 1.0
+ @tab Vector ShangMi algorithm suite with carryless multiplication extension,
+ 
+ @item zvksed
+ @tab 1.0
+ @tab Vector SM4 Block Cipher extension
+ 
+ @item zvksg
+ @tab 1.0
+ @tab Vector ShangMi algorithm suite with GCM extension, @samp{zvksg} will expand
+ 
+ @item zvksh
+ @tab 1.0
+ @tab Vector SM3 Secure Hash extension
+ 
+ @item zvkt
+ @tab 1.0
+ @tab Vector data independent execution latency extension
+ 
+ @item zvl1024b
+ @tab 1.0
+ @tab Minimum vector length standard extensions
+ 
+ @item zvl128b
+ @tab 1.0
+ @tab Minimum vector length standard extensions
+ 
+ @item zvl16384b
+ @tab 1.0
+ @tab zvl16384b extension
+ 
+ @item zvl2048b
+ @tab 1.0
+ @tab Minimum vector length standard extensions
+ 
+ @item zvl256b
+ @tab 1.0
+ @tab Minimum vector length standard extensions
+ 
+ @item zvl32768b
+ @tab 1.0
+ @tab zvl32768b extension
+ 
+ @item zvl32b
+ @tab 1.0
+ @tab Minimum vector length standard extensions
+ 
+ @item zvl4096b
+ @tab 1.0
+ @tab Minimum vector length standard extensions
+ 
+ @item zvl512b
+ @tab 1.0
+ @tab Minimum vector length standard extensions
+ 
+ @item zvl64b
+ @tab 1.0
+ @tab Minimum vector length standard extensions
+ 
+ @item zvl65536b
+ @tab 1.0
+ @tab zvl65536b extension
+ 
+ @item zvl8192b
+ @tab 1.0
+ @tab zvl8192b extension
+ 
+ @item zhinx
+ @tab 1.0
+ @tab Half-precision floating-point in integer registers extension
+ 
+ @item zhinxmin
+ @tab 1.0
+ @tab Minimal half-precision floating-point in integer registers extension
+ 
+ @item sdtrig
+ @tab 1.0
+ @tab sdtrig extension
+ 
+ @item sha
+ @tab 1.0
+ @tab The augmented hypervisor extension
+ 
+ @item shcounterenw
+ @tab 1.0
+ @tab Support writeable enables for any supported counter
+ 
+ @item shgatpa
+ @tab 1.0
+ @tab SvNNx4 mode supported for all modes supported by satp
+ 
+ @item shtvala
+ @tab 1.0
+ @tab The htval register provides all needed values
+ 
+ @item shvstvala
+ @tab 1.0
+ @tab The vstval register provides all needed values
+ 
+ @item shvstvecd
+ @tab 1.0
+ @tab The vstvec register supports Direct mode
+ 
+ @item shvsatpa
+ @tab 1.0
+ @tab The vsatp register supports all modes supported by satp
+ 
+ @item smaia
+ @tab 1.0
+ @tab Advanced interrupt architecture extension
+ 
+ @item smepmp
+ @tab 1.0
+ @tab PMP Enhancements for memory access and execution prevention on Machine mode
+ 
+ @item smmpm
+ @tab 1.0
+ @tab smmpm extension
+ 
+ @item smnpm
+ @tab 1.0
+ @tab smnpm extension
+ 
+ @item smstateen
+ @tab 1.0
+ @tab State enable extension
+ 
+ @item ssaia
+ @tab 1.0
+ @tab Advanced interrupt architecture extension for supervisor-mode
+ 
+ @item sscofpmf
+ @tab 1.0
+ @tab Count overflow & filtering extension
+ 
+ @item ssnpm
+ @tab 1.0
+ @tab ssnpm extension
+ 
+ @item sspm
+ @tab 1.0
+ @tab sspm extension
+ 
+ @item ssstateen
+ @tab 1.0
+ @tab State-enable extension for supervisor-mode
+ 
+ @item sstc
+ @tab 1.0
+ @tab Supervisor-mode timer interrupts extension
+ 
+ @item ssstrict
+ @tab 1.0
+ @tab ssstrict extension
+ 
+ @item supm
+ @tab 1.0
+ @tab supm extension
+ 
+ @item svinval
+ @tab 1.0
+ @tab Fine-grained address-translation cache invalidation extension
+ 
+ @item svnapot
+ @tab 1.0
+ @tab NAPOT translation contiguity extension
+ 
+ @item svpbmt
+ @tab 1.0
+ @tab Page-based memory types extension
+ 
+ @item svvptc
+ @tab 1.0
+ @tab svvptc extension
+ 
+ @item svadu
+ @tab 1.0
+ @tab Hardware Updating of A/D Bits extension
+ 
+ @item svade
+ @tab 1.0
+ @tab Cause exception when hardware updating of A/D bits is disabled
+ 
+ @item xcvalu
+ @tab 1.0
+ @tab Core-V miscellaneous ALU extension
+ 
+ @item xcvbi
+ @tab 1.0
+ @tab xcvbi extension
+ 
+ @item xcvelw
+ @tab 1.0
+ @tab Core-V event load word extension
+ 
+ @item xcvmac
+ @tab 1.0
+ @tab Core-V multiply-accumulate extension
+ 
+ @item xcvsimd
+ @tab 1.0
+ @tab xcvsimd extension
+ 
+ @item xsfcease
+ @tab 1.0
+ @tab xsfcease extension
+ 
+ @item xsfvcp
+ @tab 1.0
+ @tab xsfvcp extension
+ 
+ @item xsfvfnrclipxfqf
+ @tab 1.0
+ @tab xsfvfnrclipxfqf extension
+ 
+ @item xsfvqmaccdod
+ @tab 1.0
+ @tab xsfvqmaccdod extension
+ 
+ @item xsfvqmaccqoq
+ @tab 1.0
+ @tab xsfvqmaccqoq extension
+ 
+ @item xtheadba
+ @tab 1.0
+ @tab T-head address calculation extension
+ 
+ @item xtheadbb
+ @tab 1.0
+ @tab T-head basic bit-manipulation extension
+ 
+ @item xtheadbs
+ @tab 1.0
+ @tab T-head single-bit instructions extension
+ 
+ @item xtheadcmo
+ @tab 1.0
+ @tab T-head cache management operations extension
+ 
+ @item xtheadcondmov
+ @tab 1.0
+ @tab T-head conditional move extension
+ 
+ @item xtheadfmemidx
+ @tab 1.0
+ @tab T-head indexed memory operations for floating-point registers extension
+ 
+ @item xtheadfmv
+ @tab 1.0
+ @tab T-head double floating-point high-bit data transmission extension
+ 
+ @item xtheadint
+ @tab 1.0
+ @tab T-head acceleration interruption extension
+ 
+ @item xtheadmac
+ @tab 1.0
+ @tab T-head multiply-accumulate extension
+ 
+ @item xtheadmemidx
+ @tab 1.0
+ @tab T-head indexed memory operation extension
+ 
+ @item xtheadmempair
+ @tab 1.0
+ @tab T-head two-GPR memory operation extension
+ 
+ @item xtheadsync
+ @tab 1.0
+ @tab T-head multi-core synchronization extension
+ 
+ @item xtheadvector
+ @tab 1.0
+ @tab xtheadvector extension
+ 
+ @item xventanacondops
+ @tab 1.0
+ @tab Ventana integer conditional operations extension
+ 
+ @end multitable
diff -Nrcpad gcc-16-20250511/gcc/doc/sourcebuild.texi gcc-16-20250518/gcc/doc/sourcebuild.texi
*** gcc-16-20250511/gcc/doc/sourcebuild.texi	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/doc/sourcebuild.texi	Sun May 18 22:32:07 2025
*************** ARM target uses emulated floating point
*** 2042,2051 ****
  ARM target supports @code{-mfpu=vfp -mfloat-abi=hard}.
  Some multilibs may be incompatible with these options.
  
- @item arm_iwmmxt_ok
- ARM target supports @code{-mcpu=iwmmxt}.
- Some multilibs may be incompatible with this option.
- 
  @item arm_neon
  ARM target supports generating NEON instructions.
  
--- 2042,2047 ----
diff -Nrcpad gcc-16-20250511/gcc/dse.cc gcc-16-20250518/gcc/dse.cc
*** gcc-16-20250511/gcc/dse.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/dse.cc	Sun May 18 22:32:07 2025
*************** emit_inc_dec_insn_before (rtx mem ATTRIB
*** 814,821 ****
      {
        start_sequence ();
        emit_insn (gen_add3_insn (dest, src, srcoff));
!       new_insn = get_insns ();
!       end_sequence ();
      }
    else
      new_insn = gen_move_insn (dest, src);
--- 814,820 ----
      {
        start_sequence ();
        emit_insn (gen_add3_insn (dest, src, srcoff));
!       new_insn = end_sequence ();
      }
    else
      new_insn = gen_move_insn (dest, src);
*************** find_shift_sequence (poly_int64 access_b
*** 1827,1834 ****
  			     gen_int_shift_amount (new_mode, shift),
  			     new_reg, 1, OPTAB_DIRECT);
  
!       shift_seq = get_insns ();
!       end_sequence ();
  
        if (target != new_reg || shift_seq == NULL)
  	continue;
--- 1826,1832 ----
  			     gen_int_shift_amount (new_mode, shift),
  			     new_reg, 1, OPTAB_DIRECT);
  
!       shift_seq = end_sequence ();
  
        if (target != new_reg || shift_seq == NULL)
  	continue;
*************** replace_read (store_info *store_info, in
*** 2047,2054 ****
      }
    else
      read_reg = copy_to_mode_reg (read_mode, read_reg);
!   insns = get_insns ();
!   end_sequence ();
  
    if (insns != NULL_RTX)
      {
--- 2045,2051 ----
      }
    else
      read_reg = copy_to_mode_reg (read_mode, read_reg);
!   insns = end_sequence ();
  
    if (insns != NULL_RTX)
      {
diff -Nrcpad gcc-16-20250511/gcc/dwarf2out.cc gcc-16-20250518/gcc/dwarf2out.cc
*** gcc-16-20250511/gcc/dwarf2out.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/dwarf2out.cc	Sun May 18 22:32:07 2025
*************** loc_list_from_tree_1 (tree loc, int want
*** 19161,19171 ****
  	   for nonzero bitpos.  */
  	if (list_ret == 0)
  	  return 0;
! 	if (!multiple_p (bitpos, BITS_PER_UNIT, &bytepos)
! 	    || !multiple_p (bitsize, BITS_PER_UNIT))
  	  {
! 	    expansion_failed (loc, NULL_RTX,
! 			      "bitfield access");
  	    return 0;
  	  }
  
--- 19161,19169 ----
  	   for nonzero bitpos.  */
  	if (list_ret == 0)
  	  return 0;
! 	if (!multiple_p (bitpos, BITS_PER_UNIT, &bytepos))
  	  {
! 	    expansion_failed (loc, NULL_RTX, "bitfield access");
  	    return 0;
  	  }
  
*************** loc_list_from_tree_1 (tree loc, int want
*** 19724,19734 ****
        dw_die_ref type_die;
        dw_loc_descr_ref deref;
  
!       /* If the size is greater than DWARF2_ADDR_SIZE, bail out.  */
!       if (size > DWARF2_ADDR_SIZE || size == -1)
  	{
! 	  expansion_failed (loc, NULL_RTX,
! 			    "DWARF address size mismatch");
  	  return 0;
  	}
  
--- 19722,19731 ----
        dw_die_ref type_die;
        dw_loc_descr_ref deref;
  
!       /* Bail out if the size is variable or greater than DWARF2_ADDR_SIZE.  */
!       if (size < 0 || size > DWARF2_ADDR_SIZE)
  	{
! 	  expansion_failed (loc, NULL_RTX, "DWARF address size mismatch");
  	  return 0;
  	}
  
*************** loc_list_from_tree_1 (tree loc, int want
*** 19757,19762 ****
--- 19754,19786 ----
  			 new_loc_descr (dwarf_OP (DW_OP_convert), 0, 0));
  	}
  
+       /* Deal with bit-fields whose size is not a multiple of a byte.  */
+       if (TREE_CODE (loc) == COMPONENT_REF
+ 	  && DECL_BIT_FIELD (TREE_OPERAND (loc, 1)))
+ 	{
+ 	  const unsigned HOST_WIDE_INT bitsize
+ 	    = tree_to_uhwi (DECL_SIZE (TREE_OPERAND (loc, 1)));
+ 	  if (bitsize < (unsigned HOST_WIDE_INT)size * BITS_PER_UNIT)
+ 	    {
+ 	      if (TYPE_UNSIGNED (TREE_TYPE (loc)))
+ 		{
+ 		  const unsigned HOST_WIDE_INT mask
+ 		    = (HOST_WIDE_INT_1U << bitsize) - 1;
+ 		  add_loc_descr (&deref, uint_loc_descriptor (mask));
+ 		  add_loc_descr (&deref, new_loc_descr (DW_OP_and, 0, 0));
+ 		}
+ 	      else
+ 		{
+ 		  const unsigned HOST_WIDE_INT shift
+ 		    = DWARF2_ADDR_SIZE * BITS_PER_UNIT - bitsize;
+ 		  add_loc_descr (&deref, uint_loc_descriptor (shift));
+ 		  add_loc_descr (&deref, new_loc_descr (DW_OP_shl, 0, 0));
+ 		  add_loc_descr (&deref, uint_loc_descriptor (shift));
+ 		  add_loc_descr (&deref, new_loc_descr (DW_OP_shra, 0, 0));
+ 		}
+ 	    }
+ 	}
+ 
        if (ret)
  	add_loc_descr (&ret, deref);
        else
diff -Nrcpad gcc-16-20250511/gcc/emit-rtl.cc gcc-16-20250518/gcc/emit-rtl.cc
*** gcc-16-20250511/gcc/emit-rtl.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/emit-rtl.cc	Sun May 18 22:32:07 2025
*************** validate_subreg (machine_mode omode, mac
*** 969,978 ****
      }
  
    /* Paradoxical subregs must have offset zero.  */
!   if (maybe_gt (osize, isize))
!     return known_eq (offset, 0U);
  
!   /* This is a normal subreg.  Verify that the offset is representable.  */
  
    /* For hard registers, we already have most of these rules collected in
       subreg_offset_representable_p.  */
--- 969,978 ----
      }
  
    /* Paradoxical subregs must have offset zero.  */
!   if (maybe_gt (osize, isize) && !known_eq (offset, 0U))
!     return false;
  
!   /* Verify that the offset is representable.  */
  
    /* For hard registers, we already have most of these rules collected in
       subreg_offset_representable_p.  */
*************** validate_subreg (machine_mode omode, mac
*** 988,996 ****
  
        return subreg_offset_representable_p (regno, imode, offset, omode);
      }
!   /* Do not allow SUBREG with stricter alignment than the inner MEM.  */
    else if (reg && MEM_P (reg) && STRICT_ALIGNMENT
! 	   && MEM_ALIGN (reg) < GET_MODE_ALIGNMENT (omode))
      return false;
  
    /* The outer size must be ordered wrt the register size, otherwise
--- 988,1000 ----
  
        return subreg_offset_representable_p (regno, imode, offset, omode);
      }
!   /* Do not allow normal SUBREG with stricter alignment than the inner MEM.
! 
!      PR120329: Combine can create paradoxical mem subregs even for
!      strict-alignment targets.  Allow it until combine is fixed.  */
    else if (reg && MEM_P (reg) && STRICT_ALIGNMENT
! 	   && MEM_ALIGN (reg) < GET_MODE_ALIGNMENT (omode)
! 	   && known_le (osize, isize))
      return false;
  
    /* The outer size must be ordered wrt the register size, otherwise
*************** validate_subreg (machine_mode omode, mac
*** 999,1005 ****
    if (!ordered_p (osize, regsize))
      return false;
  
!   /* For pseudo registers, we want most of the same checks.  Namely:
  
       Assume that the pseudo register will be allocated to hard registers
       that can hold REGSIZE bytes each.  If OSIZE is not a multiple of REGSIZE,
--- 1003,1009 ----
    if (!ordered_p (osize, regsize))
      return false;
  
!   /* For normal pseudo registers, we want most of the same checks.  Namely:
  
       Assume that the pseudo register will be allocated to hard registers
       that can hold REGSIZE bytes each.  If OSIZE is not a multiple of REGSIZE,
*************** validate_subreg (machine_mode omode, mac
*** 1008,1015 ****
       otherwise it is at the lowest offset.
  
       Given that we've already checked the mode and offset alignment,
!      we only have to check subblock subregs here.  */
    if (maybe_lt (osize, regsize)
        && ! (lra_in_progress && (FLOAT_MODE_P (imode) || FLOAT_MODE_P (omode))))
      {
        /* It is invalid for the target to pick a register size for a mode
--- 1012,1026 ----
       otherwise it is at the lowest offset.
  
       Given that we've already checked the mode and offset alignment,
!      we only have to check subblock subregs here.
! 
!      For paradoxical little-endian registers, this check is redundant.  The
!      offset has already been validated to be zero.
! 
!      For paradoxical big-endian registers, this check is not valid
!      because the offset is zero.  */
    if (maybe_lt (osize, regsize)
+       && known_le (osize, isize)
        && ! (lra_in_progress && (FLOAT_MODE_P (imode) || FLOAT_MODE_P (omode))))
      {
        /* It is invalid for the target to pick a register size for a mode
*************** reorder_insns (rtx_insn *from, rtx_insn
*** 4611,4618 ****
  
  	start_sequence ();
  	... emit the new instructions ...
! 	insns_head = get_insns ();
! 	end_sequence ();
  
  	emit_insn_before (insns_head, SPOT);
  
--- 4622,4628 ----
  
  	start_sequence ();
  	... emit the new instructions ...
! 	insns_head = end_sequence ();
  
  	emit_insn_before (insns_head, SPOT);
  
*************** gen_clobber (rtx x)
*** 5457,5464 ****
  
    start_sequence ();
    emit_clobber (x);
!   seq = get_insns ();
!   end_sequence ();
    return seq;
  }
  
--- 5467,5473 ----
  
    start_sequence ();
    emit_clobber (x);
!   seq = end_sequence ();
    return seq;
  }
  
*************** gen_use (rtx x)
*** 5485,5492 ****
  
    start_sequence ();
    emit_use (x);
!   seq = get_insns ();
!   end_sequence ();
    return seq;
  }
  
--- 5494,5500 ----
  
    start_sequence ();
    emit_use (x);
!   seq = end_sequence ();
    return seq;
  }
  
*************** pop_topmost_sequence (void)
*** 5722,5743 ****
    end_sequence ();
  }
  
! /* After emitting to a sequence, restore previous saved state.
! 
!    To get the contents of the sequence just made, you must call
!    `get_insns' *before* calling here.
  
     If the compiler might have deferred popping arguments while
     generating this sequence, and this sequence will not be immediately
     inserted into the instruction stream, use do_pending_stack_adjust
!    before calling get_insns.  That will ensure that the deferred
     pops are inserted into this sequence, and not into some random
     location in the instruction stream.  See INHIBIT_DEFER_POP for more
     information about deferred popping of arguments.  */
  
! void
  end_sequence (void)
  {
    struct sequence_stack *tem = get_current_sequence ()->next;
  
    set_first_insn (tem->first);
--- 5730,5751 ----
    end_sequence ();
  }
  
! /* After emitting to a sequence, restore the previous saved state and return
!    the start of the completed sequence.
  
     If the compiler might have deferred popping arguments while
     generating this sequence, and this sequence will not be immediately
     inserted into the instruction stream, use do_pending_stack_adjust
!    before calling this function.  That will ensure that the deferred
     pops are inserted into this sequence, and not into some random
     location in the instruction stream.  See INHIBIT_DEFER_POP for more
     information about deferred popping of arguments.  */
  
! rtx_insn *
  end_sequence (void)
  {
+   rtx_insn *insns = get_insns ();
+ 
    struct sequence_stack *tem = get_current_sequence ()->next;
  
    set_first_insn (tem->first);
*************** end_sequence (void)
*** 5747,5752 ****
--- 5755,5762 ----
    memset (tem, 0, sizeof (*tem));
    tem->next = free_sequence_stack;
    free_sequence_stack = tem;
+ 
+   return insns;
  }
  
  /* Return true if currently emitting into a sequence.  */
diff -Nrcpad gcc-16-20250511/gcc/except.cc gcc-16-20250518/gcc/except.cc
*** gcc-16-20250511/gcc/except.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/except.cc	Sun May 18 22:32:07 2025
*************** dw2_build_landing_pads (void)
*** 1024,1031 ****
  
        expand_dw2_landing_pad_for_region (lp->region);
  
!       seq = get_insns ();
!       end_sequence ();
  
        bb = emit_to_new_bb_before (seq, label_rtx (lp->post_landing_pad));
        bb->count = bb->next_bb->count;
--- 1024,1030 ----
  
        expand_dw2_landing_pad_for_region (lp->region);
  
!       seq = end_sequence ();
  
        bb = emit_to_new_bb_before (seq, label_rtx (lp->post_landing_pad));
        bb->count = bb->next_bb->count;
*************** sjlj_mark_call_sites (void)
*** 1120,1127 ****
  	  buf_addr = plus_constant (Pmode, XEXP (crtl->eh.sjlj_fc, 0),
  				    sjlj_fc_jbuf_ofs);
  	  expand_builtin_update_setjmp_buf (buf_addr);
! 	  p = get_insns ();
! 	  end_sequence ();
  	  emit_insn_before (p, insn);
  	}
  
--- 1119,1125 ----
  	  buf_addr = plus_constant (Pmode, XEXP (crtl->eh.sjlj_fc, 0),
  				    sjlj_fc_jbuf_ofs);
  	  expand_builtin_update_setjmp_buf (buf_addr);
! 	  p = end_sequence ();
  	  emit_insn_before (p, insn);
  	}
  
*************** sjlj_mark_call_sites (void)
*** 1161,1168 ****
        mem = adjust_address (crtl->eh.sjlj_fc, TYPE_MODE (integer_type_node),
  			    sjlj_fc_call_site_ofs);
        emit_move_insn (mem, gen_int_mode (this_call_site, GET_MODE (mem)));
!       p = get_insns ();
!       end_sequence ();
  
        emit_insn_before (p, before);
        last_call_site = this_call_site;
--- 1159,1165 ----
        mem = adjust_address (crtl->eh.sjlj_fc, TYPE_MODE (integer_type_node),
  			    sjlj_fc_call_site_ofs);
        emit_move_insn (mem, gen_int_mode (this_call_site, GET_MODE (mem)));
!       p = end_sequence ();
  
        emit_insn_before (p, before);
        last_call_site = this_call_site;
*************** sjlj_emit_function_enter (rtx_code_label
*** 1228,1235 ****
    emit_library_call (unwind_sjlj_register_libfunc, LCT_NORMAL, VOIDmode,
  		     XEXP (fc, 0), Pmode);
  
!   seq = get_insns ();
!   end_sequence ();
  
    /* ??? Instead of doing this at the beginning of the function,
       do this in a block that is at loop level 0 and dominates all
--- 1225,1231 ----
    emit_library_call (unwind_sjlj_register_libfunc, LCT_NORMAL, VOIDmode,
  		     XEXP (fc, 0), Pmode);
  
!   seq = end_sequence ();
  
    /* ??? Instead of doing this at the beginning of the function,
       do this in a block that is at loop level 0 and dominates all
*************** sjlj_emit_function_exit (void)
*** 1296,1303 ****
    emit_library_call (unwind_sjlj_unregister_libfunc, LCT_NORMAL, VOIDmode,
  		     XEXP (crtl->eh.sjlj_fc, 0), Pmode);
  
!   seq = get_insns ();
!   end_sequence ();
  
    /* ??? Really this can be done in any block at loop level 0 that
       post-dominates all can_throw_internal instructions.  This is
--- 1292,1298 ----
    emit_library_call (unwind_sjlj_unregister_libfunc, LCT_NORMAL, VOIDmode,
  		     XEXP (crtl->eh.sjlj_fc, 0), Pmode);
  
!   seq = end_sequence ();
  
    /* ??? Really this can be done in any block at loop level 0 that
       post-dominates all can_throw_internal instructions.  This is
*************** sjlj_emit_dispatch_table (rtx_code_label
*** 1402,1409 ****
  	if (r->filter_reg)
  	  emit_move_insn (r->filter_reg, filter_reg);
  
! 	seq2 = get_insns ();
! 	end_sequence ();
  
  	rtx_insn *before = label_rtx (lp->post_landing_pad);
  	bb = emit_to_new_bb_before (seq2, before);
--- 1397,1403 ----
  	if (r->filter_reg)
  	  emit_move_insn (r->filter_reg, filter_reg);
  
! 	seq2 = end_sequence ();
  
  	rtx_insn *before = label_rtx (lp->post_landing_pad);
  	bb = emit_to_new_bb_before (seq2, before);
*************** sjlj_emit_dispatch_table (rtx_code_label
*** 1439,1446 ****
        expand_sjlj_dispatch_table (disp, dispatch_labels);
      }
  
!   seq = get_insns ();
!   end_sequence ();
  
    bb = emit_to_new_bb_before (seq, first_reachable_label);
    if (num_dispatch == 1)
--- 1433,1439 ----
        expand_sjlj_dispatch_table (disp, dispatch_labels);
      }
  
!   seq = end_sequence ();
  
    bb = emit_to_new_bb_before (seq, first_reachable_label);
    if (num_dispatch == 1)
diff -Nrcpad gcc-16-20250511/gcc/expmed.cc gcc-16-20250518/gcc/expmed.cc
*** gcc-16-20250511/gcc/expmed.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/expmed.cc	Sun May 18 22:32:07 2025
*************** expmed_mult_highpart_optab (scalar_int_m
*** 3938,3945 ****
        wop1 = convert_modes (wider_mode, mode, op1, unsignedp);
        tem = expand_binop (wider_mode, smul_optab, wop0, wop1, 0,
  			  unsignedp, OPTAB_WIDEN);
!       insns = get_insns ();
!       end_sequence ();
  
        if (tem)
  	{
--- 3938,3944 ----
        wop1 = convert_modes (wider_mode, mode, op1, unsignedp);
        tem = expand_binop (wider_mode, smul_optab, wop0, wop1, 0,
  			  unsignedp, OPTAB_WIDEN);
!       insns = end_sequence ();
  
        if (tem)
  	{
*************** expand_sdiv_pow2 (scalar_int_mode mode,
*** 4182,4189 ****
  				     temp, temp2, mode, 0);
        if (temp2)
  	{
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  	  emit_insn (seq);
  	  return expand_shift (RSHIFT_EXPR, mode, temp2, logd, NULL_RTX, 0);
  	}
--- 4181,4187 ----
  				     temp, temp2, mode, 0);
        if (temp2)
  	{
! 	  rtx_insn *seq = end_sequence ();
  	  emit_insn (seq);
  	  return expand_shift (RSHIFT_EXPR, mode, temp2, logd, NULL_RTX, 0);
  	}
diff -Nrcpad gcc-16-20250511/gcc/expr.cc gcc-16-20250518/gcc/expr.cc
*** gcc-16-20250511/gcc/expr.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/expr.cc	Sun May 18 22:32:07 2025
*************** convert_mode_scalar (rtx to, rtx from, i
*** 471,478 ****
  			    emit_move_insn (to, tof);
  			}
  		    }
! 		  insns = get_insns ();
! 		  end_sequence ();
  		  if (tof)
  		    {
  		      emit_insn (insns);
--- 471,477 ----
  			    emit_move_insn (to, tof);
  			}
  		    }
! 		  insns = end_sequence ();
  		  if (tof)
  		    {
  		      emit_insn (insns);
*************** convert_mode_scalar (rtx to, rtx from, i
*** 542,549 ****
  		    emit_move_insn (to, tof);
  		}
  	      while (0);
! 	      insns = get_insns ();
! 	      end_sequence ();
  	      if (tof)
  		{
  		  emit_insn (insns);
--- 541,547 ----
  		    emit_move_insn (to, tof);
  		}
  	      while (0);
! 	      insns = end_sequence ();
  	      if (tof)
  		{
  		  emit_insn (insns);
*************** convert_mode_scalar (rtx to, rtx from, i
*** 562,569 ****
        start_sequence ();
        value = emit_library_call_value (libcall, NULL_RTX, LCT_CONST, to_mode,
  				       from, from_mode);
!       insns = get_insns ();
!       end_sequence ();
        emit_libcall_block (insns, to, value,
  			  tab == trunc_optab ? gen_rtx_FLOAT_TRUNCATE (to_mode,
  								       from)
--- 560,566 ----
        start_sequence ();
        value = emit_library_call_value (libcall, NULL_RTX, LCT_CONST, to_mode,
  				       from, from_mode);
!       insns = end_sequence ();
        emit_libcall_block (insns, to, value,
  			  tab == trunc_optab ? gen_rtx_FLOAT_TRUNCATE (to_mode,
  								       from)
*************** convert_mode_scalar (rtx to, rtx from, i
*** 736,743 ****
  	    emit_move_insn (subword, fill_value);
  	}
  
!       insns = get_insns ();
!       end_sequence ();
  
        emit_insn (insns);
        return;
--- 733,739 ----
  	    emit_move_insn (subword, fill_value);
  	}
  
!       insns = end_sequence ();
  
        emit_insn (insns);
        return;
*************** emit_move_multi_word (machine_mode mode,
*** 4547,4554 ****
        last_insn = emit_move_insn (xpart, ypart);
      }
  
!   seq = get_insns ();
!   end_sequence ();
  
    /* Show the output dies here.  This is necessary for SUBREGs
       of pseudos since we cannot track their lifetimes correctly;
--- 4543,4549 ----
        last_insn = emit_move_insn (xpart, ypart);
      }
  
!   seq = end_sequence ();
  
    /* Show the output dies here.  This is necessary for SUBREGs
       of pseudos since we cannot track their lifetimes correctly;
*************** emit_move_insn (rtx x, rtx y)
*** 4765,4777 ****
  rtx_insn *
  gen_move_insn (rtx x, rtx y)
  {
-   rtx_insn *seq;
- 
    start_sequence ();
    emit_move_insn_1 (x, y);
!   seq = get_insns ();
!   end_sequence ();
!   return seq;
  }
  
  /* If Y is representable exactly in a narrower mode, and the target can
--- 4760,4768 ----
  rtx_insn *
  gen_move_insn (rtx x, rtx y)
  {
    start_sequence ();
    emit_move_insn_1 (x, y);
!   return end_sequence ();
  }
  
  /* If Y is representable exactly in a narrower mode, and the target can
*************** expand_cond_expr_using_cmove (tree treeo
*** 9639,9646 ****
       and return.  */
    if (insn)
      {
!       rtx_insn *seq = get_insns ();
!       end_sequence ();
        emit_insn (seq);
        return convert_modes (orig_mode, mode, temp, 0);
      }
--- 9630,9636 ----
       and return.  */
    if (insn)
      {
!       rtx_insn *seq = end_sequence ();
        emit_insn (seq);
        return convert_modes (orig_mode, mode, temp, 0);
      }
*************** expand_expr_divmod (tree_code code, mach
*** 9707,9718 ****
        do_pending_stack_adjust ();
        start_sequence ();
        rtx uns_ret = expand_divmod (mod_p, code, mode, op0, op1, target, 1);
!       rtx_insn *uns_insns = get_insns ();
!       end_sequence ();
        start_sequence ();
        rtx sgn_ret = expand_divmod (mod_p, code, mode, op0, op1, target, 0);
!       rtx_insn *sgn_insns = get_insns ();
!       end_sequence ();
        unsigned uns_cost = seq_cost (uns_insns, speed_p);
        unsigned sgn_cost = seq_cost (sgn_insns, speed_p);
        bool was_tie = false;
--- 9697,9706 ----
        do_pending_stack_adjust ();
        start_sequence ();
        rtx uns_ret = expand_divmod (mod_p, code, mode, op0, op1, target, 1);
!       rtx_insn *uns_insns = end_sequence ();
        start_sequence ();
        rtx sgn_ret = expand_divmod (mod_p, code, mode, op0, op1, target, 0);
!       rtx_insn *sgn_insns = end_sequence ();
        unsigned uns_cost = seq_cost (uns_insns, speed_p);
        unsigned sgn_cost = seq_cost (sgn_insns, speed_p);
        bool was_tie = false;
*************** expand_expr_real_2 (const_sepops ops, rt
*** 10310,10317 ****
  				      op0, op1, NULL_RTX, unsignedp);
  	      divmul_ret = expand_mult (mode, divmul_ret, op1, target,
  					unsignedp);
! 	      rtx_insn *divmul_insns = get_insns ();
! 	      end_sequence ();
  	      start_sequence ();
  	      rtx modsub_ret
  		= expand_expr_divmod (TRUNC_MOD_EXPR, mode, treeop0, treeop1,
--- 10298,10304 ----
  				      op0, op1, NULL_RTX, unsignedp);
  	      divmul_ret = expand_mult (mode, divmul_ret, op1, target,
  					unsignedp);
! 	      rtx_insn *divmul_insns = end_sequence ();
  	      start_sequence ();
  	      rtx modsub_ret
  		= expand_expr_divmod (TRUNC_MOD_EXPR, mode, treeop0, treeop1,
*************** expand_expr_real_2 (const_sepops ops, rt
*** 10320,10327 ****
  						optab_default);
  	      modsub_ret = expand_binop (mode, this_optab, op0, modsub_ret,
  					 target, unsignedp, OPTAB_LIB_WIDEN);
! 	      rtx_insn *modsub_insns = get_insns ();
! 	      end_sequence ();
  	      unsigned divmul_cost = seq_cost (divmul_insns, speed_p);
  	      unsigned modsub_cost = seq_cost (modsub_insns, speed_p);
  	      /* If costs are the same then use as tie breaker the other other
--- 10307,10313 ----
  						optab_default);
  	      modsub_ret = expand_binop (mode, this_optab, op0, modsub_ret,
  					 target, unsignedp, OPTAB_LIB_WIDEN);
! 	      rtx_insn *modsub_insns = end_sequence ();
  	      unsigned divmul_cost = seq_cost (divmul_insns, speed_p);
  	      unsigned modsub_cost = seq_cost (modsub_insns, speed_p);
  	      /* If costs are the same then use as tie breaker the other other
*************** expand_expr_real_2 (const_sepops ops, rt
*** 10563,10570 ****
  	       and return.  */
  	    if (insn)
  	      {
! 		rtx_insn *seq = get_insns ();
! 		end_sequence ();
  		emit_insn (seq);
  		return target;
  	      }
--- 10549,10555 ----
  	       and return.  */
  	    if (insn)
  	      {
! 		rtx_insn *seq = end_sequence ();
  		emit_insn (seq);
  		return target;
  	      }
*************** expand_expr_real_2 (const_sepops ops, rt
*** 10736,10743 ****
  		    if (temp != dest_low)
  		      emit_move_insn (dest_low, temp);
  
! 		    seq = get_insns ();
! 		    end_sequence ();
  		    temp = target ;
  
  		    if (have_insn_for (ASHIFT, int_mode))
--- 10721,10727 ----
  		    if (temp != dest_low)
  		      emit_move_insn (dest_low, temp);
  
! 		    seq = end_sequence ();
  		    temp = target ;
  
  		    if (have_insn_for (ASHIFT, int_mode))
*************** expand_expr_real_2 (const_sepops ops, rt
*** 10749,10756 ****
  							     target,
  							     unsignedp);
  
! 			seq_old = get_insns ();
! 			end_sequence ();
  			if (seq_cost (seq, speed_p)
  			    >= seq_cost (seq_old, speed_p))
  			  {
--- 10733,10739 ----
  							     target,
  							     unsignedp);
  
! 			seq_old = end_sequence ();
  			if (seq_cost (seq, speed_p)
  			    >= seq_cost (seq_old, speed_p))
  			  {
*************** maybe_optimize_pow2p_mod_cmp (enum tree_
*** 13274,13281 ****
    start_sequence ();
    rtx mor = expand_expr_real_2 (&ops, NULL_RTX, TYPE_MODE (ops.type),
  				EXPAND_NORMAL);
!   rtx_insn *moinsns = get_insns ();
!   end_sequence ();
  
    unsigned mocost = seq_cost (moinsns, speed_p);
    mocost += rtx_cost (mor, mode, EQ, 0, speed_p);
--- 13257,13263 ----
    start_sequence ();
    rtx mor = expand_expr_real_2 (&ops, NULL_RTX, TYPE_MODE (ops.type),
  				EXPAND_NORMAL);
!   rtx_insn *moinsns = end_sequence ();
  
    unsigned mocost = seq_cost (moinsns, speed_p);
    mocost += rtx_cost (mor, mode, EQ, 0, speed_p);
*************** maybe_optimize_pow2p_mod_cmp (enum tree_
*** 13290,13297 ****
    start_sequence ();
    rtx mur = expand_expr_real_2 (&ops, NULL_RTX, TYPE_MODE (ops.type),
  				EXPAND_NORMAL);
!   rtx_insn *muinsns = get_insns ();
!   end_sequence ();
  
    unsigned mucost = seq_cost (muinsns, speed_p);
    mucost += rtx_cost (mur, mode, EQ, 0, speed_p);
--- 13272,13278 ----
    start_sequence ();
    rtx mur = expand_expr_real_2 (&ops, NULL_RTX, TYPE_MODE (ops.type),
  				EXPAND_NORMAL);
!   rtx_insn *muinsns = end_sequence ();
  
    unsigned mucost = seq_cost (muinsns, speed_p);
    mucost += rtx_cost (mur, mode, EQ, 0, speed_p);
*************** maybe_optimize_mod_cmp (enum tree_code c
*** 13477,13484 ****
    start_sequence ();
    rtx mor = expand_expr_real_2 (&ops, NULL_RTX, TYPE_MODE (ops.type),
  				EXPAND_NORMAL);
!   rtx_insn *moinsns = get_insns ();
!   end_sequence ();
  
    unsigned mocost = seq_cost (moinsns, speed_p);
    mocost += rtx_cost (mor, mode, EQ, 0, speed_p);
--- 13458,13464 ----
    start_sequence ();
    rtx mor = expand_expr_real_2 (&ops, NULL_RTX, TYPE_MODE (ops.type),
  				EXPAND_NORMAL);
!   rtx_insn *moinsns = end_sequence ();
  
    unsigned mocost = seq_cost (moinsns, speed_p);
    mocost += rtx_cost (mor, mode, EQ, 0, speed_p);
*************** maybe_optimize_mod_cmp (enum tree_code c
*** 13498,13505 ****
  
    start_sequence ();
    rtx mur = expand_normal (t);
!   rtx_insn *muinsns = get_insns ();
!   end_sequence ();
  
    unsigned mucost = seq_cost (muinsns, speed_p);
    mucost += rtx_cost (mur, mode, LE, 0, speed_p);
--- 13478,13484 ----
  
    start_sequence ();
    rtx mur = expand_normal (t);
!   rtx_insn *muinsns = end_sequence ();
  
    unsigned mucost = seq_cost (muinsns, speed_p);
    mucost += rtx_cost (mur, mode, LE, 0, speed_p);
diff -Nrcpad gcc-16-20250511/gcc/fold-const.cc gcc-16-20250518/gcc/fold-const.cc
*** gcc-16-20250511/gcc/fold-const.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/fold-const.cc	Sun May 18 22:32:08 2025
*************** tree_swap_operands_p (const_tree arg0, c
*** 7246,7255 ****
    if (TREE_CONSTANT (arg0))
      return true;
  
!   /* Put invariant address in arg1. */
!   if (is_gimple_invariant_address (arg1))
      return false;
!   if (is_gimple_invariant_address (arg0))
      return true;
  
    /* It is preferable to swap two SSA_NAME to ensure a canonical form
--- 7246,7255 ----
    if (TREE_CONSTANT (arg0))
      return true;
  
!   /* Put addresses in arg1. */
!   if (TREE_CODE (arg1) == ADDR_EXPR)
      return false;
!   if (TREE_CODE (arg0) == ADDR_EXPR)
      return true;
  
    /* It is preferable to swap two SSA_NAME to ensure a canonical form
diff -Nrcpad gcc-16-20250511/gcc/fortran/ChangeLog gcc-16-20250518/gcc/fortran/ChangeLog
*** gcc-16-20250511/gcc/fortran/ChangeLog	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/fortran/ChangeLog	Sun May 18 22:32:08 2025
***************
*** 1,3 ****
--- 1,70 ----
+ 2025-05-15  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/85750
+ 	* resolve.cc (resolve_symbol): Reorder conditions when to apply
+ 	default-initializers.
+ 
+ 2025-05-15  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* trans-openmp.cc (gfc_omp_deep_mapping_do): Handle SSA_NAME if
+ 	a def_stmt is available.
+ 
+ 2025-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/120139
+ 	* dump-parse-tree.cc (get_c_type_name): If no constant
+ 	size of an array exists, output an asterisk.
+ 
+ 2025-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/120107
+ 	* dump-parse-tree.cc (write_type): Do not dump non-interoperable
+ 	types.
+ 
+ 2025-05-14  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR fortran/120225
+ 	* simplify.cc (gfc_simplify_cotand): Fix used argument in
+ 	mpfr_tanu call.
+ 
+ 2025-05-14  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR fortran/120225
+ 	* simplify.cc: Include "trigd_fe.inc" only with MPFR < 4.2.0.
+ 	(rad2deg, rad2deg): Only define if MPFR < 4.2.0.
+ 	(gfc_simplify_acosd, gfc_simplify_asind, gfc_simplify_atand,
+ 	gfc_simplify_atan2d, gfc_simplify_cosd, gfc_simplify_tand,
+ 	gfc_simplify_cotand): Use mpfr_...u functions with MPFR >= 4.2.0.
+ 
+ 2025-05-13  Yuao Ma  <c8ef@outlook.com>
+ 	    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/113413
+ 	* intrinsic.cc (do_check): Minor doc polish.
+ 	(add_functions): Add atand(y, x) mapping.
+ 	* intrinsic.texi: Update atand example.
+ 
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 	    Daniil Kochergin  <daniil2472s@gmail.com>
+ 	    Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR fortran/120191
+ 	* trans-intrinsic.cc (strip_kind_from_actual): Remove.
+ 	(gfc_conv_intrinsic_minmaxloc): Don't call strip_kind_from_actual.
+ 	Free and clear kind_arg->expr if non-NULL.  Set back_arg->name to
+ 	"%VAL" instead of a loop looking for last argument.  Remove actual
+ 	variable, use array_arg instead.  Free and clear dim_arg->expr if
+ 	non-NULL for BT_CHARACTER cases instead of using a loop.
+ 
+ 2025-05-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/120163
+ 	* gfortran.h: Add formal_resolved to gfc_symbol.
+ 	* resolve.cc (gfc_resolve_formal_arglist): Set it.
+ 	(resolve_function): Do not call gfc_get_formal_from_actual_arglist
+ 	if we already resolved a formal arglist.
+ 	(resolve_call): Likewise.
+ 
  2025-05-10  Harald Anlauf  <anlauf@gmx.de>
  
  	PR fortran/102891
diff -Nrcpad gcc-16-20250511/gcc/fortran/dump-parse-tree.cc gcc-16-20250518/gcc/fortran/dump-parse-tree.cc
*** gcc-16-20250511/gcc/fortran/dump-parse-tree.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/fortran/dump-parse-tree.cc	Sun May 18 22:32:08 2025
*************** get_c_type_name (gfc_typespec *ts, gfc_a
*** 4371,4376 ****
--- 4371,4378 ----
  	  mpz_clear (sz);
  	  *asterisk = false;
  	}
+       else
+ 	*asterisk = true;
      }
    return ret;
  }
*************** write_type (gfc_symbol *sym)
*** 4415,4424 ****
  {
    gfc_component *c;
  
!   /* Don't dump our iso c module, nor vtypes.  */
  
    if (sym->from_intmod == INTMOD_ISO_C_BINDING || sym->attr.flavor != FL_DERIVED
!       || sym->attr.vtype)
      return;
  
    fprintf (dumpfile, "typedef struct %s {\n", sym->name);
--- 4417,4427 ----
  {
    gfc_component *c;
  
!   /* Don't dump types that are not interoperable, our very own ISO C Binding
!      module, or vtypes.  */
  
    if (sym->from_intmod == INTMOD_ISO_C_BINDING || sym->attr.flavor != FL_DERIVED
!       || sym->attr.vtype || !sym->attr.is_bind_c)
      return;
  
    fprintf (dumpfile, "typedef struct %s {\n", sym->name);
diff -Nrcpad gcc-16-20250511/gcc/fortran/intrinsic.cc gcc-16-20250518/gcc/fortran/intrinsic.cc
*** gcc-16-20250511/gcc/fortran/intrinsic.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/fortran/intrinsic.cc	Sun May 18 22:32:08 2025
*************** do_check (gfc_intrinsic_sym *specific, g
*** 376,386 ****
  
     Argument list:
        char *     name of function
!       int	whether function is elemental
!       int	If the function can be used as an actual argument [1]
!       bt	 return type of function
!       int	kind of return type of function
!       int	Fortran standard version
        check      pointer to check function
        simplify   pointer to simplification function
        resolve    pointer to resolution function
--- 376,386 ----
  
     Argument list:
        char *     name of function
!       int        whether function is elemental
!       int        If the function can be used as an actual argument [1]
!       bt         return type of function
!       int        kind of return type of function
!       int        Fortran standard version
        check      pointer to check function
        simplify   pointer to simplification function
        resolve    pointer to resolution function
*************** do_check (gfc_intrinsic_sym *specific, g
*** 396,402 ****
  
  
   [1] Whether a function can or cannot be used as an actual argument is
!      determined by its presence on the 13.6 list in Fortran 2003.  The
       following intrinsics, which are GNU extensions, are considered allowed
       as actual arguments: ACOSH ATANH DACOSH DASINH DATANH DCONJG DIMAG
       ZABS ZCOS ZEXP ZLOG ZSIN ZSQRT.  */
--- 396,402 ----
  
  
   [1] Whether a function can or cannot be used as an actual argument is
!      determined by its presence in the 13.6 list in Fortran 2003.  The
       following intrinsics, which are GNU extensions, are considered allowed
       as actual arguments: ACOSH ATANH DACOSH DASINH DATANH DCONJG DIMAG
       ZABS ZCOS ZEXP ZLOG ZSIN ZSQRT.  */
*************** add_functions (void)
*** 3479,3484 ****
--- 3479,3491 ----
  	     gfc_check_fn_r, gfc_simplify_atand, gfc_resolve_trigd,
  	     x, BT_REAL, dr, REQUIRED);
  
+   /* Two-argument version of atand, equivalent to atan2d.  */
+   add_sym_2 ("atand", GFC_ISYM_ATAN2D, CLASS_ELEMENTAL, ACTUAL_YES,
+ 	     BT_REAL, dr, GFC_STD_F2023,
+ 	     gfc_check_atan2, gfc_simplify_atan2d, gfc_resolve_trigd2,
+ 	     y, BT_REAL, dr, REQUIRED,
+ 	     x, BT_REAL, dr, REQUIRED);
+ 
    make_generic ("atand", GFC_ISYM_ATAND, GFC_STD_F2023);
  
    add_sym_1 ("datand", GFC_ISYM_ATAND, CLASS_ELEMENTAL, ACTUAL_YES,
diff -Nrcpad gcc-16-20250511/gcc/fortran/intrinsic.texi gcc-16-20250518/gcc/fortran/intrinsic.texi
*** gcc-16-20250511/gcc/fortran/intrinsic.texi	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/fortran/intrinsic.texi	Sun May 18 22:32:08 2025
*************** Fortran 90 and later
*** 1547,1553 ****
  
  
  @node ATAN
! @section @code{ATAN} --- Arctangent function 
  @fnindex ATAN
  @fnindex DATAN
  @cindex trigonometric function, tangent, inverse
--- 1547,1553 ----
  
  
  @node ATAN
! @section @code{ATAN} --- Arctangent function
  @fnindex ATAN
  @fnindex DATAN
  @cindex trigonometric function, tangent, inverse
*************** Degrees function: @*
*** 1619,1624 ****
--- 1619,1625 ----
  @item @emph{Synopsis}:
  @multitable @columnfractions .80
  @item @code{RESULT = ATAND(X)}
+ @item @code{RESULT = ATAND(Y, X)}
  @end multitable
  
  @item @emph{Description}:
*************** Elemental function
*** 1630,1650 ****
  
  @item @emph{Arguments}:
  @multitable @columnfractions .15 .70
! @item @var{X} @tab The type shall be @code{REAL};
! if @var{Y} is present, @var{X} shall be REAL.
  @item @var{Y} @tab The type and kind type parameter shall be the same as @var{X}.
  @end multitable
  
  @item @emph{Return value}:
  The return value is of the same type and kind as @var{X}.
! The result is in degrees and lies in the range
! @math{-90 \leq \Re \atand(x) \leq 90}.
  
  @item @emph{Example}:
  @smallexample
  program test_atand
    real(8) :: x = 2.866_8
    x = atand(x)
  end program test_atand
  @end smallexample
  
--- 1631,1653 ----
  
  @item @emph{Arguments}:
  @multitable @columnfractions .15 .70
! @item @var{X} @tab The type shall be @code{REAL}.
  @item @var{Y} @tab The type and kind type parameter shall be the same as @var{X}.
  @end multitable
  
  @item @emph{Return value}:
  The return value is of the same type and kind as @var{X}.
! If @var{Y} is present, the result is identical to @code{ATAN2D(Y, X)}.
! Otherwise, the result is in degrees and lies in the range
! @math{-90 \leq \atand(x) \leq 90}.
  
  @item @emph{Example}:
  @smallexample
  program test_atand
    real(8) :: x = 2.866_8
+   real(4) :: x1 = 1.e0_4, y1 = 0.5e0_4
    x = atand(x)
+   x1 = atand(y1, x1)
  end program test_atand
  @end smallexample
  
diff -Nrcpad gcc-16-20250511/gcc/fortran/resolve.cc gcc-16-20250518/gcc/fortran/resolve.cc
*** gcc-16-20250511/gcc/fortran/resolve.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/fortran/resolve.cc	Sun May 18 22:32:08 2025
*************** skip_interfaces:
*** 18059,18074 ****
  	  || (a->dummy && !a->pointer && a->intent == INTENT_OUT
  	      && sym->ns->proc_name->attr.if_source != IFSRC_IFBODY))
  	apply_default_init (sym);
        else if (a->function && sym->result && a->access != ACCESS_PRIVATE
  	       && (sym->ts.u.derived->attr.alloc_comp
  		   || sym->ts.u.derived->attr.pointer_comp))
  	/* Mark the result symbol to be referenced, when it has allocatable
  	   components.  */
  	sym->result->attr.referenced = 1;
-       else if (a->function && !a->pointer && !a->allocatable && !a->use_assoc
- 	       && sym->result)
- 	/* Default initialization for function results.  */
- 	apply_default_init (sym->result);
      }
  
    if (sym->ts.type == BT_CLASS && sym->ns == gfc_current_ns
--- 18059,18074 ----
  	  || (a->dummy && !a->pointer && a->intent == INTENT_OUT
  	      && sym->ns->proc_name->attr.if_source != IFSRC_IFBODY))
  	apply_default_init (sym);
+       else if (a->function && !a->pointer && !a->allocatable && !a->use_assoc
+ 	       && sym->result)
+ 	/* Default initialization for function results.  */
+ 	apply_default_init (sym->result);
        else if (a->function && sym->result && a->access != ACCESS_PRIVATE
  	       && (sym->ts.u.derived->attr.alloc_comp
  		   || sym->ts.u.derived->attr.pointer_comp))
  	/* Mark the result symbol to be referenced, when it has allocatable
  	   components.  */
  	sym->result->attr.referenced = 1;
      }
  
    if (sym->ts.type == BT_CLASS && sym->ns == gfc_current_ns
diff -Nrcpad gcc-16-20250511/gcc/fortran/simplify.cc gcc-16-20250518/gcc/fortran/simplify.cc
*** gcc-16-20250511/gcc/fortran/simplify.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/fortran/simplify.cc	Sun May 18 22:32:08 2025
*************** gfc_simplify_asin (gfc_expr *x)
*** 1183,1188 ****
--- 1183,1189 ----
  }
  
  
+ #if MPFR_VERSION < MPFR_VERSION_NUM(4,2,0)
  /* Convert radians to degrees, i.e., x * 180 / pi.  */
  
  static void
*************** rad2deg (mpfr_t x)
*** 1196,1201 ****
--- 1197,1203 ----
    mpfr_div (x, x, tmp, GFC_RND_MODE);
    mpfr_clear (tmp);
  }
+ #endif
  
  
  /* Simplify ACOSD(X) where the returned value has units of degree.  */
*************** gfc_simplify_acosd (gfc_expr *x)
*** 1217,1224 ****
--- 1219,1230 ----
      }
  
    result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where);
+ #if MPFR_VERSION >= MPFR_VERSION_NUM(4,2,0)
+   mpfr_acosu (result->value.real, x->value.real, 360, GFC_RND_MODE);
+ #else
    mpfr_acos (result->value.real, x->value.real, GFC_RND_MODE);
    rad2deg (result->value.real);
+ #endif
  
    return range_check (result, "ACOSD");
  }
*************** gfc_simplify_asind (gfc_expr *x)
*** 1243,1250 ****
--- 1249,1260 ----
      }
  
    result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where);
+ #if MPFR_VERSION >= MPFR_VERSION_NUM(4,2,0)
+   mpfr_asinu (result->value.real, x->value.real, 360, GFC_RND_MODE);
+ #else
    mpfr_asin (result->value.real, x->value.real, GFC_RND_MODE);
    rad2deg (result->value.real);
+ #endif
  
    return range_check (result, "ASIND");
  }
*************** gfc_simplify_atand (gfc_expr *x)
*** 1261,1268 ****
--- 1271,1282 ----
      return NULL;
  
    result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where);
+ #if MPFR_VERSION >= MPFR_VERSION_NUM(4,2,0)
+   mpfr_atanu (result->value.real, x->value.real, 360, GFC_RND_MODE);
+ #else
    mpfr_atan (result->value.real, x->value.real, GFC_RND_MODE);
    rad2deg (result->value.real);
+ #endif
  
    return range_check (result, "ATAND");
  }
*************** gfc_simplify_atan2d (gfc_expr *y, gfc_ex
*** 1954,1961 ****
--- 1968,1980 ----
      }
  
    result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where);
+ #if MPFR_VERSION >= MPFR_VERSION_NUM(4,2,0)
+   mpfr_atan2u (result->value.real, y->value.real, x->value.real, 360,
+ 	       GFC_RND_MODE);
+ #else
    mpfr_atan2 (result->value.real, y->value.real, x->value.real, GFC_RND_MODE);
    rad2deg (result->value.real);
+ #endif
  
    return range_check (result, "ATAN2D");
  }
*************** gfc_simplify_cos (gfc_expr *x)
*** 1990,1995 ****
--- 2009,2016 ----
  }
  
  
+ #if MPFR_VERSION < MPFR_VERSION_NUM(4,2,0)
+ /* Used by trigd_fe.inc.  */
  static void
  deg2rad (mpfr_t x)
  {
*************** deg2rad (mpfr_t x)
*** 2001,2011 ****
    mpfr_mul (x, x, d2r, GFC_RND_MODE);
    mpfr_clear (d2r);
  }
  
  
  /* Simplification routines for SIND, COSD, TAND.  */
  #include "trigd_fe.inc"
! 
  
  /* Simplify COSD(X) where X has the unit of degree.  */
  
--- 2022,2034 ----
    mpfr_mul (x, x, d2r, GFC_RND_MODE);
    mpfr_clear (d2r);
  }
+ #endif
  
  
+ #if MPFR_VERSION < MPFR_VERSION_NUM(4,2,0)
  /* Simplification routines for SIND, COSD, TAND.  */
  #include "trigd_fe.inc"
! #endif
  
  /* Simplify COSD(X) where X has the unit of degree.  */
  
*************** gfc_simplify_cosd (gfc_expr *x)
*** 2018,2025 ****
--- 2041,2052 ----
      return NULL;
  
    result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where);
+ #if MPFR_VERSION >= MPFR_VERSION_NUM(4,2,0)
+   mpfr_cosu (result->value.real, x->value.real, 360, GFC_RND_MODE);
+ #else
    mpfr_set (result->value.real, x->value.real, GFC_RND_MODE);
    simplify_cosd (result->value.real);
+ #endif
  
    return range_check (result, "COSD");
  }
*************** gfc_simplify_sind (gfc_expr *x)
*** 2036,2043 ****
--- 2063,2074 ----
      return NULL;
  
    result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where);
+ #if MPFR_VERSION >= MPFR_VERSION_NUM(4,2,0)
+   mpfr_sinu (result->value.real, x->value.real, 360, GFC_RND_MODE);
+ #else
    mpfr_set (result->value.real, x->value.real, GFC_RND_MODE);
    simplify_sind (result->value.real);
+ #endif
  
    return range_check (result, "SIND");
  }
*************** gfc_simplify_tand (gfc_expr *x)
*** 2054,2061 ****
--- 2085,2096 ----
      return NULL;
  
    result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where);
+ #if MPFR_VERSION >= MPFR_VERSION_NUM(4,2,0)
+   mpfr_tanu (result->value.real, x->value.real, 360, GFC_RND_MODE);
+ #else
    mpfr_set (result->value.real, x->value.real, GFC_RND_MODE);
    simplify_tand (result->value.real);
+ #endif
  
    return range_check (result, "TAND");
  }
*************** gfc_simplify_cotand (gfc_expr *x)
*** 2078,2084 ****
--- 2113,2123 ----
    result = gfc_get_constant_expr (x->ts.type, x->ts.kind, &x->where);
    mpfr_set (result->value.real, x->value.real, GFC_RND_MODE);
    mpfr_add_ui (result->value.real, result->value.real, 90, GFC_RND_MODE);
+ #if MPFR_VERSION >= MPFR_VERSION_NUM(4,2,0)
+   mpfr_tanu (result->value.real, result->value.real, 360, GFC_RND_MODE);
+ #else
    simplify_tand (result->value.real);
+ #endif
    mpfr_neg (result->value.real, result->value.real, GFC_RND_MODE);
  
    return range_check (result, "COTAND");
diff -Nrcpad gcc-16-20250511/gcc/fortran/trans-intrinsic.cc gcc-16-20250518/gcc/fortran/trans-intrinsic.cc
*** gcc-16-20250511/gcc/fortran/trans-intrinsic.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/fortran/trans-intrinsic.cc	Sun May 18 22:32:08 2025
*************** maybe_absent_optional_variable (gfc_expr
*** 4715,4736 ****
  }
  
  
- /* Remove unneeded kind= argument from actual argument list when the
-    result conversion is dealt with in a different place.  */
- 
- static void
- strip_kind_from_actual (gfc_actual_arglist * actual)
- {
-   for (gfc_actual_arglist *a = actual; a; a = a->next)
-     {
-       if (a && a->name && strcmp (a->name, "kind") == 0)
- 	{
- 	  gfc_free_expr (a->expr);
- 	  a->expr = NULL;
- 	}
-     }
- }
- 
  /* Emit code for minloc or maxloc intrinsic.  There are many different cases
     we need to handle.  For performance reasons we sometimes create two
     loops instead of one, where the second one is much simpler.
--- 4715,4720 ----
*************** gfc_conv_intrinsic_minmaxloc (gfc_se * s
*** 4925,4931 ****
    tree b_if, b_else;
    tree back;
    gfc_loopinfo loop, *ploop;
!   gfc_actual_arglist *actual, *array_arg, *dim_arg, *mask_arg, *kind_arg;
    gfc_actual_arglist *back_arg;
    gfc_ss *arrayss = nullptr;
    gfc_ss *maskss = nullptr;
--- 4909,4915 ----
    tree b_if, b_else;
    tree back;
    gfc_loopinfo loop, *ploop;
!   gfc_actual_arglist *array_arg, *dim_arg, *mask_arg, *kind_arg;
    gfc_actual_arglist *back_arg;
    gfc_ss *arrayss = nullptr;
    gfc_ss *maskss = nullptr;
*************** gfc_conv_intrinsic_minmaxloc (gfc_se * s
*** 4944,4951 ****
    int n;
    bool optional_mask;
  
!   actual = expr->value.function.actual;
!   array_arg = actual;
    dim_arg = array_arg->next;
    mask_arg = dim_arg->next;
    kind_arg = mask_arg->next;
--- 4928,4934 ----
    int n;
    bool optional_mask;
  
!   array_arg = expr->value.function.actual;
    dim_arg = array_arg->next;
    mask_arg = dim_arg->next;
    kind_arg = mask_arg->next;
*************** gfc_conv_intrinsic_minmaxloc (gfc_se * s
*** 4954,4967 ****
    bool dim_present = dim_arg->expr != nullptr;
    bool nested_loop = dim_present && expr->rank > 0;
  
!   /* The last argument, BACK, is passed by value. Ensure that
!      by setting its name to %VAL. */
!   for (gfc_actual_arglist *a = actual; a; a = a->next)
      {
!       if (a->next == NULL)
! 	a->name = "%VAL";
      }
  
    if (se->ss)
      {
        if (se->ss->info->useflags)
--- 4937,4952 ----
    bool dim_present = dim_arg->expr != nullptr;
    bool nested_loop = dim_present && expr->rank > 0;
  
!   /* Remove kind.  */
!   if (kind_arg->expr)
      {
!       gfc_free_expr (kind_arg->expr);
!       kind_arg->expr = NULL;
      }
  
+   /* Pass BACK argument by value.  */
+   back_arg->name = "%VAL";
+ 
    if (se->ss)
      {
        if (se->ss->info->useflags)
*************** gfc_conv_intrinsic_minmaxloc (gfc_se * s
*** 4983,5007 ****
  	}
      }
  
!   arrayexpr = actual->expr;
  
!   /* Special case for character maxloc.  Remove unneeded actual
!      arguments, then call a library function.  */
  
    if (arrayexpr->ts.type == BT_CHARACTER)
      {
        gcc_assert (expr->rank == 0);
  
!       gfc_actual_arglist *a = actual;
!       strip_kind_from_actual (a);
!       while (a)
  	{
! 	  if (a->name && strcmp (a->name, "dim") == 0)
! 	    {
! 	      gfc_free_expr (a->expr);
! 	      a->expr = NULL;
! 	    }
! 	  a = a->next;
  	}
        gfc_conv_intrinsic_funcall (se, expr);
        return;
--- 4968,4986 ----
  	}
      }
  
!   arrayexpr = array_arg->expr;
  
!   /* Special case for character maxloc.  Remove unneeded "dim" actual
!      argument, then call a library function.  */
  
    if (arrayexpr->ts.type == BT_CHARACTER)
      {
        gcc_assert (expr->rank == 0);
  
!       if (dim_arg->expr)
  	{
! 	  gfc_free_expr (dim_arg->expr);
! 	  dim_arg->expr = NULL;
  	}
        gfc_conv_intrinsic_funcall (se, expr);
        return;
diff -Nrcpad gcc-16-20250511/gcc/fortran/trans-openmp.cc gcc-16-20250518/gcc/fortran/trans-openmp.cc
*** gcc-16-20250511/gcc/fortran/trans-openmp.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/fortran/trans-openmp.cc	Sun May 18 22:32:08 2025
*************** gfc_omp_deep_mapping_do (bool is_cnt, co
*** 2478,2483 ****
--- 2478,2503 ----
    else
      while (TREE_CODE (tmp) == COMPONENT_REF || TREE_CODE (tmp) == ARRAY_REF)
        tmp = TREE_OPERAND (tmp, TREE_CODE (tmp) == COMPONENT_REF ? 1 : 0);
+   if (TREE_CODE (tmp) == MEM_REF)
+     tmp = TREE_OPERAND (tmp, 0);
+   if (TREE_CODE (tmp) == SSA_NAME)
+     {
+       gimple *def_stmt = SSA_NAME_DEF_STMT (tmp);
+       if (gimple_code (def_stmt) == GIMPLE_ASSIGN)
+ 	{
+ 	  tmp = gimple_assign_rhs1 (def_stmt);
+ 	  if (poly)
+ 	    {
+ 	      tmp = TYPE_FIELDS (type);
+ 	      type = TREE_TYPE (tmp);
+ 	    }
+ 	  else
+ 	    while (TREE_CODE (tmp) == COMPONENT_REF
+ 		   || TREE_CODE (tmp) == ARRAY_REF)
+ 	      tmp = TREE_OPERAND (tmp,
+ 				  TREE_CODE (tmp) == COMPONENT_REF ? 1 : 0);
+ 	}
+     }
    /* If the clause argument is nonallocatable, skip is-allocate check. */
    if (GFC_DECL_GET_SCALAR_ALLOCATABLE (tmp)
        || GFC_DECL_GET_SCALAR_POINTER (tmp)
diff -Nrcpad gcc-16-20250511/gcc/function.cc gcc-16-20250518/gcc/function.cc
*** gcc-16-20250511/gcc/function.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/function.cc	Sun May 18 22:32:08 2025
*************** emit_initial_value_sets (void)
*** 1355,1362 ****
    start_sequence ();
    for (i = 0; i < ivs->num_entries; i++)
      emit_move_insn (ivs->entries[i].pseudo, ivs->entries[i].hard_reg);
!   seq = get_insns ();
!   end_sequence ();
  
    emit_insn_at_entry (seq);
  }
--- 1355,1361 ----
    start_sequence ();
    for (i = 0; i < ivs->num_entries; i++)
      emit_move_insn (ivs->entries[i].pseudo, ivs->entries[i].hard_reg);
!   seq = end_sequence ();
  
    emit_insn_at_entry (seq);
  }
*************** instantiate_virtual_regs_in_insn (rtx_in
*** 1574,1581 ****
  	  if (x != new_rtx)
  	    emit_move_insn (new_rtx, x);
  
! 	  seq = get_insns ();
! 	  end_sequence ();
  
  	  emit_insn_before (seq, insn);
  	  delete_insn (insn);
--- 1573,1579 ----
  	  if (x != new_rtx)
  	    emit_move_insn (new_rtx, x);
  
! 	  seq = end_sequence ();
  
  	  emit_insn_before (seq, insn);
  	  delete_insn (insn);
*************** instantiate_virtual_regs_in_insn (rtx_in
*** 1601,1608 ****
  	  if (x != SET_DEST (set))
  	    emit_move_insn (SET_DEST (set), x);
  
! 	  seq = get_insns ();
! 	  end_sequence ();
  
  	  emit_insn_before (seq, insn);
  	  delete_insn (insn);
--- 1599,1605 ----
  	  if (x != SET_DEST (set))
  	    emit_move_insn (SET_DEST (set), x);
  
! 	  seq = end_sequence ();
  
  	  emit_insn_before (seq, insn);
  	  delete_insn (insn);
*************** instantiate_virtual_regs_in_insn (rtx_in
*** 1631,1638 ****
  	    {
  	      start_sequence ();
  	      emit_move_insn (SET_DEST (set), new_rtx);
! 	      seq = get_insns ();
! 	      end_sequence ();
  
  	      emit_insn_before (seq, insn);
  	      delete_insn (insn);
--- 1628,1634 ----
  	    {
  	      start_sequence ();
  	      emit_move_insn (SET_DEST (set), new_rtx);
! 	      seq = end_sequence ();
  
  	      emit_insn_before (seq, insn);
  	      delete_insn (insn);
*************** instantiate_virtual_regs_in_insn (rtx_in
*** 1692,1699 ****
  		addr = force_reg (GET_MODE (addr), addr);
  		x = replace_equiv_address (x, addr, true);
  	      }
! 	    seq = get_insns ();
! 	    end_sequence ();
  	    if (seq)
  	      emit_insn_before (seq, insn);
  	  }
--- 1688,1694 ----
  		addr = force_reg (GET_MODE (addr), addr);
  		x = replace_equiv_address (x, addr, true);
  	      }
! 	    seq = end_sequence ();
  	    if (seq)
  	      emit_insn_before (seq, insn);
  	  }
*************** instantiate_virtual_regs_in_insn (rtx_in
*** 1718,1725 ****
  	      x = expand_simple_binop (GET_MODE (x), PLUS, new_rtx,
  				       gen_int_mode (offset, GET_MODE (x)),
  				       NULL_RTX, 1, OPTAB_LIB_WIDEN);
! 	      seq = get_insns ();
! 	      end_sequence ();
  	      emit_insn_before (seq, insn);
  	    }
  	  break;
--- 1713,1719 ----
  	      x = expand_simple_binop (GET_MODE (x), PLUS, new_rtx,
  				       gen_int_mode (offset, GET_MODE (x)),
  				       NULL_RTX, 1, OPTAB_LIB_WIDEN);
! 	      seq = end_sequence ();
  	      emit_insn_before (seq, insn);
  	    }
  	  break;
*************** instantiate_virtual_regs_in_insn (rtx_in
*** 1735,1742 ****
  		(GET_MODE (new_rtx), PLUS, new_rtx,
  		 gen_int_mode (offset, GET_MODE (new_rtx)),
  		 NULL_RTX, 1, OPTAB_LIB_WIDEN);
! 	      seq = get_insns ();
! 	      end_sequence ();
  	      emit_insn_before (seq, insn);
  	    }
  	  x = simplify_gen_subreg (recog_data.operand_mode[i], new_rtx,
--- 1729,1735 ----
  		(GET_MODE (new_rtx), PLUS, new_rtx,
  		 gen_int_mode (offset, GET_MODE (new_rtx)),
  		 NULL_RTX, 1, OPTAB_LIB_WIDEN);
! 	      seq = end_sequence ();
  	      emit_insn_before (seq, insn);
  	    }
  	  x = simplify_gen_subreg (recog_data.operand_mode[i], new_rtx,
*************** instantiate_virtual_regs_in_insn (rtx_in
*** 1761,1768 ****
  	    }
  	  else
  	    x = force_reg (insn_data[insn_code].operand[i].mode, x);
! 	  seq = get_insns ();
! 	  end_sequence ();
  	  if (seq)
  	    emit_insn_before (seq, insn);
  	}
--- 1754,1760 ----
  	    }
  	  else
  	    x = force_reg (insn_data[insn_code].operand[i].mode, x);
! 	  seq = end_sequence ();
  	  if (seq)
  	    emit_insn_before (seq, insn);
  	}
*************** expand_function_end (void)
*** 5417,5424 ****
  	      anti_adjust_stack_and_probe (max_frame_size, true);
  	    else
  	      probe_stack_range (STACK_OLD_CHECK_PROTECT, max_frame_size);
! 	    seq = get_insns ();
! 	    end_sequence ();
  	    set_insn_locations (seq, prologue_location);
  	    emit_insn_before (seq, stack_check_probe_note);
  	    break;
--- 5409,5415 ----
  	      anti_adjust_stack_and_probe (max_frame_size, true);
  	    else
  	      probe_stack_range (STACK_OLD_CHECK_PROTECT, max_frame_size);
! 	    seq = end_sequence ();
  	    set_insn_locations (seq, prologue_location);
  	    emit_insn_before (seq, stack_check_probe_note);
  	    break;
*************** expand_function_end (void)
*** 5597,5604 ****
      {
        start_sequence ();
        clobber_return_register ();
!       rtx_insn *seq = get_insns ();
!       end_sequence ();
  
        emit_insn_after (seq, clobber_after);
      }
--- 5588,5594 ----
      {
        start_sequence ();
        clobber_return_register ();
!       rtx_insn *seq = end_sequence ();
  
        emit_insn_after (seq, clobber_after);
      }
*************** expand_function_end (void)
*** 5630,5637 ****
  
        start_sequence ();
        emit_stack_save (SAVE_FUNCTION, &tem);
!       rtx_insn *seq = get_insns ();
!       end_sequence ();
        emit_insn_before (seq, parm_birth_insn);
  
        emit_stack_restore (SAVE_FUNCTION, tem);
--- 5620,5626 ----
  
        start_sequence ();
        emit_stack_save (SAVE_FUNCTION, &tem);
!       rtx_insn *seq = end_sequence ();
        emit_insn_before (seq, parm_birth_insn);
  
        emit_stack_restore (SAVE_FUNCTION, tem);
*************** get_arg_pointer_save_area (void)
*** 5663,5670 ****
        start_sequence ();
        emit_move_insn (validize_mem (copy_rtx (ret)),
                        crtl->args.internal_arg_pointer);
!       rtx_insn *seq = get_insns ();
!       end_sequence ();
  
        push_topmost_sequence ();
        emit_insn_after (seq, entry_of_function ());
--- 5652,5658 ----
        start_sequence ();
        emit_move_insn (validize_mem (copy_rtx (ret)),
                        crtl->args.internal_arg_pointer);
!       rtx_insn *seq = end_sequence ();
  
        push_topmost_sequence ();
        emit_insn_after (seq, entry_of_function ());
*************** make_split_prologue_seq (void)
*** 5853,5860 ****
  
    start_sequence ();
    emit_insn (targetm.gen_split_stack_prologue ());
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
  
    record_insns (seq, NULL, &prologue_insn_hash);
    set_insn_locations (seq, prologue_location);
--- 5841,5847 ----
  
    start_sequence ();
    emit_insn (targetm.gen_split_stack_prologue ());
!   rtx_insn *seq = end_sequence ();
  
    record_insns (seq, NULL, &prologue_insn_hash);
    set_insn_locations (seq, prologue_location);
*************** make_prologue_seq (void)
*** 5890,5897 ****
    if (!targetm.profile_before_prologue () && crtl->profile)
      emit_insn (gen_blockage ());
  
!   seq = get_insns ();
!   end_sequence ();
    set_insn_locations (seq, prologue_location);
  
    return seq;
--- 5877,5883 ----
    if (!targetm.profile_before_prologue () && crtl->profile)
      emit_insn (gen_blockage ());
  
!   seq = end_sequence ();
    set_insn_locations (seq, prologue_location);
  
    return seq;
*************** gen_call_used_regs_seq (rtx_insn *ret, u
*** 5994,6009 ****
       all call used registers.  */
    gcc_assert (hard_reg_set_subset_p (zeroed_hardregs, all_call_used_regs));
  
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
    if (seq)
      {
        /* Emit the memory blockage and register clobber asm volatile before
  	 the whole sequence.  */
        start_sequence ();
        expand_asm_reg_clobber_mem_blockage (zeroed_hardregs);
!       rtx_insn *seq_barrier = get_insns ();
!       end_sequence ();
  
        emit_insn_before (seq_barrier, ret);
        emit_insn_before (seq, ret);
--- 5980,5993 ----
       all call used registers.  */
    gcc_assert (hard_reg_set_subset_p (zeroed_hardregs, all_call_used_regs));
  
!   rtx_insn *seq = end_sequence ();
    if (seq)
      {
        /* Emit the memory blockage and register clobber asm volatile before
  	 the whole sequence.  */
        start_sequence ();
        expand_asm_reg_clobber_mem_blockage (zeroed_hardregs);
!       rtx_insn *seq_barrier = end_sequence ();
  
        emit_insn_before (seq_barrier, ret);
        emit_insn_before (seq, ret);
*************** thread_prologue_and_epilogue_insns (void
*** 6272,6279 ****
  	{
  	  start_sequence ();
  	  targetm.emit_epilogue_for_sibcall (as_a<rtx_call_insn *> (insn));
! 	  ep_seq = get_insns ();
! 	  end_sequence ();
  	}
        else
  	ep_seq = targetm.gen_sibcall_epilogue ();
--- 6256,6262 ----
  	{
  	  start_sequence ();
  	  targetm.emit_epilogue_for_sibcall (as_a<rtx_call_insn *> (insn));
! 	  ep_seq = end_sequence ();
  	}
        else
  	ep_seq = targetm.gen_sibcall_epilogue ();
*************** thread_prologue_and_epilogue_insns (void
*** 6282,6289 ****
  	  start_sequence ();
  	  emit_note (NOTE_INSN_EPILOGUE_BEG);
  	  emit_insn (ep_seq);
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  
  	  /* Retain a map of the epilogue insns.  Used in life analysis to
  	     avoid getting rid of sibcall epilogue insns.  Do this before we
--- 6265,6271 ----
  	  start_sequence ();
  	  emit_note (NOTE_INSN_EPILOGUE_BEG);
  	  emit_insn (ep_seq);
! 	  rtx_insn *seq = end_sequence ();
  
  	  /* Retain a map of the epilogue insns.  Used in life analysis to
  	     avoid getting rid of sibcall epilogue insns.  Do this before we
*************** match_asm_constraints_1 (rtx_insn *insn,
*** 6972,6979 ****
  
        start_sequence ();
        emit_move_insn (output, copy_rtx (input));
!       insns = get_insns ();
!       end_sequence ();
        emit_insn_before (insns, insn);
  
        constraint = ASM_OPERANDS_OUTPUT_CONSTRAINT(SET_SRC(p_sets[match]));
--- 6954,6960 ----
  
        start_sequence ();
        emit_move_insn (output, copy_rtx (input));
!       insns = end_sequence ();
        emit_insn_before (insns, insn);
  
        constraint = ASM_OPERANDS_OUTPUT_CONSTRAINT(SET_SRC(p_sets[match]));
diff -Nrcpad gcc-16-20250511/gcc/gcse.cc gcc-16-20250518/gcc/gcse.cc
*** gcc-16-20250511/gcc/gcse.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/gcse.cc	Sun May 18 22:32:08 2025
*************** prepare_copy_insn (rtx reg, rtx exp)
*** 2094,2101 ****
  	gcc_unreachable ();
      }
  
!   pat = get_insns ();
!   end_sequence ();
  
    return pat;
  }
--- 2094,2100 ----
  	gcc_unreachable ();
      }
  
!   pat = end_sequence ();
  
    return pat;
  }
diff -Nrcpad gcc-16-20250511/gcc/gentarget-def.cc gcc-16-20250518/gcc/gentarget-def.cc
*** gcc-16-20250511/gcc/gentarget-def.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/gentarget-def.cc	Sun May 18 22:32:08 2025
*************** main (int argc, const char **argv)
*** 319,327 ****
    printf ("    return insn;\n");
    printf ("  start_sequence ();\n");
    printf ("  emit (x, false);\n");
!   printf ("  rtx_insn *res = get_insns ();\n");
!   printf ("  end_sequence ();\n");
!   printf ("  return res;\n");
    printf ("}\n");
  
  #define DEF_TARGET_INSN(INSN, ARGS) \
--- 319,325 ----
    printf ("    return insn;\n");
    printf ("  start_sequence ();\n");
    printf ("  emit (x, false);\n");
!   printf ("  return end_sequence ();\n");
    printf ("}\n");
  
  #define DEF_TARGET_INSN(INSN, ARGS) \
diff -Nrcpad gcc-16-20250511/gcc/gimple-fold.cc gcc-16-20250518/gcc/gimple-fold.cc
*** gcc-16-20250511/gcc/gimple-fold.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/gimple-fold.cc	Sun May 18 22:32:08 2025
*************** size_must_be_zero_p (tree size)
*** 894,1048 ****
    return vr.zero_p ();
  }
  
- /* Optimize
-    a = {};
-    b = a;
-    into
-    a = {};
-    b = {};
-    Similarly for memset (&a, ..., sizeof (a)); instead of a = {};
-    and/or memcpy (&b, &a, sizeof (a)); instead of b = a;  */
- 
- static bool
- optimize_memcpy_to_memset (gimple_stmt_iterator *gsip, tree dest, tree src, tree len)
- {
-   ao_ref read;
-   gimple *stmt = gsi_stmt (*gsip);
-   if (gimple_has_volatile_ops (stmt))
-     return false;
- 
- 
-   tree src2 = NULL_TREE, len2 = NULL_TREE;
-   poly_int64 offset, offset2;
-   tree val = integer_zero_node;
-   bool len_was_null = len == NULL_TREE;
-   if (len == NULL_TREE)
-     len = (TREE_CODE (src) == COMPONENT_REF
- 	   ? DECL_SIZE_UNIT (TREE_OPERAND (src, 1))
- 	   : TYPE_SIZE_UNIT (TREE_TYPE (src)));
-   if (len == NULL_TREE
-       || !poly_int_tree_p (len))
-     return false;
- 
-   ao_ref_init (&read, src);
-   tree vuse = gimple_vuse (stmt);
-   gimple *defstmt;
-   do {
-     if (vuse == NULL || TREE_CODE (vuse) != SSA_NAME)
-       return false;
-     defstmt = SSA_NAME_DEF_STMT (vuse);
-     if (is_a <gphi*>(defstmt))
-       return false;
- 
-     /* If the len was null, then we can use TBBA. */
-     if (stmt_may_clobber_ref_p_1 (defstmt, &read,
- 				  /* tbaa_p = */ len_was_null))
-       break;
-     vuse = gimple_vuse (defstmt);
-   } while (true);
- 
-   if (gimple_store_p (defstmt)
-       && gimple_assign_single_p (defstmt)
-       && TREE_CODE (gimple_assign_rhs1 (defstmt)) == STRING_CST
-       && !gimple_clobber_p (defstmt))
-     {
-       tree str = gimple_assign_rhs1 (defstmt);
-       src2 = gimple_assign_lhs (defstmt);
-       /* The string must contain all null char's for now.  */
-       for (int i = 0; i < TREE_STRING_LENGTH (str); i++)
- 	{
- 	  if (TREE_STRING_POINTER (str)[i] != 0)
- 	    {
- 	      src2 = NULL_TREE;
- 	      break;
- 	    }
- 	}
-     }
-   else if (gimple_store_p (defstmt)
-       && gimple_assign_single_p (defstmt)
-       && TREE_CODE (gimple_assign_rhs1 (defstmt)) == CONSTRUCTOR
-       && !gimple_clobber_p (defstmt))
-     src2 = gimple_assign_lhs (defstmt);
-   else if (gimple_call_builtin_p (defstmt, BUILT_IN_MEMSET)
- 	   && TREE_CODE (gimple_call_arg (defstmt, 0)) == ADDR_EXPR
- 	   && TREE_CODE (gimple_call_arg (defstmt, 1)) == INTEGER_CST)
-     {
-       src2 = TREE_OPERAND (gimple_call_arg (defstmt, 0), 0);
-       len2 = gimple_call_arg (defstmt, 2);
-       val = gimple_call_arg (defstmt, 1);
-       /* For non-0 val, we'd have to transform stmt from assignment
- 	 into memset (only if dest is addressable).  */
-       if (!integer_zerop (val) && is_gimple_assign (stmt))
- 	src2 = NULL_TREE;
-     }
- 
-   if (src2 == NULL_TREE)
-     return false;
- 
-   if (len2 == NULL_TREE)
-     len2 = (TREE_CODE (src2) == COMPONENT_REF
- 	    ? DECL_SIZE_UNIT (TREE_OPERAND (src2, 1))
- 	    : TYPE_SIZE_UNIT (TREE_TYPE (src2)));
-   if (len2 == NULL_TREE
-       || !poly_int_tree_p (len2))
-     return false;
- 
-   src = get_addr_base_and_unit_offset (src, &offset);
-   src2 = get_addr_base_and_unit_offset (src2, &offset2);
-   if (src == NULL_TREE
-       || src2 == NULL_TREE
-       || maybe_lt (offset, offset2))
-     return false;
- 
-   if (!operand_equal_p (src, src2, 0))
-     return false;
- 
-   /* [ src + offset2, src + offset2 + len2 - 1 ] is set to val.
-      Make sure that
-      [ src + offset, src + offset + len - 1 ] is a subset of that.  */
-   if (maybe_gt (wi::to_poly_offset (len) + (offset - offset2),
- 		wi::to_poly_offset (len2)))
-     return false;
- 
-   if (dump_file && (dump_flags & TDF_DETAILS))
-     {
-       fprintf (dump_file, "Simplified\n  ");
-       print_gimple_stmt (dump_file, stmt, 0, dump_flags);
-       fprintf (dump_file, "after previous\n  ");
-       print_gimple_stmt (dump_file, defstmt, 0, dump_flags);
-     }
- 
-   /* For simplicity, don't change the kind of the stmt,
-      turn dest = src; into dest = {}; and memcpy (&dest, &src, len);
-      into memset (&dest, val, len);
-      In theory we could change dest = src into memset if dest
-      is addressable (maybe beneficial if val is not 0), or
-      memcpy (&dest, &src, len) into dest = {} if len is the size
-      of dest, dest isn't volatile.  */
-   if (is_gimple_assign (stmt))
-     {
-       tree ctor = build_constructor (TREE_TYPE (dest), NULL);
-       gimple_assign_set_rhs_from_tree (gsip, ctor);
-       update_stmt (stmt);
-     }
-   else /* If stmt is memcpy, transform it into memset.  */
-     {
-       gcall *call = as_a <gcall *> (stmt);
-       tree fndecl = builtin_decl_implicit (BUILT_IN_MEMSET);
-       gimple_call_set_fndecl (call, fndecl);
-       gimple_call_set_fntype (call, TREE_TYPE (fndecl));
-       gimple_call_set_arg (call, 1, val);
-       update_stmt (stmt);
-     }
- 
-   if (dump_file && (dump_flags & TDF_DETAILS))
-     {
-       fprintf (dump_file, "into\n  ");
-       print_gimple_stmt (dump_file, stmt, 0, dump_flags);
-     }
-   return true;
- }
- 
  /* Fold function call to builtin mem{{,p}cpy,move}.  Try to detect and
     diagnose (otherwise undefined) overlapping copies without preventing
     folding.  When folded, GCC guarantees that overlapping memcpy has
--- 894,899 ----
*************** gimple_fold_builtin_memory_op (gimple_st
*** 1322,1336 ****
  	  return false;
  	}
  
-      /* Try to optimize the memcpy to memset if src and dest are addresses. */
-      if (code != BUILT_IN_MEMPCPY
- 	 && TREE_CODE (dest) == ADDR_EXPR
- 	 && TREE_CODE (src) == ADDR_EXPR
- 	 && TREE_CODE (len) == INTEGER_CST
- 	 && optimize_memcpy_to_memset (gsi, TREE_OPERAND (dest, 0),
- 				       TREE_OPERAND (src, 0), len))
- 	return true;
- 
        if (!tree_fits_shwi_p (len))
  	return false;
        if (!srctype
--- 1173,1178 ----
*************** has_use_on_stmt (tree name, gimple *stmt
*** 6178,6184 ****
  
  /* Add the lhs of each statement of SEQ to DCE_WORKLIST. */
  
! static void
  mark_lhs_in_seq_for_dce (bitmap dce_worklist, gimple_seq seq)
  {
    if (!dce_worklist)
--- 6020,6026 ----
  
  /* Add the lhs of each statement of SEQ to DCE_WORKLIST. */
  
! void
  mark_lhs_in_seq_for_dce (bitmap dce_worklist, gimple_seq seq)
  {
    if (!dce_worklist)
*************** replace_stmt_with_simplification (gimple
*** 6239,6246 ****
        auto code = tree_code (res_op->code);
        if (TREE_CODE_CLASS (code) == tcc_comparison
  	  /* GIMPLE_CONDs condition may not throw.  */
! 	  && (!flag_exceptions
! 	      || !cfun->can_throw_non_call_exceptions
  	      || !operation_could_trap_p (code,
  					  FLOAT_TYPE_P (TREE_TYPE (ops[0])),
  					  false, NULL_TREE)))
--- 6081,6089 ----
        auto code = tree_code (res_op->code);
        if (TREE_CODE_CLASS (code) == tcc_comparison
  	  /* GIMPLE_CONDs condition may not throw.  */
! 	  && ((cfun
! 	       && (!flag_exceptions
! 		   || !cfun->can_throw_non_call_exceptions))
  	      || !operation_could_trap_p (code,
  					  FLOAT_TYPE_P (TREE_TYPE (ops[0])),
  					  false, NULL_TREE)))
*************** replace_stmt_with_simplification (gimple
*** 6276,6281 ****
--- 6119,6151 ----
  	}
        else if (!inplace)
  	{
+ 	  /* For throwing comparisons, see if the GIMPLE_COND is the same as
+ 	     the comparison would be.
+ 	     This can happen due to the match pattern for
+ 	     `(ne (cmp @0 @1) integer_zerop)` which creates a new expression
+ 	     for the comparison.  */
+ 	  if (TREE_CODE_CLASS (code) == tcc_comparison
+ 	      && (!cfun
+ 		  || (flag_exceptions
+ 		      && cfun->can_throw_non_call_exceptions))
+ 	      && operation_could_trap_p (code,
+ 					 FLOAT_TYPE_P (TREE_TYPE (ops[0])),
+ 					 false, NULL_TREE))
+ 	    {
+ 	      tree lhs = gimple_cond_lhs (cond_stmt);
+ 	      if (gimple_cond_code (cond_stmt) == NE_EXPR
+ 		  && TREE_CODE (lhs) == SSA_NAME
+ 		  && INTEGRAL_TYPE_P (TREE_TYPE (lhs))
+ 		  && integer_zerop (gimple_cond_rhs (cond_stmt)))
+ 		{
+ 		  gimple *s = SSA_NAME_DEF_STMT (lhs);
+ 		  if (is_gimple_assign (s)
+ 		      && gimple_assign_rhs_code (s) == code
+ 		      && operand_equal_p (gimple_assign_rhs1 (s), ops[0])
+ 		      && operand_equal_p (gimple_assign_rhs2 (s), ops[1]))
+ 		    return false;
+ 		}
+ 	    }
  	  tree res = maybe_push_res_to_seq (res_op, seq);
  	  if (!res)
  	    return false;
*************** fold_stmt_1 (gimple_stmt_iterator *gsi,
*** 6706,6721 ****
      {
      case GIMPLE_ASSIGN:
        {
- 	if (gimple_assign_load_p (stmt) && gimple_store_p (stmt))
- 	  {
- 	    if (optimize_memcpy_to_memset (gsi, gimple_assign_lhs (stmt),
- 					   gimple_assign_rhs1 (stmt),
- 					   /* len = */NULL_TREE))
- 	      {
- 		changed = true;
- 		break;
- 	      }
- 	  }
  	/* Try to canonicalize for boolean-typed X the comparisons
  	   X == 0, X == 1, X != 0, and X != 1.  */
  	if (gimple_assign_rhs_code (stmt) == EQ_EXPR
--- 6576,6581 ----
diff -Nrcpad gcc-16-20250511/gcc/gimple-fold.h gcc-16-20250518/gcc/gimple-fold.h
*** gcc-16-20250511/gcc/gimple-fold.h	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/gimple-fold.h	Sun May 18 22:32:08 2025
*************** gimple_build_round_up (gimple_seq *seq,
*** 264,269 ****
--- 264,270 ----
  
  extern bool gimple_stmt_nonnegative_warnv_p (gimple *, bool *, int = 0);
  extern bool gimple_stmt_integer_valued_real_p (gimple *, int = 0);
+ extern void mark_lhs_in_seq_for_dce (bitmap, gimple_seq);
  
  /* In gimple-match.cc.  */
  extern tree gimple_simplify (enum tree_code, tree, tree,
diff -Nrcpad gcc-16-20250511/gcc/gimple.h gcc-16-20250518/gcc/gimple.h
*** gcc-16-20250511/gcc/gimple.h	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/gimple.h	Sun May 18 22:32:08 2025
*************** gimple_cond_code (const gimple *gs)
*** 3716,3721 ****
--- 3716,3722 ----
  inline void
  gimple_cond_set_code (gcond *gs, enum tree_code code)
  {
+   gcc_gimple_checking_assert (TREE_CODE_CLASS (code) == tcc_comparison);
    gs->subcode = code;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/ifcvt.cc gcc-16-20250518/gcc/ifcvt.cc
*** gcc-16-20250511/gcc/ifcvt.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/ifcvt.cc	Sun May 18 22:32:08 2025
*************** noce_emit_store_flag (struct noce_if_inf
*** 877,884 ****
  
        if (recog_memoized (insn) >= 0)
  	{
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  	  emit_insn (seq);
  
  	  if_info->cond_earliest = if_info->jump;
--- 877,883 ----
  
        if (recog_memoized (insn) >= 0)
  	{
! 	  rtx_insn *seq = end_sequence ();
  	  emit_insn (seq);
  
  	  if_info->cond_earliest = if_info->jump;
*************** noce_emit_move_insn (rtx x, rtx y)
*** 975,982 ****
        insn = (OBJECT_P (y) || CONSTANT_P (y) || GET_CODE (y) == SUBREG)
  	     ? emit_move_insn (x, y)
  	     : emit_insn (gen_rtx_SET (x, y));
!       seq = get_insns ();
!       end_sequence ();
  
        if (recog_memoized (insn) <= 0)
  	{
--- 974,980 ----
        insn = (OBJECT_P (y) || CONSTANT_P (y) || GET_CODE (y) == SUBREG)
  	     ? emit_move_insn (x, y)
  	     : emit_insn (gen_rtx_SET (x, y));
!       seq = end_sequence ();
  
        if (recog_memoized (insn) <= 0)
  	{
*************** noce_emit_cmove (struct noce_if_info *if
*** 1748,1755 ****
  
        if (recog_memoized (insn) >= 0)
  	{
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  	  emit_insn (seq);
  
  	  return x;
--- 1746,1752 ----
  
        if (recog_memoized (insn) >= 0)
  	{
! 	  rtx_insn *seq = end_sequence ();
  	  emit_insn (seq);
  
  	  return x;
diff -Nrcpad gcc-16-20250511/gcc/init-regs.cc gcc-16-20250518/gcc/init-regs.cc
*** gcc-16-20250511/gcc/init-regs.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/init-regs.cc	Sun May 18 22:32:08 2025
*************** initialize_uninitialized_regs (void)
*** 109,116 ****
  		     CONST0_RTX defined.  */
  		  if (CONST0_RTX (GET_MODE (reg)))
  		    emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
! 		  move_insn = get_insns ();
! 		  end_sequence ();
  		  emit_insn_before (move_insn, insn);
  		  if (dump_file)
  		    fprintf (dump_file,
--- 109,115 ----
  		     CONST0_RTX defined.  */
  		  if (CONST0_RTX (GET_MODE (reg)))
  		    emit_move_insn (reg, CONST0_RTX (GET_MODE (reg)));
! 		  move_insn = end_sequence ();
  		  emit_insn_before (move_insn, insn);
  		  if (dump_file)
  		    fprintf (dump_file,
diff -Nrcpad gcc-16-20250511/gcc/internal-fn.cc gcc-16-20250518/gcc/internal-fn.cc
*** gcc-16-20250511/gcc/internal-fn.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/internal-fn.cc	Sun May 18 22:32:08 2025
*************** expand_POPCOUNT (internal_fn fn, gcall *
*** 5552,5559 ****
    do_pending_stack_adjust ();
    start_sequence ();
    expand_unary_optab_fn (fn, stmt, popcount_optab);
!   rtx_insn *popcount_insns = get_insns ();
!   end_sequence ();
    start_sequence ();
    rtx plhs = expand_normal (lhs);
    rtx pcmp = emit_store_flag (NULL_RTX, EQ, plhs, const1_rtx, lhsmode, 0, 0);
--- 5552,5558 ----
    do_pending_stack_adjust ();
    start_sequence ();
    expand_unary_optab_fn (fn, stmt, popcount_optab);
!   rtx_insn *popcount_insns = end_sequence ();
    start_sequence ();
    rtx plhs = expand_normal (lhs);
    rtx pcmp = emit_store_flag (NULL_RTX, EQ, plhs, const1_rtx, lhsmode, 0, 0);
*************** expand_POPCOUNT (internal_fn fn, gcall *
*** 5564,5571 ****
        emit_insn (popcount_insns);
        return;
      }
!   rtx_insn *popcount_cmp_insns = get_insns ();
!   end_sequence ();
    start_sequence ();
    rtx op0 = expand_normal (arg);
    rtx argm1 = expand_simple_binop (mode, PLUS, op0, constm1_rtx, NULL_RTX,
--- 5563,5569 ----
        emit_insn (popcount_insns);
        return;
      }
!   rtx_insn *popcount_cmp_insns = end_sequence ();
    start_sequence ();
    rtx op0 = expand_normal (arg);
    rtx argm1 = expand_simple_binop (mode, PLUS, op0, constm1_rtx, NULL_RTX,
*************** expand_POPCOUNT (internal_fn fn, gcall *
*** 5583,5590 ****
      cmp = emit_store_flag (NULL_RTX, GTU, argxorargm1, argm1, mode, 1, 1);
    if (cmp == NULL_RTX)
      goto fail;
!   rtx_insn *cmp_insns = get_insns ();
!   end_sequence ();
    unsigned popcount_cost = (seq_cost (popcount_insns, speed_p)
  			    + seq_cost (popcount_cmp_insns, speed_p));
    unsigned cmp_cost = seq_cost (cmp_insns, speed_p);
--- 5581,5587 ----
      cmp = emit_store_flag (NULL_RTX, GTU, argxorargm1, argm1, mode, 1, 1);
    if (cmp == NULL_RTX)
      goto fail;
!   rtx_insn *cmp_insns = end_sequence ();
    unsigned popcount_cost = (seq_cost (popcount_insns, speed_p)
  			    + seq_cost (popcount_cmp_insns, speed_p));
    unsigned cmp_cost = seq_cost (cmp_insns, speed_p);
*************** expand_POPCOUNT (internal_fn fn, gcall *
*** 5612,5619 ****
  	    goto fail;
  	}
        emit_move_insn (plhs, cmp);
!       rtx_insn *all_insns = get_insns ();
!       end_sequence ();
        emit_insn (all_insns);
      }
  }
--- 5609,5615 ----
  	    goto fail;
  	}
        emit_move_insn (plhs, cmp);
!       rtx_insn *all_insns = end_sequence ();
        emit_insn (all_insns);
      }
  }
diff -Nrcpad gcc-16-20250511/gcc/ipa-cp.cc gcc-16-20250518/gcc/ipa-cp.cc
*** gcc-16-20250511/gcc/ipa-cp.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/ipa-cp.cc	Sun May 18 22:32:08 2025
*************** ipcp_lattice<valtype>::print (FILE * f,
*** 288,294 ****
  	  else
  	    fprintf (f, " [scc: %i, from:", val->scc_no);
  	  for (s = val->sources; s; s = s->next)
! 	    fprintf (f, " %i(%f)", s->cs->caller->order,
  		     s->cs->sreal_frequency ().to_double ());
  	  fprintf (f, "]");
  	}
--- 288,294 ----
  	  else
  	    fprintf (f, " [scc: %i, from:", val->scc_no);
  	  for (s = val->sources; s; s = s->next)
! 	    fprintf (f, " %i(%f)", s->cs->caller->get_uid (),
  		     s->cs->sreal_frequency ().to_double ());
  	  fprintf (f, "]");
  	}
diff -Nrcpad gcc-16-20250511/gcc/ipa-sra.cc gcc-16-20250518/gcc/ipa-sra.cc
*** gcc-16-20250511/gcc/ipa-sra.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/ipa-sra.cc	Sun May 18 22:32:08 2025
*************** ipa_sra_summarize_function (cgraph_node
*** 4644,4650 ****
  {
    if (dump_file)
      fprintf (dump_file, "Creating summary for %s/%i:\n", node->name (),
! 	     node->order);
    gcc_obstack_init (&gensum_obstack);
    loaded_decls = new hash_set<tree>;
  
--- 4644,4650 ----
  {
    if (dump_file)
      fprintf (dump_file, "Creating summary for %s/%i:\n", node->name (),
! 	     node->get_uid ());
    gcc_obstack_init (&gensum_obstack);
    loaded_decls = new hash_set<tree>;
  
diff -Nrcpad gcc-16-20250511/gcc/ira-emit.cc gcc-16-20250518/gcc/ira-emit.cc
*** gcc-16-20250511/gcc/ira-emit.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/ira-emit.cc	Sun May 18 22:32:08 2025
*************** emit_move_list (move_t list, int freq)
*** 925,932 ****
        from = allocno_emit_reg (list->from);
        from_regno = REGNO (from);
        emit_move_insn (to, from);
!       list->insn = get_insns ();
!       end_sequence ();
        for (insn = list->insn; insn != NULL_RTX; insn = NEXT_INSN (insn))
  	{
  	  /* The reload needs to have set up insn codes.  If the
--- 925,931 ----
        from = allocno_emit_reg (list->from);
        from_regno = REGNO (from);
        emit_move_insn (to, from);
!       list->insn = end_sequence ();
        for (insn = list->insn; insn != NULL_RTX; insn = NEXT_INSN (insn))
  	{
  	  /* The reload needs to have set up insn codes.  If the
*************** emit_move_list (move_t list, int freq)
*** 984,991 ****
  	}
        ira_overall_cost += cost;
      }
!   result = get_insns ();
!   end_sequence ();
    return result;
  }
  
--- 983,989 ----
  	}
        ira_overall_cost += cost;
      }
!   result = end_sequence ();
    return result;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/ira.cc gcc-16-20250518/gcc/ira.cc
*** gcc-16-20250511/gcc/ira.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/ira.cc	Sun May 18 22:32:08 2025
*************** ira (FILE *f)
*** 5609,5616 ****
  			 not put a note as commit_edges insertion will
  			 fail.  */
  		      emit_insn (gen_rtx_USE (VOIDmode, const1_rtx));
! 		      rtx_insn *insns = get_insns ();
! 		      end_sequence ();
  		      insert_insn_on_edge (insns, e);
  		    }
  		break;
--- 5609,5615 ----
  			 not put a note as commit_edges insertion will
  			 fail.  */
  		      emit_insn (gen_rtx_USE (VOIDmode, const1_rtx));
! 		      rtx_insn *insns = end_sequence ();
  		      insert_insn_on_edge (insns, e);
  		    }
  		break;
diff -Nrcpad gcc-16-20250511/gcc/loop-doloop.cc gcc-16-20250518/gcc/loop-doloop.cc
*** gcc-16-20250511/gcc/loop-doloop.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/loop-doloop.cc	Sun May 18 22:32:08 2025
*************** doloop_modify (class loop *loop, class n
*** 598,605 ****
  	  /* Reset the counter to zero in the set_zero block.  */
  	  start_sequence ();
  	  convert_move (counter_reg, noloop, 0);
! 	  sequence = get_insns ();
! 	  end_sequence ();
  	  emit_insn_after (sequence, BB_END (set_zero));
  
  	  set_immediate_dominator (CDI_DOMINATORS, set_zero,
--- 598,604 ----
  	  /* Reset the counter to zero in the set_zero block.  */
  	  start_sequence ();
  	  convert_move (counter_reg, noloop, 0);
! 	  sequence = end_sequence ();
  	  emit_insn_after (sequence, BB_END (set_zero));
  
  	  set_immediate_dominator (CDI_DOMINATORS, set_zero,
diff -Nrcpad gcc-16-20250511/gcc/loop-unroll.cc gcc-16-20250518/gcc/loop-unroll.cc
*** gcc-16-20250511/gcc/loop-unroll.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/loop-unroll.cc	Sun May 18 22:32:08 2025
*************** compare_and_jump_seq (rtx op0, rtx op1,
*** 837,844 ****
    if (prob.initialized_p ())
      add_reg_br_prob_note (jump, prob);
  
!   seq = get_insns ();
!   end_sequence ();
  
    return seq;
  }
--- 837,843 ----
    if (prob.initialized_p ())
      add_reg_br_prob_note (jump, prob);
  
!   seq = end_sequence ();
  
    return seq;
  }
*************** unroll_loop_runtime_iterations (class lo
*** 954,961 ****
  			       niter, gen_int_mode (max_unroll, desc->mode),
  			       NULL_RTX, 0, OPTAB_LIB_WIDEN);
  
!   init_code = get_insns ();
!   end_sequence ();
    unshare_all_rtl_in_chain (init_code);
  
    /* Precondition the loop.  */
--- 953,959 ----
  			       niter, gen_int_mode (max_unroll, desc->mode),
  			       NULL_RTX, 0, OPTAB_LIB_WIDEN);
  
!   init_code = end_sequence ();
    unshare_all_rtl_in_chain (init_code);
  
    /* Precondition the loop.  */
*************** insert_base_initialization (struct iv_to
*** 1700,1707 ****
    expr = force_operand (expr, ivts->base_var);
    if (expr != ivts->base_var)
      emit_move_insn (ivts->base_var, expr);
!   seq = get_insns ();
!   end_sequence ();
  
    emit_insn_before (seq, insn);
  }
--- 1698,1704 ----
    expr = force_operand (expr, ivts->base_var);
    if (expr != ivts->base_var)
      emit_move_insn (ivts->base_var, expr);
!   seq = end_sequence ();
  
    emit_insn_before (seq, insn);
  }
*************** split_iv (struct iv_to_split *ivts, rtx_
*** 1742,1749 ****
    expr = force_operand (expr, var);
    if (expr != var)
      emit_move_insn (var, expr);
!   seq = get_insns ();
!   end_sequence ();
    emit_insn_before (seq, insn);
  
    if (validate_change (insn, loc, var, 0))
--- 1739,1745 ----
    expr = force_operand (expr, var);
    if (expr != var)
      emit_move_insn (var, expr);
!   seq = end_sequence ();
    emit_insn_before (seq, insn);
  
    if (validate_change (insn, loc, var, 0))
*************** split_iv (struct iv_to_split *ivts, rtx_
*** 1761,1768 ****
    src = force_operand (src, dest);
    if (src != dest)
      emit_move_insn (dest, src);
!   seq = get_insns ();
!   end_sequence ();
  
    emit_insn_before (seq, insn);
    delete_insn (insn);
--- 1757,1763 ----
    src = force_operand (src, dest);
    if (src != dest)
      emit_move_insn (dest, src);
!   seq = end_sequence ();
  
    emit_insn_before (seq, insn);
    delete_insn (insn);
*************** insert_var_expansion_initialization (str
*** 1890,1897 ****
        gcc_unreachable ();
      }
  
!   seq = get_insns ();
!   end_sequence ();
  
    emit_insn_after (seq, BB_END (place));
  }
--- 1885,1891 ----
        gcc_unreachable ();
      }
  
!   seq = end_sequence ();
  
    emit_insn_after (seq, BB_END (place));
  }
*************** combine_var_copies_in_loop_exit (struct
*** 1937,1944 ****
    expr = force_operand (sum, ve->reg);
    if (expr != ve->reg)
      emit_move_insn (ve->reg, expr);
!   seq = get_insns ();
!   end_sequence ();
  
    insn = BB_HEAD (place);
    while (!NOTE_INSN_BASIC_BLOCK_P (insn))
--- 1931,1937 ----
    expr = force_operand (sum, ve->reg);
    if (expr != ve->reg)
      emit_move_insn (ve->reg, expr);
!   seq = end_sequence ();
  
    insn = BB_HEAD (place);
    while (!NOTE_INSN_BASIC_BLOCK_P (insn))
diff -Nrcpad gcc-16-20250511/gcc/lower-subreg.cc gcc-16-20250518/gcc/lower-subreg.cc
*** gcc-16-20250511/gcc/lower-subreg.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/lower-subreg.cc	Sun May 18 22:32:08 2025
*************** resolve_simple_move (rtx set, rtx_insn *
*** 1147,1154 ****
        resolve_simple_move (smove, minsn);
      }
  
!   insns = get_insns ();
!   end_sequence ();
  
    copy_reg_eh_region_note_forward (insn, insns, NULL_RTX);
  
--- 1147,1153 ----
        resolve_simple_move (smove, minsn);
      }
  
!   insns = end_sequence ();
  
    copy_reg_eh_region_note_forward (insn, insns, NULL_RTX);
  
*************** resolve_shift_zext (rtx_insn *insn, bool
*** 1418,1426 ****
  	emit_move_insn (dest_upper, upper_src);
      }
  
!   insns = get_insns ();
! 
!   end_sequence ();
  
    emit_insn_before (insns, insn);
  
--- 1417,1423 ----
  	emit_move_insn (dest_upper, upper_src);
      }
  
!   insns = end_sequence ();
  
    emit_insn_before (insns, insn);
  
diff -Nrcpad gcc-16-20250511/gcc/lra-constraints.cc gcc-16-20250518/gcc/lra-constraints.cc
*** gcc-16-20250511/gcc/lra-constraints.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/lra-constraints.cc	Sun May 18 22:32:08 2025
*************** match_reload (signed char out, signed ch
*** 1199,1206 ****
       accurate.  */
    narrow_reload_pseudo_class (in_rtx, goal_class);
    lra_emit_move (copy_rtx (new_in_reg), in_rtx);
!   *before = get_insns ();
!   end_sequence ();
    /* Add the new pseudo to consider values of subsequent input reload
       pseudos.  */
    lra_assert (curr_insn_input_reloads_num < LRA_MAX_INSN_RELOADS);
--- 1199,1205 ----
       accurate.  */
    narrow_reload_pseudo_class (in_rtx, goal_class);
    lra_emit_move (copy_rtx (new_in_reg), in_rtx);
!   *before = end_sequence ();
    /* Add the new pseudo to consider values of subsequent input reload
       pseudos.  */
    lra_assert (curr_insn_input_reloads_num < LRA_MAX_INSN_RELOADS);
*************** match_reload (signed char out, signed ch
*** 1235,1242 ****
  	out_rtx = gen_rtx_STRICT_LOW_PART (VOIDmode, out_rtx);
        lra_emit_move (out_rtx, copy_rtx (new_out_reg));
        emit_insn (*after);
!       *after = get_insns ();
!       end_sequence ();
      }
    *curr_id->operand_loc[out] = new_out_reg;
    lra_update_dup (curr_id, out);
--- 1234,1240 ----
  	out_rtx = gen_rtx_STRICT_LOW_PART (VOIDmode, out_rtx);
        lra_emit_move (out_rtx, copy_rtx (new_out_reg));
        emit_insn (*after);
!       *after = end_sequence ();
      }
    *curr_id->operand_loc[out] = new_out_reg;
    lra_update_dup (curr_id, out);
*************** check_and_process_move (bool *change_p,
*** 1444,1451 ****
        emit_insn (GEN_FCN (sri.icode) (new_reg != NULL_RTX ? new_reg : dest,
  				      src, scratch_reg));
      }
!   before = get_insns ();
!   end_sequence ();
    lra_process_new_insns (curr_insn, before, NULL, "Inserting the move");
    if (new_reg != NULL_RTX)
      SET_SRC (curr_insn_set) = new_reg;
--- 1442,1448 ----
        emit_insn (GEN_FCN (sri.icode) (new_reg != NULL_RTX ? new_reg : dest,
  				      src, scratch_reg));
      }
!   before = end_sequence ();
    lra_process_new_insns (curr_insn, before, NULL, "Inserting the move");
    if (new_reg != NULL_RTX)
      SET_SRC (curr_insn_set) = new_reg;
*************** process_addr_reg (rtx *loc, bool check_o
*** 1612,1619 ****
      {
        push_to_sequence (*before);
        lra_emit_move (new_reg, reg);
!       *before = get_insns ();
!       end_sequence ();
      }
    *loc = new_reg;
    if (after != NULL)
--- 1609,1615 ----
      {
        push_to_sequence (*before);
        lra_emit_move (new_reg, reg);
!       *before = end_sequence ();
      }
    *loc = new_reg;
    if (after != NULL)
*************** process_addr_reg (rtx *loc, bool check_o
*** 1621,1628 ****
        start_sequence ();
        lra_emit_move (before_p ? copy_rtx (reg) : reg, new_reg);
        emit_insn (*after);
!       *after = get_insns ();
!       end_sequence ();
      }
    return true;
  }
--- 1617,1623 ----
        start_sequence ();
        lra_emit_move (before_p ? copy_rtx (reg) : reg, new_reg);
        emit_insn (*after);
!       *after = end_sequence ();
      }
    return true;
  }
*************** insert_move_for_subreg (rtx_insn **befor
*** 1639,1654 ****
      {
        push_to_sequence (*before);
        lra_emit_move (newreg, origreg);
!       *before = get_insns ();
!       end_sequence ();
      }
    if (after)
      {
        start_sequence ();
        lra_emit_move (origreg, newreg);
        emit_insn (*after);
!       *after = get_insns ();
!       end_sequence ();
      }
  }
  
--- 1634,1647 ----
      {
        push_to_sequence (*before);
        lra_emit_move (newreg, origreg);
!       *before = end_sequence ();
      }
    if (after)
      {
        start_sequence ();
        lra_emit_move (origreg, newreg);
        emit_insn (*after);
!       *after = end_sequence ();
      }
  }
  
*************** process_address_1 (int nop, bool check_o
*** 4036,4043 ****
        lra_emit_move (new_reg, addr);
        *ad.inner = new_reg;
      }
!   *before = get_insns ();
!   end_sequence ();
    return true;
  }
  
--- 4029,4035 ----
        lra_emit_move (new_reg, addr);
        *ad.inner = new_reg;
      }
!   *before = end_sequence ();
    return true;
  }
  
*************** curr_insn_transform (bool check_only_p)
*** 4446,4453 ****
  	  push_to_sequence (before);
  	  before = emit_spill_move (true, new_reg, src);
  	  emit_insn (before);
! 	  before = get_insns ();
! 	  end_sequence ();
  	  lra_process_new_insns (curr_insn, before, NULL, "Changing on");
  	  lra_set_insn_deleted (curr_insn);
  	}
--- 4438,4444 ----
  	  push_to_sequence (before);
  	  before = emit_spill_move (true, new_reg, src);
  	  emit_insn (before);
! 	  before = end_sequence ();
  	  lra_process_new_insns (curr_insn, before, NULL, "Changing on");
  	  lra_set_insn_deleted (curr_insn);
  	}
*************** curr_insn_transform (bool check_only_p)
*** 4467,4474 ****
  	  push_to_sequence (before);
  	  before = emit_spill_move (true, new_reg, src);
  	  emit_insn (before);
! 	  before = get_insns ();
! 	  end_sequence ();
  	  lra_process_new_insns (curr_insn, before, NULL,
  				 "Inserting the sec. move");
  	}
--- 4458,4464 ----
  	  push_to_sequence (before);
  	  before = emit_spill_move (true, new_reg, src);
  	  emit_insn (before);
! 	  before = end_sequence ();
  	  lra_process_new_insns (curr_insn, before, NULL,
  				 "Inserting the sec. move");
  	}
*************** curr_insn_transform (bool check_only_p)
*** 4739,4746 ****
  	      if (align_p)
  		emit_move_insn (new_reg, gen_rtx_AND (GET_MODE (new_reg), new_reg, XEXP (*loc, 1)));
  	    }
! 	  before = get_insns ();
! 	  end_sequence ();
  	  *loc = new_reg;
  	  lra_update_dup (curr_id, i);
  	}
--- 4729,4735 ----
  	      if (align_p)
  		emit_move_insn (new_reg, gen_rtx_AND (GET_MODE (new_reg), new_reg, XEXP (*loc, 1)));
  	    }
! 	  before = end_sequence ();
  	  *loc = new_reg;
  	  lra_update_dup (curr_id, i);
  	}
*************** curr_insn_transform (bool check_only_p)
*** 4813,4820 ****
  	    {
  	      push_to_sequence (before);
  	      lra_emit_move (new_reg, old);
! 	      before = get_insns ();
! 	      end_sequence ();
  	    }
  	  *loc = new_reg;
  	  if (type != OP_IN
--- 4802,4808 ----
  	    {
  	      push_to_sequence (before);
  	      lra_emit_move (new_reg, old);
! 	      before = end_sequence ();
  	    }
  	  *loc = new_reg;
  	  if (type != OP_IN
*************** curr_insn_transform (bool check_only_p)
*** 4825,4832 ****
  	      start_sequence ();
  	      lra_emit_move (type == OP_INOUT ? copy_rtx (old) : old, new_reg);
  	      emit_insn (after);
! 	      after = get_insns ();
! 	      end_sequence ();
  	      *loc = new_reg;
  	    }
  	  for (j = 0; j < goal_alt_dont_inherit_ops_num; j++)
--- 4813,4819 ----
  	      start_sequence ();
  	      lra_emit_move (type == OP_INOUT ? copy_rtx (old) : old, new_reg);
  	      emit_insn (after);
! 	      after = end_sequence ();
  	      *loc = new_reg;
  	    }
  	  for (j = 0; j < goal_alt_dont_inherit_ops_num; j++)
*************** inherit_reload_reg (bool def_p, int orig
*** 5968,5975 ****
      lra_emit_move (original_reg, new_reg);
    else
      lra_emit_move (new_reg, original_reg);
!   new_insns = get_insns ();
!   end_sequence ();
    if (NEXT_INSN (new_insns) != NULL_RTX)
      {
        if (lra_dump_file != NULL)
--- 5955,5961 ----
      lra_emit_move (original_reg, new_reg);
    else
      lra_emit_move (new_reg, original_reg);
!   new_insns = end_sequence ();
    if (NEXT_INSN (new_insns) != NULL_RTX)
      {
        if (lra_dump_file != NULL)
*************** process_invariant_for_inheritance (rtx d
*** 6608,6621 ****
  	  lra_reg_info[REGNO (new_reg)].restore_rtx = PATTERN (insn);
  	  start_sequence ();
  	  lra_emit_move (new_reg, dst_reg);
! 	  new_insns = get_insns ();
! 	  end_sequence ();
  	  lra_process_new_insns (curr_insn, NULL, new_insns,
  				 "Add invariant inheritance<-original");
  	  start_sequence ();
  	  lra_emit_move (SET_DEST (insn_set), new_reg);
! 	  new_insns = get_insns ();
! 	  end_sequence ();
  	  lra_process_new_insns (insn, NULL, new_insns,
  				 "Changing reload<-inheritance");
  	  lra_set_insn_deleted (insn);
--- 6594,6605 ----
  	  lra_reg_info[REGNO (new_reg)].restore_rtx = PATTERN (insn);
  	  start_sequence ();
  	  lra_emit_move (new_reg, dst_reg);
! 	  new_insns = end_sequence ();
  	  lra_process_new_insns (curr_insn, NULL, new_insns,
  				 "Add invariant inheritance<-original");
  	  start_sequence ();
  	  lra_emit_move (SET_DEST (insn_set), new_reg);
! 	  new_insns = end_sequence ();
  	  lra_process_new_insns (insn, NULL, new_insns,
  				 "Changing reload<-inheritance");
  	  lra_set_insn_deleted (insn);
*************** inherit_in_ebb (rtx_insn *head, rtx_insn
*** 7117,7124 ****
  		    {
  		      start_sequence ();
  		      emit_move_insn (cheap, copy_rtx (dest));
! 		      restore = get_insns ();
! 		      end_sequence ();
  		      lra_process_new_insns (curr_insn, NULL, restore,
  					     "Inserting call parameter restore");
  		      /* We don't need to save/restore of the pseudo from
--- 7101,7107 ----
  		    {
  		      start_sequence ();
  		      emit_move_insn (cheap, copy_rtx (dest));
! 		      restore = end_sequence ();
  		      lra_process_new_insns (curr_insn, NULL, restore,
  					     "Inserting call parameter restore");
  		      /* We don't need to save/restore of the pseudo from
*************** remove_inheritance_pseudos (bitmap remov
*** 7498,7505 ****
  		  /* We cannot just change the source.  It might be
  		     an insn different from the move.  */
  		  emit_insn (lra_reg_info[sregno].restore_rtx);
! 		  rtx_insn *new_insns = get_insns ();
! 		  end_sequence ();
  		  lra_assert (single_set (new_insns) != NULL
  			      && SET_DEST (set) == SET_DEST (single_set (new_insns)));
  		  lra_process_new_insns (curr_insn, NULL, new_insns,
--- 7481,7487 ----
  		  /* We cannot just change the source.  It might be
  		     an insn different from the move.  */
  		  emit_insn (lra_reg_info[sregno].restore_rtx);
! 		  rtx_insn *new_insns = end_sequence ();
  		  lra_assert (single_set (new_insns) != NULL
  			      && SET_DEST (set) == SET_DEST (single_set (new_insns)));
  		  lra_process_new_insns (curr_insn, NULL, new_insns,
diff -Nrcpad gcc-16-20250511/gcc/lra-remat.cc gcc-16-20250518/gcc/lra-remat.cc
*** gcc-16-20250511/gcc/lra-remat.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/lra-remat.cc	Sun May 18 22:32:08 2025
*************** do_remat (void)
*** 1180,1187 ****
  
  		      start_sequence ();
  		      emit_insn (remat_pat);
! 		      remat_insn = get_insns ();
! 		      end_sequence ();
  		      if (recog_memoized (remat_insn) < 0)
  			remat_insn = NULL;
  		      cand_sp_offset = cand_id->sp_offset;
--- 1180,1186 ----
  
  		      start_sequence ();
  		      emit_insn (remat_pat);
! 		      remat_insn = end_sequence ();
  		      if (recog_memoized (remat_insn) < 0)
  			remat_insn = NULL;
  		      cand_sp_offset = cand_id->sp_offset;
diff -Nrcpad gcc-16-20250511/gcc/lto-streamer-out.cc gcc-16-20250518/gcc/lto-streamer-out.cc
*** gcc-16-20250511/gcc/lto-streamer-out.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/lto-streamer-out.cc	Sun May 18 22:32:08 2025
*************** hash_tree (struct streamer_tree_cache_d
*** 1256,1262 ****
  
    if (CODE_CONTAINS_STRUCT (code, TS_DECL_COMMON))
      {
!       hstate.add_hwi (DECL_MODE (t));
        hstate.add_flag (DECL_NONLOCAL (t));
        hstate.add_flag (DECL_VIRTUAL_P (t));
        hstate.add_flag (DECL_IGNORED_P (t));
--- 1256,1272 ----
  
    if (CODE_CONTAINS_STRUCT (code, TS_DECL_COMMON))
      {
!       /* Similar to TYPE_MODE, avoid streaming out host-specific DECL_MODE
! 	 for aggregate type with offloading enabled, and while streaming-in
! 	 recompute appropriate DECL_MODE for accelerator.  */
!       if (lto_stream_offload_p
! 	  && (VAR_P (t)
! 	      || TREE_CODE (t) == PARM_DECL
! 	      || TREE_CODE (t) == FIELD_DECL)
! 	  && AGGREGATE_TYPE_P (TREE_TYPE (t)))
! 	hstate.add_hwi (VOIDmode);
!       else
! 	hstate.add_hwi (DECL_MODE (t));
        hstate.add_flag (DECL_NONLOCAL (t));
        hstate.add_flag (DECL_VIRTUAL_P (t));
        hstate.add_flag (DECL_IGNORED_P (t));
*************** hash_tree (struct streamer_tree_cache_d
*** 1354,1360 ****
  
    if (CODE_CONTAINS_STRUCT (code, TS_TYPE_COMMON))
      {
!       hstate.add_hwi (TYPE_MODE (t));
        /* TYPE_NO_FORCE_BLK is private to stor-layout and need
  	 no streaming.  */
        hstate.add_flag (TYPE_PACKED (t));
--- 1364,1382 ----
  
    if (CODE_CONTAINS_STRUCT (code, TS_TYPE_COMMON))
      {
!       /* For offloading, avoid streaming out TYPE_MODE for aggregate type since
! 	 it may be host-specific. For eg, aarch64 uses OImode for ARRAY_TYPE
! 	 whose size is 256-bits, which is not representable on accelerator.
! 	 Instead stream out VOIDmode, and while streaming-in, recompute
! 	 appropriate TYPE_MODE for accelerator.  */
!       if (lto_stream_offload_p
! 	  && (AGGREGATE_TYPE_P (t) || VECTOR_TYPE_P (t)))
! 	hstate.add_hwi (VOIDmode);
!       /* for VECTOR_TYPE, TYPE_MODE reevaluates the mode using target_flags
! 	 not necessary valid in a global context.
! 	 Use the raw value previously set by layout_type.  */
!       else
! 	hstate.add_hwi (TYPE_MODE_RAW (t));
        /* TYPE_NO_FORCE_BLK is private to stor-layout and need
  	 no streaming.  */
        hstate.add_flag (TYPE_PACKED (t));
diff -Nrcpad gcc-16-20250511/gcc/m2/ChangeLog gcc-16-20250518/gcc/m2/ChangeLog
*** gcc-16-20250511/gcc/m2/ChangeLog	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/m2/ChangeLog	Sun May 18 22:32:08 2025
***************
*** 1,3 ****
--- 1,14 ----
+ 2025-05-13  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/120253
+ 	* m2.flex (FIRST_COLUMN): New define.
+ 	(updatepos): Remove commented code.
+ 	(consumeLine): Assign column to FIRST_COLUMN.
+ 	(initLine): Ditto.
+ 	(m2flex_GetColumnNo): Return FIRST_COLUMN if currentLine is NULL.
+ 	(m2flex_GetLineNo): Rewrite for positive logic.
+ 	(m2flex_GetLocation): Ditto.
+ 
  2025-05-05  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	PR modula2/120117
diff -Nrcpad gcc-16-20250511/gcc/m2/m2.flex gcc-16-20250518/gcc/m2/m2.flex
*** gcc-16-20250511/gcc/m2/m2.flex	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/m2/m2.flex	Sun May 18 22:32:08 2025
*************** static int cpreprocessor = 0;  /* Replac
*** 48,53 ****
--- 48,55 ----
  #define EXTERN extern "C"
  #endif
  
+ #define FIRST_COLUMN 1
+ 
    /* m2.flex provides a lexical analyser for GNU Modula-2.  */
  
    struct lineInfo {
*************** static void consumeLine (void)
*** 558,564 ****
    currentLine->lineno = lineno;
    currentLine->tokenpos=0;
    currentLine->nextpos=0;
!   currentLine->column=0;
    START_LINE (lineno, yyleng);
    yyless(1);                  /* push back all but the \n */
    traceLine ();
--- 560,566 ----
    currentLine->lineno = lineno;
    currentLine->tokenpos=0;
    currentLine->nextpos=0;
!   currentLine->column=FIRST_COLUMN;
    START_LINE (lineno, yyleng);
    yyless(1);                  /* push back all but the \n */
    traceLine ();
*************** static void updatepos (void)
*** 621,627 ****
    seenModuleStart      = false;
    currentLine->nextpos = currentLine->tokenpos+yyleng;
    currentLine->toklen  = yyleng;
-   /* if (currentLine->column == 0) */
    currentLine->column = currentLine->tokenpos+1;
    currentLine->location =
      M2Options_OverrideLocation (GET_LOCATION (currentLine->column,
--- 623,628 ----
*************** static void initLine (void)
*** 677,683 ****
    currentLine->toklen     = 0;
    currentLine->nextpos    = 0;
    currentLine->lineno = lineno;
!   currentLine->column     = 0;
    currentLine->inuse      = true;
    currentLine->next       = NULL;
  }
--- 678,684 ----
    currentLine->toklen     = 0;
    currentLine->nextpos    = 0;
    currentLine->lineno = lineno;
!   currentLine->column     = FIRST_COLUMN;
    currentLine->inuse      = true;
    currentLine->next       = NULL;
  }
*************** EXTERN bool m2flex_OpenSource (char *s)
*** 812,821 ****
  
  EXTERN int m2flex_GetLineNo (void)
  {
!   if (currentLine != NULL)
!     return currentLine->lineno;
!   else
      return 0;
  }
  
  /*
--- 813,822 ----
  
  EXTERN int m2flex_GetLineNo (void)
  {
!   if (currentLine == NULL)
      return 0;
+   else
+     return currentLine->lineno;
  }
  
  /*
*************** EXTERN int m2flex_GetLineNo (void)
*** 825,834 ****
  
  EXTERN int m2flex_GetColumnNo (void)
  {
!   if (currentLine != NULL)
!     return currentLine->column;
    else
!     return 0;
  }
  
  /*
--- 826,835 ----
  
  EXTERN int m2flex_GetColumnNo (void)
  {
!   if (currentLine == NULL)
!     return FIRST_COLUMN;
    else
!     return currentLine->column;
  }
  
  /*
*************** EXTERN int m2flex_GetColumnNo (void)
*** 837,846 ****
  
  EXTERN location_t m2flex_GetLocation (void)
  {
!   if (currentLine != NULL)
!     return currentLine->location;
!   else
      return 0;
  }
  
  /*
--- 838,847 ----
  
  EXTERN location_t m2flex_GetLocation (void)
  {
!   if (currentLine == NULL)
      return 0;
+   else
+     return currentLine->location;
  }
  
  /*
diff -Nrcpad gcc-16-20250511/gcc/match.pd gcc-16-20250518/gcc/match.pd
*** gcc-16-20250511/gcc/match.pd	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/match.pd	Sun May 18 22:32:08 2025
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2845,2851 ****
  /* (&a + b) !=/== (&a[1] + c) -> (&a[0] - &a[1]) + b !=/== c */
  (for neeq (ne eq)
   (simplify
!   (neeq:c ADDR_EXPR@0 (pointer_plus @2 @3))
     (with { poly_int64 diff; tree inner_type = TREE_TYPE (@3);}
      (if (ptr_difference_const (@0, @2, &diff))
       (neeq { build_int_cst_type (inner_type, diff); } @3))))
--- 2845,2851 ----
  /* (&a + b) !=/== (&a[1] + c) -> (&a[0] - &a[1]) + b !=/== c */
  (for neeq (ne eq)
   (simplify
!   (neeq:c (pointer_plus @2 @3) ADDR_EXPR@0)
     (with { poly_int64 diff; tree inner_type = TREE_TYPE (@3);}
      (if (ptr_difference_const (@0, @2, &diff))
       (neeq { build_int_cst_type (inner_type, diff); } @3))))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3242,3248 ****
       SAT_U_ADD = IMAGPART (SUM) != 0 ? -1 : REALPART (SUM)  */
    (cond^ (ne (imagpart (IFN_ADD_OVERFLOW@2 @0 INTEGER_CST@1)) integer_zerop)
  	 integer_minus_onep (realpart @2))
!   (if (types_match (type, @0) && int_fits_type_p (@1, type)))))
  
  /* Saturation sub for unsigned integer.  */
  (if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type))
--- 3242,3262 ----
       SAT_U_ADD = IMAGPART (SUM) != 0 ? -1 : REALPART (SUM)  */
    (cond^ (ne (imagpart (IFN_ADD_OVERFLOW@2 @0 INTEGER_CST@1)) integer_zerop)
  	 integer_minus_onep (realpart @2))
!   (if (types_match (type, @0) && int_fits_type_p (@1, type))))
!  (match (unsigned_integer_sat_add @0 @1)
!   /* WIDEN_SUM = (WT)X + (WT)Y
!      SAT_U_ADD = WIDEN_SUM > MAX ? MAX : (NT)WIDEN_SUM  */
!   (cond^ (le (plus (convert@2 @0) (convert@3 @1)) INTEGER_CST@4)
! 	 (plus:c @0 @1) integer_minus_onep)
!   (if (types_match (type, @0, @1) && types_match (@2, @3))
!    (with
!     {
!      unsigned precision = TYPE_PRECISION (type);
!      unsigned widen_precision = TYPE_PRECISION (TREE_TYPE (@2));
!      wide_int max = wi::mask (precision, false, widen_precision);
!      wide_int c4 = wi::to_wide (@4);
!     }
!     (if (wi::eq_p (c4, max) && widen_precision > precision))))))
  
  /* Saturation sub for unsigned integer.  */
  (if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 7644,7651 ****
  
  (for cmp (eq ne)
   (simplify
!   /* SSA names are canonicalized to 2nd place.  */
!   (cmp addr@0 SSA_NAME@1)
    (with
     {
       poly_int64 off; tree base;
--- 7658,7665 ----
  
  (for cmp (eq ne)
   (simplify
!   /* ADDRs are canonicalized to 2nd place.  */
!   (cmp SSA_NAME@1 addr@0)
    (with
     {
       poly_int64 off; tree base;
*************** and,
*** 11294,11319 ****
  (match (ctz_table_index @1 @2 @3)
    (rshift (mult (bit_and:c (negate @1) @1) INTEGER_CST@2) INTEGER_CST@3))
  
  (match (cond_expr_convert_p @0 @2 @3 @6)
   (cond (simple_comparison@6 @0 @1) (convert@4 @2) (convert@5 @3))
!   (if (INTEGRAL_TYPE_P (type)
!        && INTEGRAL_TYPE_P (TREE_TYPE (@2))
!        && INTEGRAL_TYPE_P (TREE_TYPE (@0))
!        && INTEGRAL_TYPE_P (TREE_TYPE (@3))
!        && TYPE_PRECISION (type) != TYPE_PRECISION (TREE_TYPE (@0))
!        && TYPE_PRECISION (TREE_TYPE (@0))
! 	  == TYPE_PRECISION (TREE_TYPE (@2))
!        && TYPE_PRECISION (TREE_TYPE (@0))
! 	  == TYPE_PRECISION (TREE_TYPE (@3))
         /* For vect_recog_cond_expr_convert_pattern, @2 and @3 can differ in
  	  signess when convert is truncation, but not ok for extension since
  	  it's sign_extend vs zero_extend.  */
!        && (TYPE_PRECISION (TREE_TYPE (@0)) > TYPE_PRECISION (type)
  	   || (TYPE_UNSIGNED (TREE_TYPE (@2))
  	       == TYPE_UNSIGNED (TREE_TYPE (@3))))
         && single_use (@4)
         && single_use (@5))))
  
  (for bit_op (bit_and bit_ior bit_xor)
   (match (bitwise_induction_p @0 @2 @3)
    (bit_op:c
--- 11308,11365 ----
  (match (ctz_table_index @1 @2 @3)
    (rshift (mult (bit_and:c (negate @1) @1) INTEGER_CST@2) INTEGER_CST@3))
  
+ /* Floatint point/integer comparison and integer->integer
+    or floating point -> float point conversion.  */
  (match (cond_expr_convert_p @0 @2 @3 @6)
   (cond (simple_comparison@6 @0 @1) (convert@4 @2) (convert@5 @3))
!   (if ((INTEGRAL_TYPE_P (type)
!        || (!flag_trapping_math && SCALAR_FLOAT_TYPE_P (type)))
!        && ((INTEGRAL_TYPE_P (TREE_TYPE (@2))
! 	    && INTEGRAL_TYPE_P (TREE_TYPE (@3)))
! 	   || (SCALAR_FLOAT_TYPE_P (TREE_TYPE (@2))
! 	       && types_match (TREE_TYPE (@2), TREE_TYPE (@3))))
!        && !operand_equal_p (TYPE_SIZE (type), TYPE_SIZE (TREE_TYPE (@0)))
!        && operand_equal_p (TYPE_SIZE (TREE_TYPE (@0)),
! 			   TYPE_SIZE (TREE_TYPE (@2)))
!        && operand_equal_p (TYPE_SIZE (TREE_TYPE (@0)),
! 			   TYPE_SIZE (TREE_TYPE (@3)))
         /* For vect_recog_cond_expr_convert_pattern, @2 and @3 can differ in
  	  signess when convert is truncation, but not ok for extension since
  	  it's sign_extend vs zero_extend.  */
!        && (known_gt (tree_to_poly_uint64 (TYPE_SIZE (TREE_TYPE (@0))),
! 		     tree_to_poly_uint64 (TYPE_SIZE (type)))
  	   || (TYPE_UNSIGNED (TREE_TYPE (@2))
  	       == TYPE_UNSIGNED (TREE_TYPE (@3))))
         && single_use (@4)
         && single_use (@5))))
  
+ /* Floating point or integer comparison and integer to floating point
+    conversion.  */
+ (match (cond_expr_convert_p @0 @2 @3 @6)
+  (cond (simple_comparison@6 @0 @1) (float@4 @2) (float@5 @3))
+   (if (SCALAR_FLOAT_TYPE_P (type) && !flag_trapping_math
+        && INTEGRAL_TYPE_P (TREE_TYPE (@2))
+        && types_match (TREE_TYPE (@2), TREE_TYPE (@3))
+        && !operand_equal_p (TYPE_SIZE (type), TYPE_SIZE (TREE_TYPE (@0)))
+        && operand_equal_p (TYPE_SIZE (TREE_TYPE (@0)),
+ 			   TYPE_SIZE (TREE_TYPE (@2)))
+        && single_use (@4)
+        && single_use (@5))))
+ 
+ /* Floating point or integer comparison and floating point to integer
+    conversion.  */
+ (match (cond_expr_convert_p @0 @2 @3 @6)
+  (cond (simple_comparison@6 @0 @1) (fix_trunc@4 @2) (fix_trunc@5 @3))
+   (if (INTEGRAL_TYPE_P (type) && !flag_trapping_math
+        && SCALAR_FLOAT_TYPE_P (TREE_TYPE (@2))
+        && types_match (TREE_TYPE (@2), TREE_TYPE (@3))
+        && !operand_equal_p (TYPE_SIZE (type),
+ 			    TYPE_SIZE (TREE_TYPE (@0)))
+        && operand_equal_p (TYPE_SIZE (TREE_TYPE (@0)),
+ 			   TYPE_SIZE (TREE_TYPE (@2)))
+        && single_use (@4)
+        && single_use (@5))))
+ 
  (for bit_op (bit_and bit_ior bit_xor)
   (match (bitwise_induction_p @0 @2 @3)
    (bit_op:c
diff -Nrcpad gcc-16-20250511/gcc/mode-switching.cc gcc-16-20250518/gcc/mode-switching.cc
*** gcc-16-20250511/gcc/mode-switching.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/mode-switching.cc	Sun May 18 22:32:08 2025
*************** commit_mode_sets (struct edge_list *edge
*** 124,131 ****
  
  	  targetm.mode_switching.emit (e, mode, cur_mode, live_at_edge);
  
! 	  mode_set = get_insns ();
! 	  end_sequence ();
  	  default_rtl_profile ();
  
  	  /* Do not bother to insert empty sequence.  */
--- 124,130 ----
  
  	  targetm.mode_switching.emit (e, mode, cur_mode, live_at_edge);
  
! 	  mode_set = end_sequence ();
  	  default_rtl_profile ();
  
  	  /* Do not bother to insert empty sequence.  */
*************** optimize_mode_switching (void)
*** 1212,1219 ****
  
  		  targetm.mode_switching.emit (entity_map[j], ptr->mode,
  					       cur_mode, ptr->regs_live);
! 		  mode_set = get_insns ();
! 		  end_sequence ();
  
  		  /* Insert MODE_SET only if it is nonempty.  */
  		  if (mode_set != NULL_RTX)
--- 1211,1217 ----
  
  		  targetm.mode_switching.emit (entity_map[j], ptr->mode,
  					       cur_mode, ptr->regs_live);
! 		  mode_set = end_sequence ();
  
  		  /* Insert MODE_SET only if it is nonempty.  */
  		  if (mode_set != NULL_RTX)
diff -Nrcpad gcc-16-20250511/gcc/optabs.cc gcc-16-20250518/gcc/optabs.cc
*** gcc-16-20250511/gcc/optabs.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/optabs.cc	Sun May 18 22:32:08 2025
*************** expand_binop (machine_mode mode, optab b
*** 1760,1767 ****
  	    emit_move_insn (target_piece, x);
  	}
  
!       insns = get_insns ();
!       end_sequence ();
  
        if (i == GET_MODE_BITSIZE (int_mode) / BITS_PER_WORD)
  	{
--- 1760,1766 ----
  	    emit_move_insn (target_piece, x);
  	}
  
!       insns = end_sequence ();
  
        if (i == GET_MODE_BITSIZE (int_mode) / BITS_PER_WORD)
  	{
*************** expand_binop (machine_mode mode, optab b
*** 1839,1846 ****
  				       outof_target, into_target,
  				       unsignedp, next_methods, shift_mask))
  	    {
! 	      insns = get_insns ();
! 	      end_sequence ();
  
  	      emit_insn (insns);
  	      return target;
--- 1838,1844 ----
  				       outof_target, into_target,
  				       unsignedp, next_methods, shift_mask))
  	    {
! 	      insns = end_sequence ();
  
  	      emit_insn (insns);
  	      return target;
*************** expand_binop (machine_mode mode, optab b
*** 1962,1969 ****
  	    emit_move_insn (outof_target, inter);
  	}
  
!       insns = get_insns ();
!       end_sequence ();
  
        if (inter != 0)
  	{
--- 1960,1966 ----
  	    emit_move_insn (outof_target, inter);
  	}
  
!       insns = end_sequence ();
  
        if (inter != 0)
  	{
*************** expand_binop (machine_mode mode, optab b
*** 2222,2229 ****
  				       NULL_RTX, LCT_CONST, mode,
  				       op0, mode, op1x, op1_mode);
  
!       insns = get_insns ();
!       end_sequence ();
  
        bool trapv = trapv_binoptab_p (binoptab);
        target = gen_reg_rtx (mode);
--- 2219,2225 ----
  				       NULL_RTX, LCT_CONST, mode,
  				       op0, mode, op1x, op1_mode);
  
!       insns = end_sequence ();
  
        bool trapv = trapv_binoptab_p (binoptab);
        target = gen_reg_rtx (mode);
*************** expand_twoval_binop_libfunc (optab binop
*** 2564,2571 ****
    /* Get the part of VAL containing the value that we want.  */
    libval = simplify_gen_subreg (mode, libval, libval_mode,
  				targ0 ? 0 : GET_MODE_SIZE (mode));
!   insns = get_insns ();
!   end_sequence ();
    /* Move the into the desired location.  */
    emit_libcall_block (insns, targ0 ? targ0 : targ1, libval,
  		      gen_rtx_fmt_ee (code, mode, op0, op1));
--- 2560,2566 ----
    /* Get the part of VAL containing the value that we want.  */
    libval = simplify_gen_subreg (mode, libval, libval_mode,
  				targ0 ? 0 : GET_MODE_SIZE (mode));
!   insns = end_sequence ();
    /* Move the into the desired location.  */
    emit_libcall_block (insns, targ0 ? targ0 : targ1, libval,
  		      gen_rtx_fmt_ee (code, mode, op0, op1));
*************** expand_clrsb_using_clz (scalar_int_mode
*** 2698,2705 ****
  	goto fail;
      }
  
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
  
    add_equal_note (seq, temp, CLRSB, op0, NULL_RTX, mode);
    emit_insn (seq);
--- 2693,2699 ----
  	goto fail;
      }
  
!   rtx_insn *seq = end_sequence ();
  
    add_equal_note (seq, temp, CLRSB, op0, NULL_RTX, mode);
    emit_insn (seq);
*************** expand_doubleword_clz_ctz_ffs (scalar_in
*** 2797,2804 ****
    emit_label (after_label);
    convert_move (target, result, true);
  
!   seq = get_insns ();
!   end_sequence ();
  
    add_equal_note (seq, target, optab_to_code (unoptab), xop0, NULL_RTX, mode);
    emit_insn (seq);
--- 2791,2797 ----
    emit_label (after_label);
    convert_move (target, result, true);
  
!   seq = end_sequence ();
  
    add_equal_note (seq, target, optab_to_code (unoptab), xop0, NULL_RTX, mode);
    emit_insn (seq);
*************** expand_doubleword_popcount (scalar_int_m
*** 2839,2846 ****
  
    t = expand_binop (word_mode, add_optab, t0, t1, target, 0, OPTAB_DIRECT);
  
!   seq = get_insns ();
!   end_sequence ();
  
    add_equal_note (seq, t, POPCOUNT, op0, NULL_RTX, mode);
    emit_insn (seq);
--- 2832,2838 ----
  
    t = expand_binop (word_mode, add_optab, t0, t1, target, 0, OPTAB_DIRECT);
  
!   seq = end_sequence ();
  
    add_equal_note (seq, t, POPCOUNT, op0, NULL_RTX, mode);
    emit_insn (seq);
*************** expand_ctz (scalar_int_mode mode, rtx op
*** 3010,3017 ****
        return 0;
      }
  
!   seq = get_insns ();
!   end_sequence ();
  
    add_equal_note (seq, temp, CTZ, op0, NULL_RTX, mode);
    emit_insn (seq);
--- 3002,3008 ----
        return 0;
      }
  
!   seq = end_sequence ();
  
    add_equal_note (seq, temp, CTZ, op0, NULL_RTX, mode);
    emit_insn (seq);
*************** expand_ffs (scalar_int_mode mode, rtx op
*** 3088,3095 ****
    if (!temp)
      goto fail;
  
!   seq = get_insns ();
!   end_sequence ();
  
    add_equal_note (seq, temp, FFS, op0, NULL_RTX, mode);
    emit_insn (seq);
--- 3079,3085 ----
    if (!temp)
      goto fail;
  
!   seq = end_sequence ();
  
    add_equal_note (seq, temp, FFS, op0, NULL_RTX, mode);
    emit_insn (seq);
*************** expand_absneg_bit (rtx_code code, machin
*** 3166,3173 ****
  	    emit_move_insn (targ_piece, op0_piece);
  	}
  
!       insns = get_insns ();
!       end_sequence ();
  
        emit_insn (insns);
      }
--- 3156,3162 ----
  	    emit_move_insn (targ_piece, op0_piece);
  	}
  
!       insns = end_sequence ();
  
        emit_insn (insns);
      }
*************** expand_unop (machine_mode mode, optab un
*** 3448,3455 ****
  	    emit_move_insn (target_piece, x);
  	}
  
!       insns = get_insns ();
!       end_sequence ();
  
        emit_insn (insns);
        return target;
--- 3437,3443 ----
  	    emit_move_insn (target_piece, x);
  	}
  
!       insns = end_sequence ();
  
        emit_insn (insns);
        return target;
*************** expand_unop (machine_mode mode, optab un
*** 3550,3557 ****
  	 if the libcall is cse'd or moved.  */
        value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST, outmode,
  				       op0, mode);
!       insns = get_insns ();
!       end_sequence ();
  
        target = gen_reg_rtx (outmode);
        bool trapv = trapv_unoptab_p (unoptab);
--- 3538,3544 ----
  	 if the libcall is cse'd or moved.  */
        value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST, outmode,
  				       op0, mode);
!       insns = end_sequence ();
  
        target = gen_reg_rtx (outmode);
        bool trapv = trapv_unoptab_p (unoptab);
*************** expand_copysign_bit (scalar_float_mode m
*** 3999,4006 ****
  	    emit_move_insn (targ_piece, op0_piece);
  	}
  
!       insns = get_insns ();
!       end_sequence ();
  
        emit_insn (insns);
      }
--- 3986,3992 ----
  	    emit_move_insn (targ_piece, op0_piece);
  	}
  
!       insns = end_sequence ();
  
        emit_insn (insns);
      }
*************** can_compare_p (enum rtx_code code, machi
*** 4304,4312 ****
            && (icode = optab_handler (cstore_optab, mode)) != CODE_FOR_nothing
            && insn_operand_matches (icode, 1, test))
  	return true;
-       if (purpose == ccp_cmov
- 	  && optab_handler (cmov_optab, mode) != CODE_FOR_nothing)
- 	return true;
  
        mode = GET_MODE_WIDER_MODE (mode).else_void ();
        PUT_MODE (test, mode);
--- 4290,4295 ----
*************** prepare_float_lib_cmp (rtx x, rtx y, enu
*** 4954,4961 ****
    start_sequence ();
    value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
  				   cmp_mode, x, mode, y, mode);
!   insns = get_insns ();
!   end_sequence ();
  
    target = gen_reg_rtx (cmp_mode);
    emit_libcall_block (insns, target, value, equiv);
--- 4937,4943 ----
    start_sequence ();
    value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
  				   cmp_mode, x, mode, y, mode);
!   insns = end_sequence ();
  
    target = gen_reg_rtx (cmp_mode);
    emit_libcall_block (insns, target, value, equiv);
*************** expand_float (rtx to, rtx from, int unsi
*** 5693,5700 ****
  
        value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
  				       GET_MODE (to), from, GET_MODE (from));
!       insns = get_insns ();
!       end_sequence ();
  
        emit_libcall_block (insns, target, value,
  			  gen_rtx_fmt_e (unsignedp ? UNSIGNED_FLOAT : FLOAT,
--- 5675,5681 ----
  
        value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
  				       GET_MODE (to), from, GET_MODE (from));
!       insns = end_sequence ();
  
        emit_libcall_block (insns, target, value,
  			  gen_rtx_fmt_e (unsignedp ? UNSIGNED_FLOAT : FLOAT,
*************** expand_fix (rtx to, rtx from, int unsign
*** 5930,5937 ****
  
        value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
  				       GET_MODE (to), from, GET_MODE (from));
!       insns = get_insns ();
!       end_sequence ();
  
        emit_libcall_block (insns, target, value,
  			  gen_rtx_fmt_e (unsignedp ? UNSIGNED_FIX : FIX,
--- 5911,5917 ----
  
        value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST,
  				       GET_MODE (to), from, GET_MODE (from));
!       insns = end_sequence ();
  
        emit_libcall_block (insns, target, value,
  			  gen_rtx_fmt_e (unsignedp ? UNSIGNED_FIX : FIX,
*************** expand_fixed_convert (rtx to, rtx from,
*** 6022,6029 ****
    start_sequence ();
    value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST, to_mode,
  				   from, from_mode);
!   insns = get_insns ();
!   end_sequence ();
  
    emit_libcall_block (insns, to, value,
  		      gen_rtx_fmt_e (optab_to_code (tab), to_mode, from));
--- 6002,6008 ----
    start_sequence ();
    value = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST, to_mode,
  				   from, from_mode);
!   insns = end_sequence ();
  
    emit_libcall_block (insns, to, value,
  		      gen_rtx_fmt_e (optab_to_code (tab), to_mode, from));
*************** gen_cond_trap (enum rtx_code code, rtx o
*** 6165,6172 ****
      }
  
    emit_insn (insn);
!   insn = get_insns ();
!   end_sequence ();
    return insn;
  }
  
--- 6144,6150 ----
      }
  
    emit_insn (insn);
!   insn = end_sequence ();
    return insn;
  }
  
*************** expand_vec_perm_1 (enum insn_code icode,
*** 6384,6389 ****
--- 6362,6411 ----
    return NULL_RTX;
  }
  
+ /* Check if vec_perm mask SEL is a constant equivalent to an and operation of
+    the non-zero vec_perm operand with some mask consisting of 0xffs and 0x00s,
+    assuming the other vec_perm operand is a constant vector of zeros.  Return
+    the mask for the equivalent and operation, or NULL_RTX if the vec_perm can
+    not be modeled as an and.  MODE is the mode of the value being anded.
+    ZERO_OP0_P is true if the first operand of the vec_perm is a constant vector
+    of zeros or false if the second operand of the vec_perm is a constant vector
+    of zeros.  */
+ rtx
+ vec_perm_and_mask (machine_mode mode, const vec_perm_indices &sel,
+ 		   bool zero_op0_p)
+ {
+   unsigned int nelt;
+   if (!GET_MODE_NUNITS (mode).is_constant (&nelt))
+     return NULL_RTX;
+ 
+   rtx_vector_builder builder (mode, nelt, 1);
+   machine_mode emode = GET_MODE_INNER (mode);
+ 
+   for (unsigned int i = 0; i < nelt; i++)
+     {
+       if (zero_op0_p)
+ 	{
+ 	  if (known_eq (sel[i], nelt + i))
+ 	    builder.quick_push (CONSTM1_RTX (emode));
+ 	  else if (known_lt (sel[i], nelt))
+ 	    builder.quick_push (CONST0_RTX (emode));
+ 	  else
+ 	    return NULL_RTX;
+ 	}
+       else
+ 	{
+ 	  if (known_eq (sel[i], i))
+ 	    builder.quick_push (CONSTM1_RTX (emode));
+ 	  else if (known_ge (sel[i], nelt))
+ 	    builder.quick_push (CONST0_RTX (emode));
+ 	  else
+ 	    return NULL_RTX;
+ 	}
+     }
+ 
+   return builder.build ();
+ }
+ 
  /* Implement a permutation of vectors v0 and v1 using the permutation
     vector in SEL and return the result.  Use TARGET to hold the result
     if nonnull and convenient.
*************** expand_atomic_fetch_op (rtx target, rtx
*** 7803,7810 ****
        if (result)
  	{
  	  /* PLUS worked so emit the insns and return.  */
! 	  tmp = get_insns ();
! 	  end_sequence ();
  	  emit_insn (tmp);
            return result;
  	}
--- 7825,7831 ----
        if (result)
  	{
  	  /* PLUS worked so emit the insns and return.  */
! 	  tmp = end_sequence ();
  	  emit_insn (tmp);
            return result;
  	}
*************** expand_atomic_fetch_op (rtx target, rtx
*** 7883,7890 ****
        /* For after, copy the value now.  */
        if (!unused_result && after)
          emit_move_insn (target, t1);
!       insn = get_insns ();
!       end_sequence ();
  
        if (t1 != NULL && expand_compare_and_swap_loop (mem, t0, t1, insn))
          return target;
--- 7904,7910 ----
        /* For after, copy the value now.  */
        if (!unused_result && after)
          emit_move_insn (target, t1);
!       insn = end_sequence ();
  
        if (t1 != NULL && expand_compare_and_swap_loop (mem, t0, t1, insn))
          return target;
diff -Nrcpad gcc-16-20250511/gcc/optabs.def gcc-16-20250518/gcc/optabs.def
*** gcc-16-20250511/gcc/optabs.def	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/optabs.def	Sun May 18 22:32:08 2025
*************** OPTAB_D (cond_len_fnms_optab, "cond_len_
*** 294,300 ****
  OPTAB_D (cond_len_neg_optab, "cond_len_neg$a")
  OPTAB_D (cond_len_one_cmpl_optab, "cond_len_one_cmpl$a")
  OPTAB_D (vcond_mask_len_optab, "vcond_mask_len_$a")
- OPTAB_D (cmov_optab, "cmov$a6")
  OPTAB_D (cstore_optab, "cstore$a4")
  OPTAB_D (ctrap_optab, "ctrap$a4")
  OPTAB_D (addv4_optab, "addv$I$a4")
--- 294,299 ----
diff -Nrcpad gcc-16-20250511/gcc/optabs.h gcc-16-20250518/gcc/optabs.h
*** gcc-16-20250511/gcc/optabs.h	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/optabs.h	Sun May 18 22:32:08 2025
*************** extern void emit_unop_insn (enum insn_co
*** 244,254 ****
  extern void emit_libcall_block (rtx_insn *, rtx, rtx, rtx);
  
  /* The various uses that a comparison can have; used by can_compare_p:
!    jumps, conditional moves, store flag operations.  */
  enum can_compare_purpose
  {
    ccp_jump,
-   ccp_cmov,
    ccp_store_flag
  };
  
--- 244,253 ----
  extern void emit_libcall_block (rtx_insn *, rtx, rtx, rtx);
  
  /* The various uses that a comparison can have; used by can_compare_p:
!    jumps, store flag operations.  */
  enum can_compare_purpose
  {
    ccp_jump,
    ccp_store_flag
  };
  
*************** extern bool have_insn_for (enum rtx_code
*** 335,340 ****
--- 334,343 ----
  /* Generate a conditional trap instruction.  */
  extern rtx_insn *gen_cond_trap (enum rtx_code, rtx, rtx, rtx);
  
+ /* Check whether the vec_perm can be interpreted as an and operation.  */
+ extern rtx vec_perm_and_mask (machine_mode mode, const vec_perm_indices &sel,
+ 			      bool zero_op0_p);
+ 
  /* Generate code for VEC_PERM_EXPR.  */
  extern rtx expand_vec_perm_var (machine_mode, rtx, rtx, rtx, rtx);
  extern rtx expand_vec_perm_const (machine_mode, rtx, rtx,
diff -Nrcpad gcc-16-20250511/gcc/po/ChangeLog gcc-16-20250518/gcc/po/ChangeLog
*** gcc-16-20250511/gcc/po/ChangeLog	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/po/ChangeLog	Sun May 18 22:32:08 2025
***************
*** 1,3 ****
--- 1,15 ----
+ 2025-05-15  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* zh_CN.po: Update.
+ 
+ 2025-05-14  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* sv.po: Update.
+ 
+ 2025-05-12  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* sv.po: Update.
+ 
  2025-04-30  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-20250511/gcc/po/sv.po gcc-16-20250518/gcc/po/sv.po
*** gcc-16-20250511/gcc/po/sv.po	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/po/sv.po	Sun May 18 22:32:09 2025
*************** msgstr ""
*** 32,38 ****
  "Project-Id-Version: gcc 15.1.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-04-23 19:27+0000\n"
! "PO-Revision-Date: 2025-04-28 09:09+0200\n"
  "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
  "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
  "Language: sv\n"
--- 32,38 ----
  "Project-Id-Version: gcc 15.1.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-04-23 19:27+0000\n"
! "PO-Revision-Date: 2025-05-14 22:41+0200\n"
  "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
  "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
  "Language: sv\n"
*************** msgstr "Varna för avslutande blanktecke
*** 2732,2738 ****
  #: c-family/c.opt:1523
  #, no-c-format
  msgid "Warn about trailing whitespace on lines except when in raw string literals.   Equivalent to Wtrailing-whitespace=blanks when enabled or Wtrailing-whitespace=none when disabled."
! msgstr "Varna för avslutande mellanrum på rader utom i råa strängliteraler. Ekvivalent med Wtrailing-whitespace=blanks när det är aktiverat eller Wtrailing-whitespace=none när det är avaktiverat."
  
  #: c-family/c.opt:1527
  #, no-c-format
--- 2732,2738 ----
  #: c-family/c.opt:1523
  #, no-c-format
  msgid "Warn about trailing whitespace on lines except when in raw string literals.   Equivalent to Wtrailing-whitespace=blanks when enabled or Wtrailing-whitespace=none when disabled."
! msgstr "Varna för avslutande mellanrum på rader utom i råa stränglitteraler. Ekvivalent med Wtrailing-whitespace=blanks när det är aktiverat eller Wtrailing-whitespace=none när det är avaktiverat."
  
  #: c-family/c.opt:1527
  #, no-c-format
*************** msgstr "-finternal-ebcdic\tIntern bearbe
*** 3864,3870 ****
  #: cobol/lang.opt:94
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
! msgstr "Aktivera/avaktivera statisk länkning för CALL-literaler"
  
  #: cobol/lang.opt:98
  #, no-c-format
--- 3864,3870 ----
  #: cobol/lang.opt:94
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
! msgstr "Aktivera/avaktivera statisk länkning för CALL-litteraler"
  
  #: cobol/lang.opt:98
  #, no-c-format
*************** msgstr "Det maximala djupet av explodera
*** 4719,4725 ****
  #: analyzer/analyzer.opt:59
  #, no-c-format
  msgid "The number of bytes at which to ellipsize string literals in analyzer text art diagrams."
! msgstr "Antalet byte vid vilket strängliteraler i textkonstdiagram från analyseraren skall ha ellips."
  
  #: analyzer/analyzer.opt:63
  #, no-c-format
--- 4719,4725 ----
  #: analyzer/analyzer.opt:59
  #, no-c-format
  msgid "The number of bytes at which to ellipsize string literals in analyzer text art diagrams."
! msgstr "Antalet byte vid vilket stränglitteraler i textkonstdiagram från analyseraren skall ha ellips."
  
  #: analyzer/analyzer.opt:63
  #, no-c-format
*************** msgstr "Parameter för att styra vilka �
*** 6677,6683 ****
  #: config/aarch64/aarch64.opt:437
  #, no-c-format
  msgid "Warn about usage of experimental Function Multi Versioning."
! msgstr "Varna för användning av experminetell funktionsmultiversionering."
  
  #: config/linux.opt:24
  #, no-c-format
--- 6677,6683 ----
  #: config/aarch64/aarch64.opt:437
  #, no-c-format
  msgid "Warn about usage of experimental Function Multi Versioning."
! msgstr "Varna för användning av experimentell funktionsmultiversionering."
  
  #: config/linux.opt:24
  #, no-c-format
*************** msgstr "Gör så att länkarens lättnad
*** 8848,8854 ****
  #: config/avr/avr.opt:112
  #, no-c-format
  msgid "Optimization. Accumulate outgoing function arguments and acquire/release the needed stack space for outgoing function arguments in function prologue/epilogue.  Without this option, outgoing arguments are pushed before calling a function and popped afterwards.  This option can lead to reduced code size for functions that call many functions that get their arguments on the stack like, for example printf."
! msgstr "Optimering. Samla utgående funktionsargument och ta/släpp det nödvändiga stackutrymmet för utgående funktionsargument i funktionsprologen/-epilogen.  Utan denna flagga trycks utgående argument på stacken före anrop av en funktion och plockas efteråt.  Denna flagga kan medföra reducerad kodstorlek för funktioner som anropar många funktioner som får sina argument på stacken som, till exempel printf."
  
  #: config/avr/avr.opt:116
  #, no-c-format
--- 8848,8854 ----
  #: config/avr/avr.opt:112
  #, no-c-format
  msgid "Optimization. Accumulate outgoing function arguments and acquire/release the needed stack space for outgoing function arguments in function prologue/epilogue.  Without this option, outgoing arguments are pushed before calling a function and popped afterwards.  This option can lead to reduced code size for functions that call many functions that get their arguments on the stack like, for example printf."
! msgstr "Optimering. Samla utgående funktionsargument och ta/släpp det nödvändiga stackutrymmet för utgående funktionsargument i funktionsprologen/-epilogen.  Utan denna flagga trycks utgående argument på stacken före anrop av en funktion och plockas efteråt.  Denna flagga kan medföra reducerad kodstorlek för funktioner som anropar många funktioner som får sina argument på stacken, som till exempel printf."
  
  #: config/avr/avr.opt:116
  #, no-c-format
*************** msgstr "Enheten har sektionen .rodata pl
*** 8878,8884 ****
  #: config/avr/avr.opt:137
  #, no-c-format
  msgid "This option is used internally for multilib generation and selection. The device has no SPH special function register."
! msgstr "Denna flagga används internt för multilib-generering och -val. Enheten har inga speiciella SPH-fuktionsregister."
  
  #: config/avr/avr.opt:141
  #, no-c-format
--- 8878,8884 ----
  #: config/avr/avr.opt:137
  #, no-c-format
  msgid "This option is used internally for multilib generation and selection. The device has no SPH special function register."
! msgstr "Denna flagga används internt för multilib-generering och -val. Enheten har inga speciella SPH-fuktionsregister."
  
  #: config/avr/avr.opt:141
  #, no-c-format
*************** msgstr "Skriv en KÄLLFIL.opt-record.jso
*** 14856,14862 ****
  #: common.opt:2469
  #, no-c-format
  msgid "Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC."
! msgstr "Upptäck slingor som beräknar CRC och ersätt dem med en snabbare implementation. Om målet stödjer en CRC-instruktion och CRC-slingan använder samma polynom smo det som används i CRC-instruktionen, ersätt då direkt med motsvarande CRC-instruktion. Annars, om målet stöjder en instruktion för minnesfri multiplikation, generera en CRC som använder det. Om inget av fallen är tillämpligt, generera tabellbaserad CRC."
  
  #: common.opt:2483
  #, no-c-format
--- 14856,14862 ----
  #: common.opt:2469
  #, no-c-format
  msgid "Detect loops calculating CRC and replace with faster implementation. If the target supports CRC instruction and the CRC loop uses the same polynomial as the one used in the CRC instruction, directly replace with the corresponding CRC instruction. Otherwise, if the target supports carry-less-multiplication instruction, generate CRC using it. If neither case applies, generate table-based CRC."
! msgstr "Upptäck slingor som beräknar CRC och ersätt dem med en snabbare implementation. Om målet stödjer en CRC-instruktion och CRC-slingan använder samma polynom smo det som används i CRC-instruktionen, ersätt då direkt med motsvarande CRC-instruktion. Annars, om målet stödjer en instruktion för minnesfri multiplikation, generera en CRC som använder det. Om inget av fallen är tillämpligt, generera tabellbaserad CRC."
  
  #: common.opt:2483
  #, no-c-format
*************** msgstr "Framtvinga användningen av SLP
*** 17528,17534 ****
  #: params.opt:1266
  #, no-c-format
  msgid "Maximum number of basic blocks before VRP switches to a fast model with less memory requirements."
! msgstr "Maximalt antal grundblock innan VRP byter till en snabb modell med mintre minneskrav."
  
  #: params.opt:1270
  #, no-c-format
--- 17528,17534 ----
  #: params.opt:1266
  #, no-c-format
  msgid "Maximum number of basic blocks before VRP switches to a fast model with less memory requirements."
! msgstr "Maximalt antal grundblock innan VRP byter till en snabb modell med mindre minneskrav."
  
  #: params.opt:1270
  #, no-c-format
*************** msgstr "den anropade returnerar en post"
*** 17563,17569 ****
  
  #: calls.cc:2565
  msgid "target is not able to optimize the call into a sibling call"
! msgstr "målet kan inte optinera anropet till ett syskonanrop"
  
  #: calls.cc:2574
  msgid "callee returns twice"
--- 17563,17569 ----
  
  #: calls.cc:2565
  msgid "target is not able to optimize the call into a sibling call"
! msgstr "målet kan inte optimera anropet till ett syskonanrop"
  
  #: calls.cc:2574
  msgid "callee returns twice"
*************** msgstr "%<detach%>-klausulens händelseh
*** 49107,49113 ****
  #: cp/parser.cc:42940
  #, gcc-internal-format
  msgid "string literal must not contain %<\\0%>"
! msgstr "strängliteraler får inte innehålla %<\\0%>"
  
  #: c/c-parser.cc:20581 c/c-parser.cc:20702 cp/parser.cc:42835
  #: cp/parser.cc:42975
--- 49107,49113 ----
  #: cp/parser.cc:42940
  #, gcc-internal-format
  msgid "string literal must not contain %<\\0%>"
! msgstr "stränglitteraler får inte innehålla %<\\0%>"
  
  #: c/c-parser.cc:20581 c/c-parser.cc:20702 cp/parser.cc:42835
  #: cp/parser.cc:42975
*************** msgstr "%s: regcomp: %s"
*** 52621,52627 ****
  msgid "logic error: missing inode for %s"
  msgstr "logikfel: saknad inod för %s"
  
- # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104709
  #: cobol/util.cc:2141
  #, gcc-internal-format, gfc-internal-format
  msgid "failed compiling %s"
--- 52621,52626 ----
*************** msgid "Expected associate name at %C"
*** 75706,75715 ****
  msgstr "Ett associationsnamn förväntade vid %C"
  
  #: fortran/match.cc:1940
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Bad continuation line at %C"
  msgid "Bad bounds remapping list at %C"
! msgstr "Felaktig fortsättningsrad vid %C"
  
  #: fortran/match.cc:1946
  #, gcc-internal-format, gfc-internal-format
--- 75705,75713 ----
  msgstr "Ett associationsnamn förväntade vid %C"
  
  #: fortran/match.cc:1940
! #, gcc-internal-format, gfc-internal-format
  msgid "Bad bounds remapping list at %C"
! msgstr "Felaktig litea på gränsavbildningar vid %C"
  
  #: fortran/match.cc:1946
  #, gcc-internal-format, gfc-internal-format
*************** msgid "The associate name %s with an ass
*** 75747,75756 ****
  msgstr "Det associerade namnet %s med ett mål med antagen ordning vid %L måste ha en lista för omavbildning av gränser (lista av nedtregräns:övregräns för varje dimension)"
  
  #: fortran/match.cc:2018
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "The assumed-rank array at %C shall not have a codimension"
  msgid "The assumed rank target at %C must be contiguous"
! msgstr "Vektorn med antagen ordning vid %C får inte ha en co-dimension"
  
  #: fortran/match.cc:2037
  #, gcc-internal-format
--- 75745,75753 ----
  msgstr "Det associerade namnet %s med ett mål med antagen ordning vid %L måste ha en lista för omavbildning av gränser (lista av nedtregräns:övregräns för varje dimension)"
  
  #: fortran/match.cc:2018
! #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank target at %C must be contiguous"
! msgstr "Målet med antagen ordning vid %C måste vara sammanhängande"
  
  #: fortran/match.cc:2037
  #, gcc-internal-format
*************** msgid "DO CONCURRENT construct at %C"
*** 75783,75798 ****
  msgstr "DO CONCURRENT-konstruktion vid %C"
  
  #: fortran/match.cc:2826
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "selector %qs specified more than once in set %qs"
  msgid "DEFAULT (NONE) specified more than once in DO CONCURRENT at %C"
! msgstr "väljaren %qs anges mer än en gång i mängden %qs"
  
  #: fortran/match.cc:2915
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expected structure component name at %C"
  msgid "Expected reduction operator or function name at %C"
! msgstr "Postkomponentnamn förväntades vid %C"
  
  #: fortran/match.cc:2935 fortran/openmp.cc:2439 fortran/openmp.cc:2475
  #: fortran/openmp.cc:2885 fortran/openmp.cc:2910
--- 75780,75793 ----
  msgstr "DO CONCURRENT-konstruktion vid %C"
  
  #: fortran/match.cc:2826
! #, gcc-internal-format, gfc-internal-format
  msgid "DEFAULT (NONE) specified more than once in DO CONCURRENT at %C"
! msgstr "DEFAULT (NONE) anges mer än en gång i DO CONCURRENT vid %C"
  
  #: fortran/match.cc:2915
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected reduction operator or function name at %C"
! msgstr "En reduktionsoperator eller ett funktionsnamn förväntades vid %C"
  
  #: fortran/match.cc:2935 fortran/openmp.cc:2439 fortran/openmp.cc:2475
  #: fortran/openmp.cc:2885 fortran/openmp.cc:2910
*************** msgid "Expected %<:%> at %C"
*** 75801,75828 ****
  msgstr "%<:%> förväntades vid %C"
  
  #: fortran/match.cc:2945
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expected variable name at %C"
  msgid "Expected variable name in reduction list at %C"
! msgstr "Variabelnamn förväntades vid %C"
  
  #: fortran/match.cc:2964
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expected association list at %C"
  msgid "Expected ',' or ')' in reduction list at %C"
! msgstr "Associationslista förväntades vid %C"
  
  #: fortran/match.cc:2970
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "PROCEDURE list at %C"
  msgid "REDUCE locality spec at %L"
! msgstr "PROCEDURE-lista vid %C"
  
  #: fortran/match.cc:2977
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Invalid type-spec at %C"
  msgid "Locality spec at %L"
! msgstr "Ogiltig typspecifikation vid %C"
  
  #: fortran/match.cc:3112
  #, gcc-internal-format
--- 75796,75819 ----
  msgstr "%<:%> förväntades vid %C"
  
  #: fortran/match.cc:2945
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected variable name in reduction list at %C"
! msgstr "Variabelnamn förväntades i reduktionslistan vid %C"
  
  #: fortran/match.cc:2964
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected ',' or ')' in reduction list at %C"
! msgstr "”,” eller ”)” förväntades i reduktionslistan vid %C"
  
  #: fortran/match.cc:2970
! #, gcc-internal-format, gfc-internal-format
  msgid "REDUCE locality spec at %L"
! msgstr "REDUCE-likalitestsspecifikation vid %L"
  
  #: fortran/match.cc:2977
! #, gcc-internal-format, gfc-internal-format
  msgid "Locality spec at %L"
! msgstr "Lokalitetsspecifikation vid %L"
  
  #: fortran/match.cc:3112
  #, gcc-internal-format
*************** msgid "Unexpected junk at %C"
*** 76920,76935 ****
  msgstr "Oväntad skräp vid %C"
  
  #: fortran/openmp.cc:464
! #, fuzzy, gcc-internal-format
! #| msgid "%<omp_all_memory%> at %C not permitted in this clause"
  msgid "%<omp_all_memory%> at %L not permitted in this clause"
! msgstr "%<omp_all_memory%> vid %C är inte tillåtet i denna klausul"
  
  #: fortran/openmp.cc:509
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "List item shall not be coindexed at %C"
  msgid "List item shall not be coindexed at %L"
! msgstr "Listobjektet skall inte vara co-indexerat vid %C"
  
  #: fortran/openmp.cc:535
  #, gcc-internal-format
--- 76911,76924 ----
  msgstr "Oväntad skräp vid %C"
  
  #: fortran/openmp.cc:464
! #, gcc-internal-format
  msgid "%<omp_all_memory%> at %L not permitted in this clause"
! msgstr "%<omp_all_memory%> vid %L är inte tillåtet i denna klausul"
  
  #: fortran/openmp.cc:509
! #, gcc-internal-format, gfc-internal-format
  msgid "List item shall not be coindexed at %L"
! msgstr "Listobjektet skall inte vara co-indexerat vid %L"
  
  #: fortran/openmp.cc:535
  #, gcc-internal-format
*************** msgid "%qs at %L is part of the common b
*** 76937,76946 ****
  msgstr "%qs vid %L är del av common-blocket %</%s/%> och kan endast anges implicit via det namngivna common-blocket"
  
  #: fortran/openmp.cc:562
! #, fuzzy, gcc-internal-format
! #| msgid "COMMON block /%s/ not found at %C"
  msgid "COMMON block %</%s/%> not found at %L"
! msgstr "COMMON-block /%s/ finns inte vid %C"
  
  #: fortran/openmp.cc:606 fortran/openmp.cc:696
  #, gcc-internal-format, gfc-internal-format
--- 76926,76934 ----
  msgstr "%qs vid %L är del av common-blocket %</%s/%> och kan endast anges implicit via det namngivna common-blocket"
  
  #: fortran/openmp.cc:562
! #, gcc-internal-format
  msgid "COMMON block %</%s/%> not found at %L"
! msgstr "COMMON-block %</%s/%> finns inte vid %L"
  
  #: fortran/openmp.cc:606 fortran/openmp.cc:696
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Syntax error in OpenMP detach cla
*** 76958,76967 ****
  msgstr "Syntaxfel i OpenMP-frånkopplingsklausul vid %C"
  
  #: fortran/openmp.cc:755
! #, fuzzy, gcc-internal-format
! #| msgid "%<omp_all_memory%> used with dependence-type other than OUT or INOUT at %C"
  msgid "%<omp_all_memory%> used with dependence-type other than OUT or INOUT at %L"
! msgstr "%<omp_all_memory%> använt med en annan beroendetyp än OUT eller INOUT vid %C"
  
  #: fortran/openmp.cc:808
  #, gcc-internal-format, gfc-internal-format
--- 76946,76954 ----
  msgstr "Syntaxfel i OpenMP-frånkopplingsklausul vid %C"
  
  #: fortran/openmp.cc:755
! #, gcc-internal-format
  msgid "%<omp_all_memory%> used with dependence-type other than OUT or INOUT at %L"
! msgstr "%<omp_all_memory%> använt med en annan beroendetyp än OUT eller INOUT vid %L"
  
  #: fortran/openmp.cc:808
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Syntax error in OpenMP SINK depen
*** 76969,76978 ****
  msgstr "Syntaxfel i OpenMP DEPEND SINK beroendetyplista vid %C"
  
  #: fortran/openmp.cc:871
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Syntax error in OpenACC expression list at %C"
  msgid "Syntax error in OpenMP expression list at %C"
! msgstr "Syntaxfel i OpenACC-uttryckslista vid %C"
  
  #: fortran/openmp.cc:873
  #, gcc-internal-format, gfc-internal-format
--- 76956,76964 ----
  msgstr "Syntaxfel i OpenMP DEPEND SINK beroendetyplista vid %C"
  
  #: fortran/openmp.cc:871
! #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in OpenMP expression list at %C"
! msgstr "Syntaxfel i OpenMP-uttryckslista vid %C"
  
  #: fortran/openmp.cc:873
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Invalid combined or composite dir
*** 77040,77047 ****
  msgstr "Ogiltigt kombinerat eller sammansatt direktiv vid %L"
  
  #: fortran/openmp.cc:1644
! #, fuzzy, gcc-internal-format
! #| msgid "Invalid %qs directive at %L in %s clause: declarative, informational and meta directives not permitted"
  msgid "Invalid %qs directive at %L in %s clause: declarative, informational, and meta directives not permitted"
  msgstr "Felaktigt %qs-direktiv vid %L i %s-klausul: direktiven declarative, informational och meta är inte tillåtna"
  
--- 77026,77032 ----
  msgstr "Ogiltigt kombinerat eller sammansatt direktiv vid %L"
  
  #: fortran/openmp.cc:1644
! #, gcc-internal-format
  msgid "Invalid %qs directive at %L in %s clause: declarative, informational, and meta directives not permitted"
  msgstr "Felaktigt %qs-direktiv vid %L i %s-klausul: direktiven declarative, informational och meta är inte tillåtna"
  
*************** msgid "Unexpected %<(%> at %C"
*** 77073,77124 ****
  msgstr "Oväntat %<(%> vid %C"
  
  #: fortran/openmp.cc:1909
! #, fuzzy, gcc-internal-format
! #| msgid "expected %<{%> at %C"
  msgid "Expected %<{%> at %C"
  msgstr "%<{%> förväntades vid %C"
  
  #: fortran/openmp.cc:1919
! #, fuzzy, gcc-internal-format
! #| msgid "expected trait selector name at %C"
  msgid "Duplicated %<fr%> preference-selector-name at %C"
! msgstr "trait-väljarnamn förväntades vid %C"
  
  #: fortran/openmp.cc:1944 fortran/openmp.cc:2082
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "expected constant integer expression with valid sync-hint value"
  msgid "Expected constant scalar integer expression or non-empty default-kind character literal at %L"
! msgstr "konstant heltalsuttryck med giltigt sync-hint-värde förväntades"
  
  #: fortran/openmp.cc:1958 fortran/openmp.cc:2095
! #, fuzzy, gcc-internal-format
! #| msgid "Unknown procedure name %qs at %C"
  msgid "Unknown foreign runtime identifier %qd at %L"
! msgstr "Okänt procedurnamn %qs vid %C"
  
  #: fortran/openmp.cc:1972 fortran/openmp.cc:2107
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Unexpected character in variable list at %C"
  msgid "Unexpected null character in character literal at %L"
! msgstr "Oväntat tecken i variabellista vid %C"
  
  #: fortran/openmp.cc:1979 fortran/openmp.cc:2114
! #, fuzzy, gcc-internal-format
! #| msgid "Unknown procedure name %qs at %C"
  msgid "Unknown foreign runtime identifier %qs at %L"
! msgstr "Okänt procedurnamn %qs vid %C"
  
  #: fortran/openmp.cc:1986 fortran/openmp.cc:7079
! #, fuzzy, gcc-internal-format
! #| msgid "expected %<)%> at %C"
  msgid "Expected %<)%> at %C"
  msgstr "%<)%> förväntades vid %C"
  
  #: fortran/openmp.cc:2002
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "expected identifier or string literal at %C"
  msgid "Expected default-kind character literal at %L"
! msgstr "identifierare eller strängkonstant förväntades vid %C"
  
  #: fortran/openmp.cc:2013
  #, gcc-internal-format
--- 77058,77101 ----
  msgstr "Oväntat %<(%> vid %C"
  
  #: fortran/openmp.cc:1909
! #, gcc-internal-format
  msgid "Expected %<{%> at %C"
  msgstr "%<{%> förväntades vid %C"
  
  #: fortran/openmp.cc:1919
! #, gcc-internal-format
  msgid "Duplicated %<fr%> preference-selector-name at %C"
! msgstr "Dubblerad %<fr%>-preferensväljarnamn vid %C"
  
  #: fortran/openmp.cc:1944 fortran/openmp.cc:2082
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected constant scalar integer expression or non-empty default-kind character literal at %L"
! msgstr "Ett konstant skalärt heltalsuttryck eller en icke-tom standardsorts teckenliteral vid %L"
  
  #: fortran/openmp.cc:1958 fortran/openmp.cc:2095
! #, gcc-internal-format
  msgid "Unknown foreign runtime identifier %qd at %L"
! msgstr "Okänd främmande körtidsidentifierare %qd vid %L"
  
  #: fortran/openmp.cc:1972 fortran/openmp.cc:2107
! #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected null character in character literal at %L"
! msgstr "Oväntat null-tecken i teckenliteralen vid %L"
  
  #: fortran/openmp.cc:1979 fortran/openmp.cc:2114
! #, gcc-internal-format
  msgid "Unknown foreign runtime identifier %qs at %L"
! msgstr "Okänd främmande körtidsidentifierare %qs vid %L"
  
  #: fortran/openmp.cc:1986 fortran/openmp.cc:7079
! #, gcc-internal-format
  msgid "Expected %<)%> at %C"
  msgstr "%<)%> förväntades vid %C"
  
  #: fortran/openmp.cc:2002
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected default-kind character literal at %L"
! msgstr "En standardsorts teckenliteral förväntades vid %L"
  
  #: fortran/openmp.cc:2013
  #, gcc-internal-format
*************** msgid "Character literal at %L must star
*** 77126,77189 ****
  msgstr "Teckenliteralen vid %L måste börja med %<ompx_%>"
  
  #: fortran/openmp.cc:2021
! #, fuzzy, gcc-internal-format
! #| msgid "Unexpected character in variable list at %C"
  msgid "Unexpected null or %<,%> character in character literal at %L"
! msgstr "Oväntat tecken i variabellista vid %C"
  
  #: fortran/openmp.cc:2038
! #, fuzzy, gcc-internal-format
! #| msgid "Expected %<)%> or %<,%> at %C"
  msgid "Expected %<fr(%> or %<attr(%> at %C"
! msgstr "%<)%> eller %<,%> förväntades vid %C"
  
  #: fortran/openmp.cc:2045
! #, fuzzy, gcc-internal-format
! #| msgid "Expected %<,%> or %<)%> at %C"
  msgid "Expected %<,%> or %<}%> at %C"
! msgstr "%<,%> eller %<)%> förväntades vid %C"
  
  #: fortran/openmp.cc:2161
! #, fuzzy, gcc-internal-format
! #| msgid "Duplicate access-specifier at %C"
  msgid "Duplicate %<prefer_type%> modifier at %C"
! msgstr "Dubblerad åtkomstspecifikation vid %C"
  
  #: fortran/openmp.cc:2173 fortran/openmp.cc:2209 fortran/openmp.cc:2231
! #, fuzzy, gcc-internal-format
! #| msgid "Expected %<,%> or %<)%> at %C"
  msgid "Expected %<,%> or %<:%> at %C"
! msgstr "%<,%> eller %<)%> förväntades vid %C"
  
  #: fortran/openmp.cc:2186
! #, fuzzy, gcc-internal-format
! #| msgid "Expected %<(%> after %qs at %C"
  msgid "Expected %<(%> after %<prefer_type%> at %C"
! msgstr "%<(%> förväntades efter %qs vid %C"
  
  #: fortran/openmp.cc:2194
! #, fuzzy, gcc-internal-format
! #| msgid "expected %<match%> at %C"
  msgid "Duplicate %<targetsync%> at %C"
! msgstr "%<match%> förväntades vid %C"
  
  #: fortran/openmp.cc:2216
! #, fuzzy, gcc-internal-format
! #| msgid "Duplicate %s attribute at %L"
  msgid "Duplicate %<target%> at %C"
! msgstr "Dubblerat %s-attribut vid %L"
  
  #: fortran/openmp.cc:2234
! #, fuzzy, gcc-internal-format
! #| msgid "Expected %<)%> or %<,%> at %C"
  msgid "Expected %<prefer_type%>, %<target%>, or %<targetsync%> at %C"
! msgstr "%<)%> eller %<,%> förväntades vid %C"
  
  #: fortran/openmp.cc:2242
! #, fuzzy, gcc-internal-format
! #| msgid "Expected %<)%> or %<,%> at %C"
  msgid "Missing required %<target%> and/or %<targetsync%> modifier at %C"
! msgstr "%<)%> eller %<,%> förväntades vid %C"
  
  #: fortran/openmp.cc:2295
  #, gcc-internal-format
--- 77103,77156 ----
  msgstr "Teckenliteralen vid %L måste börja med %<ompx_%>"
  
  #: fortran/openmp.cc:2021
! #, gcc-internal-format
  msgid "Unexpected null or %<,%> character in character literal at %L"
! msgstr "Oväntat null eller %<,%>-tecken i teckenliteralen vid %L"
  
  #: fortran/openmp.cc:2038
! #, gcc-internal-format
  msgid "Expected %<fr(%> or %<attr(%> at %C"
! msgstr "%<fr(%> eller %<attr(%> förväntades vid %C"
  
  #: fortran/openmp.cc:2045
! #, gcc-internal-format
  msgid "Expected %<,%> or %<}%> at %C"
! msgstr "%<,%> eller %<}%> förväntades vid %C"
  
  #: fortran/openmp.cc:2161
! #, gcc-internal-format
  msgid "Duplicate %<prefer_type%> modifier at %C"
! msgstr "Dubblerad modifierare %<prefer_type%> vid %C"
  
  #: fortran/openmp.cc:2173 fortran/openmp.cc:2209 fortran/openmp.cc:2231
! #, gcc-internal-format
  msgid "Expected %<,%> or %<:%> at %C"
! msgstr "%<,%> eller %<:%> förväntades vid %C"
  
  #: fortran/openmp.cc:2186
! #, gcc-internal-format
  msgid "Expected %<(%> after %<prefer_type%> at %C"
! msgstr "%<(%> förväntades efter %<prefer_type%> vid %C"
  
  #: fortran/openmp.cc:2194
! #, gcc-internal-format
  msgid "Duplicate %<targetsync%> at %C"
! msgstr "Dubblerat %<targetsync%> vid %C"
  
  #: fortran/openmp.cc:2216
! #, gcc-internal-format
  msgid "Duplicate %<target%> at %C"
! msgstr "Dubblerat %<target%> vid %C"
  
  #: fortran/openmp.cc:2234
! #, gcc-internal-format
  msgid "Expected %<prefer_type%>, %<target%>, or %<targetsync%> at %C"
! msgstr "%<prefer_type%> %<target%> eller %<targetsync%> förväntades vid %C"
  
  #: fortran/openmp.cc:2242
! #, gcc-internal-format
  msgid "Missing required %<target%> and/or %<targetsync%> modifier at %C"
! msgstr "Nödvändig modifierare %<target%> och/eller %<targetsync%> saknas vid %C"
  
  #: fortran/openmp.cc:2295
  #, gcc-internal-format
*************** msgid "ORDERED clause argument not const
*** 77361,77370 ****
  msgstr "ORDERED-klausulargument är inte ett konstant positivt heltal vid %C"
  
  #: fortran/openmp.cc:3912
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "ORDERED clause argument not constant positive integer at %C"
  msgid "PARTIAL clause argument not constant positive integer at %C"
! msgstr "ORDERED-klausulargument är inte ett konstant positivt heltal vid %C"
  
  #: fortran/openmp.cc:4194
  #, gcc-internal-format, gfc-internal-format
--- 77328,77336 ----
  msgstr "ORDERED-klausulargument är inte ett konstant positivt heltal vid %C"
  
  #: fortran/openmp.cc:3912
! #, gcc-internal-format, gfc-internal-format
  msgid "PARTIAL clause argument not constant positive integer at %C"
! msgstr "Klausulargumentet PARTIAL är inte ett konstant positivt heltal vid %C"
  
  #: fortran/openmp.cc:4194
  #, gcc-internal-format, gfc-internal-format
*************** msgid "expected expression at %C"
*** 77715,77742 ****
  msgstr "uttryck förväntades vid %C"
  
  #: fortran/openmp.cc:6477
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "property must be a constant logical expression at %C"
  msgid "property must be a logical expression at %L"
! msgstr "egenskapen måste vara ett konstant logiskt uttryck vid %C"
  
  #: fortran/openmp.cc:6481
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "property must be a constant integer expression at %C"
  msgid "property must be an integer expression at %L"
! msgstr "egenskapen måste vara ett konstant heltalsuttryck vid %C"
  
  #: fortran/openmp.cc:6488
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "property must be a constant logical expression at %C"
  msgid "property must be a constant logical expression at %L"
! msgstr "egenskapen måste vara ett konstant logiskt uttryck vid %C"
  
  #: fortran/openmp.cc:6492
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "property must be a constant integer expression at %C"
  msgid "property must be a constant integer expression at %L"
! msgstr "egenskapen måste vara ett konstant heltalsuttryck vid %C"
  
  #: fortran/openmp.cc:6506
  #, gcc-internal-format, gfc-internal-format
--- 77681,77704 ----
  msgstr "uttryck förväntades vid %C"
  
  #: fortran/openmp.cc:6477
! #, gcc-internal-format, gfc-internal-format
  msgid "property must be a logical expression at %L"
! msgstr "egenskapen måste vara ett logiskt uttryck vid %L"
  
  #: fortran/openmp.cc:6481
! #, gcc-internal-format, gfc-internal-format
  msgid "property must be an integer expression at %L"
! msgstr "egenskapen måste vara ett heltalsuttryck vid %L"
  
  #: fortran/openmp.cc:6488
! #, gcc-internal-format, gfc-internal-format
  msgid "property must be a constant logical expression at %L"
! msgstr "egenskapen måste vara ett konstant logiskt uttryck vid %L"
  
  #: fortran/openmp.cc:6492
! #, gcc-internal-format, gfc-internal-format
  msgid "property must be a constant integer expression at %L"
! msgstr "egenskapen måste vara ett konstant heltalsuttryck vid %L"
  
  #: fortran/openmp.cc:6506
  #, gcc-internal-format, gfc-internal-format
*************** msgid "%qs clause at %L specified more t
*** 77784,77829 ****
  msgstr "Klausulen %qs vid %L angiven mer än en gång"
  
  #: fortran/openmp.cc:6776
! #, fuzzy, gcc-internal-format
! #| msgid "expected %<ancestor%> or %<device_num%>"
  msgid "expected %<nothing%>, %<need_device_ptr%> or %<need_device_addr%> at %C"
! msgstr "%<ancestor%> eller %<device_num%> förväntades"
  
  #: fortran/openmp.cc:6782 fortran/openmp.cc:6900 fortran/openmp.cc:7055
! #, fuzzy, gcc-internal-format
! #| msgid "Expected %<:%> at %C"
  msgid "expected %<:%> at %C"
  msgstr "%<:%> förväntades vid %C"
  
  #: fortran/openmp.cc:6815
! #, fuzzy, gcc-internal-format
! #| msgid "Expected %<:%> at %C"
  msgid "unexpected %<:%> at %C"
! msgstr "%<:%> förväntades vid %C"
  
  #: fortran/openmp.cc:6862
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expected integer expression at %C"
  msgid "expected constant integer expression at %C"
! msgstr "Heltalsuttryck förväntades vid %C"
  
  #: fortran/openmp.cc:6884
! #, fuzzy, gcc-internal-format
! #| msgid "ORDERED clause argument not constant positive integer at %C"
  msgid "expected dummy parameter name, %<omp_num_args%> or constant positive integer at %C"
! msgstr "ORDERED-klausulargument är inte ett konstant positivt heltal vid %C"
  
  #: fortran/openmp.cc:6931
! #, fuzzy, gcc-internal-format
! #| msgid "expected %<)%> at %C"
  msgid "expected %<interop%> at %C"
! msgstr "%<)%> förväntades vid %C"
  
  #: fortran/openmp.cc:6981
! #, fuzzy, gcc-internal-format
! #| msgid "expected %<at%>, %<severity%> or %<message%> clause"
  msgid "expected %<match%>, %<adjust_args%> or %<append_args%> at %C"
! msgstr "%<at%>-, %<severity%>- eller %<message%>-klausul förväntades"
  
  #: fortran/openmp.cc:6987
  #, gcc-internal-format
--- 77746,77784 ----
  msgstr "Klausulen %qs vid %L angiven mer än en gång"
  
  #: fortran/openmp.cc:6776
! #, gcc-internal-format
  msgid "expected %<nothing%>, %<need_device_ptr%> or %<need_device_addr%> at %C"
! msgstr "%<nothing%>, %<need_device_ptr%> eller %<need_device_addr%> förväntades vid %C"
  
  #: fortran/openmp.cc:6782 fortran/openmp.cc:6900 fortran/openmp.cc:7055
! #, gcc-internal-format
  msgid "expected %<:%> at %C"
  msgstr "%<:%> förväntades vid %C"
  
  #: fortran/openmp.cc:6815
! #, gcc-internal-format
  msgid "unexpected %<:%> at %C"
! msgstr "Oväntat %<:%> vid %C"
  
  #: fortran/openmp.cc:6862
! #, gcc-internal-format, gfc-internal-format
  msgid "expected constant integer expression at %C"
! msgstr "ett konstant heltalsuttryck förväntades vid %C"
  
  #: fortran/openmp.cc:6884
! #, gcc-internal-format
  msgid "expected dummy parameter name, %<omp_num_args%> or constant positive integer at %C"
! msgstr "ett attrapparameternamn, %<omp_num_args%> eller konstant positivt heltal förväntades vid %C"
  
  #: fortran/openmp.cc:6931
! #, gcc-internal-format
  msgid "expected %<interop%> at %C"
! msgstr "%<interop%> förväntades vid %C"
  
  #: fortran/openmp.cc:6981
! #, gcc-internal-format
  msgid "expected %<match%>, %<adjust_args%> or %<append_args%> at %C"
! msgstr "%<match%>-, %<adust_args%> eller %<append_args%> förväntades vid %C"
  
  #: fortran/openmp.cc:6987
  #, gcc-internal-format
*************** msgid "the %qs clause at %L can only be
*** 77831,77840 ****
  msgstr "klausulen %s vid %L kan endast anges om väljaren %<dispatch%> i konstruktionsväljarmängden förekommer i klausulen %<match%>"
  
  #: fortran/openmp.cc:7027
! #, fuzzy, gcc-internal-format
! #| msgid "expected %<host%>, %<nohost%> or %<any%>"
  msgid "expected %<when%>, %<otherwise%>, or %<default%> at %C"
! msgstr "%<host%>, %<nohost%> eller %<any%> förväntades"
  
  #: fortran/openmp.cc:7034
  #, gcc-internal-format
--- 77786,77794 ----
  msgstr "klausulen %s vid %L kan endast anges om väljaren %<dispatch%> i konstruktionsväljarmängden förekommer i klausulen %<match%>"
  
  #: fortran/openmp.cc:7027
! #, gcc-internal-format
  msgid "expected %<when%>, %<otherwise%>, or %<default%> at %C"
! msgstr "%<when%>, %<otherwise%> eller %<default%> förväntades vid %C"
  
  #: fortran/openmp.cc:7034
  #, gcc-internal-format
*************** msgid "%<otherwise%> or %<default%> clau
*** 77847,77856 ****
  msgstr "en klausul %<otherwise%> eller %<default%> måste ligga sist i %<metadirective%> vid %C"
  
  #: fortran/openmp.cc:7069
! #, fuzzy, gcc-internal-format
! #| msgid "destructor priorities are not supported"
  msgid "declarative directive variants are not supported"
! msgstr "destruerarprioriteter stödjs ej"
  
  #: fortran/openmp.cc:7090
  #, gcc-internal-format, gfc-internal-format
--- 77801,77809 ----
  msgstr "en klausul %<otherwise%> eller %<default%> måste ligga sist i %<metadirective%> vid %C"
  
  #: fortran/openmp.cc:7069
! #, gcc-internal-format
  msgid "declarative directive variants are not supported"
! msgstr "deklarativa direktivvarianter stödjs ej"
  
  #: fortran/openmp.cc:7090
  #, gcc-internal-format, gfc-internal-format
*************** msgid "variant directive used in OMP BEG
*** 77858,77867 ****
  msgstr "variantdirektivet som används i OMP BEGIN METADIRECTIVE vid %C måste ha ett mostsvarande slutdirektiv"
  
  #: fortran/openmp.cc:7124
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Unexpected junk after OMP THREADPRIVATE at %C"
  msgid "Unexpected junk after OMP METADIRECTIVE at %C"
! msgstr "Oväntat skräp efter OMP THREADPRIVATE vid %C"
  
  #: fortran/openmp.cc:7183
  #, gcc-internal-format, gfc-internal-format
--- 77811,77819 ----
  msgstr "variantdirektivet som används i OMP BEGIN METADIRECTIVE vid %C måste ha ett mostsvarande slutdirektiv"
  
  #: fortran/openmp.cc:7124
! #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected junk after OMP METADIRECTIVE at %C"
! msgstr "Oväntat skräp efter OMP METADIRECTIVE vid %C"
  
  #: fortran/openmp.cc:7183
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Syntax error in !$OMP THREADPRIVA
*** 77879,77888 ****
  msgstr "Syntaxfel i !$OMP THREADPRIVATE-lista vid %C"
  
  #: fortran/openmp.cc:7326
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Program unit at %L has OpenMP device constructs/routines but does not set !$OMP REQUIRES REVERSE_OFFLOAD but other program units do"
  msgid "Program unit at %L has OpenMP device constructs/routines but does not set !$OMP REQUIRES %s but other program units do"
! msgstr "Programenheten vid %L har OpenMP device-konstruktioner/-rutiner men sätter inte !$OMP REQUIRES REVERSE_OFFLOAD men andra programenheter gör det"
  
  #: fortran/openmp.cc:7369
  #, gcc-internal-format
--- 77831,77839 ----
  msgstr "Syntaxfel i !$OMP THREADPRIVATE-lista vid %C"
  
  #: fortran/openmp.cc:7326
! #, gcc-internal-format, gfc-internal-format
  msgid "Program unit at %L has OpenMP device constructs/routines but does not set !$OMP REQUIRES %s but other program units do"
! msgstr "Programenheten vid %L har OpenMP device-konstruktioner/-rutiner men sätter inte !$OMP REQUIRES %s men andra programenheter gör det"
  
  #: fortran/openmp.cc:7369
  #, gcc-internal-format
*************** msgid "Clause expected at %C"
*** 77930,77939 ****
  msgstr "Klausul förväntades vid %C"
  
  #: fortran/openmp.cc:7557
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expected UNIFIED_ADDRESS, UNIFIED_SHARED_MEMORY, DYNAMIC_ALLOCATORS, REVERSE_OFFLOAD, or ATOMIC_DEFAULT_MEM_ORDER clause at %L"
  msgid "Expected UNIFIED_ADDRESS, UNIFIED_SHARED_MEMORY, SELF_MAPS, DYNAMIC_ALLOCATORS, REVERSE_OFFLOAD, or ATOMIC_DEFAULT_MEM_ORDER clause at %L"
! msgstr "UNIFIED_ADDRESS-, UNIFIED_SHARED_MEMORY-, DYNAMIC_ALLOCATORS-, REVERSE_OFFLOAD- eller ATOMIC_DEFAULT_MEM_ORDER-klausul förväntades vid %L"
  
  #: fortran/openmp.cc:7583
  #, gcc-internal-format, gfc-internal-format
--- 77881,77889 ----
  msgstr "Klausul förväntades vid %C"
  
  #: fortran/openmp.cc:7557
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected UNIFIED_ADDRESS, UNIFIED_SHARED_MEMORY, SELF_MAPS, DYNAMIC_ALLOCATORS, REVERSE_OFFLOAD, or ATOMIC_DEFAULT_MEM_ORDER clause at %L"
! msgstr "UNIFIED_ADDRESS-, UNIFIED_SHARED_MEMORY-, SELF_MAPS-, DYNAMIC_ALLOCATORS-, REVERSE_OFFLOAD- eller ATOMIC_DEFAULT_MEM_ORDER-klausul förväntades vid %L"
  
  #: fortran/openmp.cc:7583
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "HOLDS-uttryck vid %L måste vara
*** 78190,78199 ****
  msgid "ORDERED clause parameter is less than COLLAPSE at %L"
  msgstr "ORDERED-klausulparameter är mindre än COLLAPSE vid %L"
  
- # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107122
  #: fortran/openmp.cc:8623
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "ORDER clause must not be used together ORDERED at %L"
  msgid "ORDER clause must not be used together with ORDERED at %L"
  msgstr "en ORDER-klausul får inte användas tillsammans med ORDERED vid %L"
  
--- 78140,78147 ----
  msgid "ORDERED clause parameter is less than COLLAPSE at %L"
  msgstr "ORDERED-klausulparameter är mindre än COLLAPSE vid %L"
  
  #: fortran/openmp.cc:8623
! #, gcc-internal-format, gfc-internal-format
  msgid "ORDER clause must not be used together with ORDERED at %L"
  msgstr "en ORDER-klausul får inte användas tillsammans med ORDERED vid %L"
  
*************** msgid "FINAL clause at %L requires a sca
*** 78224,78239 ****
  msgstr "FINAL-klausul vid %L kräver ett skalärt LOGICAL-uttryck"
  
  #: fortran/openmp.cc:8798
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "IF clause at %L requires a scalar LOGICAL expression"
  msgid "NOVARIANTS clause at %L requires a scalar LOGICAL expression"
! msgstr "IF-klausul vid %L kräver ett skalärt LOGICAL-uttryck"
  
  #: fortran/openmp.cc:8808
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "SELF clause at %L requires a scalar LOGICAL expression"
  msgid "NOCONTEXT clause at %L requires a scalar LOGICAL expression"
! msgstr "SELF-klausulen vid %L kräver ett skalärt LOGICAL-uttryck"
  
  #: fortran/openmp.cc:8819
  #, gcc-internal-format, gfc-internal-format
--- 78172,78185 ----
  msgstr "FINAL-klausul vid %L kräver ett skalärt LOGICAL-uttryck"
  
  #: fortran/openmp.cc:8798
! #, gcc-internal-format, gfc-internal-format
  msgid "NOVARIANTS clause at %L requires a scalar LOGICAL expression"
! msgstr "NOVARIANTS-klausul vid %L kräver ett skalärt LOGICAL-uttryck"
  
  #: fortran/openmp.cc:8808
! #, gcc-internal-format, gfc-internal-format
  msgid "NOCONTEXT clause at %L requires a scalar LOGICAL expression"
! msgstr "NOCONTEXT-klausulen vid %L kräver ett skalärt LOGICAL-uttryck"
  
  #: fortran/openmp.cc:8819
  #, gcc-internal-format, gfc-internal-format
*************** msgid "DEPEND clause at %L requires %<ta
*** 78319,78334 ****
  msgstr "Klausulen DEPEND vid %L behöver interop-typen %<targetsync%>, den saknas för %qs vid %L"
  
  #: fortran/openmp.cc:9044
! #, fuzzy, gcc-internal-format
! #| msgid "Allocator %qs at %L in USES_ALLOCATORS must be a scalar integer of kind %<omp_allocator_handle_kind%>"
  msgid "%qs at %L in %qs clause must be a scalar integer variable of %<omp_interop_kind%> kind"
! msgstr "Allokeraren %qs vid %L i USES_ALLOCATORS måste vara ett skalärt heltal av ssorten %<omp_allocator_handle_kind%>"
  
  #: fortran/openmp.cc:9049
! #, fuzzy, gcc-internal-format
! #| msgid "%qs and %qs cannot both be enabled"
  msgid "%qs at %L in %qs clause must be definable"
! msgstr "%qs och %qs kan inte båda aktiveras"
  
  #: fortran/openmp.cc:9088
  #, gcc-internal-format
--- 78265,78278 ----
  msgstr "Klausulen DEPEND vid %L behöver interop-typen %<targetsync%>, den saknas för %qs vid %L"
  
  #: fortran/openmp.cc:9044
! #, gcc-internal-format
  msgid "%qs at %L in %qs clause must be a scalar integer variable of %<omp_interop_kind%> kind"
! msgstr "%qs vid %L i klausulen %qs måste vara en skalär heltalsvariabel av sorten %<omp_interop_kind%>"
  
  #: fortran/openmp.cc:9049
! #, gcc-internal-format
  msgid "%qs at %L in %qs clause must be definable"
! msgstr "%qs vid %L i klausulen %qs måste vara definierbar"
  
  #: fortran/openmp.cc:9088
  #, gcc-internal-format
*************** msgstr "Memspace %qs vid %L i USES_ALLOC
*** 78560,78566 ****
  #: fortran/openmp.cc:9878
  #, gcc-internal-format
  msgid "Allocator %qs at %L in USES_ALLOCATORS must be a scalar integer of kind %<omp_allocator_handle_kind%>"
! msgstr "Allokeraren %qs vid %L i USES_ALLOCATORS måste vara ett skalärt heltal av ssorten %<omp_allocator_handle_kind%>"
  
  #: fortran/openmp.cc:9886
  #, gcc-internal-format
--- 78504,78510 ----
  #: fortran/openmp.cc:9878
  #, gcc-internal-format
  msgid "Allocator %qs at %L in USES_ALLOCATORS must be a scalar integer of kind %<omp_allocator_handle_kind%>"
! msgstr "Allokeraren %qs vid %L i USES_ALLOCATORS måste vara ett skalärt heltal av sorten %<omp_allocator_handle_kind%>"
  
  #: fortran/openmp.cc:9886
  #, gcc-internal-format
*************** msgid "DETACH event handle %qs in %s cla
*** 78614,78629 ****
  msgstr "DETACH-händelsehandtag %qs i %s-klausul vid %L"
  
  #: fortran/openmp.cc:10016
! #, fuzzy, gcc-internal-format
! #| msgid "List item %qs with allocatable components is not permitted in map clause at %L"
  msgid "Sorry, list item %qs at %L with allocatable components is not yet supported in %s clause"
! msgstr "Listposten %qs med allokerbara komponenter är inte tillåtet i map-klausulen vid %L"
  
  #: fortran/openmp.cc:10022
! #, fuzzy, gcc-internal-format
! #| msgid "comparison with string literal results in unspecified behavior"
  msgid "Polymorphic list item %qs at %L in %s clause has unspecified behavior and unsupported"
! msgstr "jämförelse med stränglitteral resulterar i odefinierat beteende"
  
  #: fortran/openmp.cc:10054
  #, gcc-internal-format, gfc-internal-format
--- 78558,78571 ----
  msgstr "DETACH-händelsehandtag %qs i %s-klausul vid %L"
  
  #: fortran/openmp.cc:10016
! #, gcc-internal-format
  msgid "Sorry, list item %qs at %L with allocatable components is not yet supported in %s clause"
! msgstr "Ledsen, listposten %qs vid %L med allokerbara komponenter stödjs inte ännu i klausulen %s"
  
  #: fortran/openmp.cc:10022
! #, gcc-internal-format
  msgid "Polymorphic list item %qs at %L in %s clause has unspecified behavior and unsupported"
! msgstr "Det polymorfa listelementet %qs vid %L i klausulen %s har i odefinierat beteende och stödjs ej"
  
  #: fortran/openmp.cc:10054
  #, gcc-internal-format, gfc-internal-format
*************** msgid "DIST_SCHEDULE clause's chunk_size
*** 78686,78707 ****
  msgstr "DIST_SCHEDULE-klausulens chunk_size vid %L kräver ett skalärt INTEGER-uttryck"
  
  #: fortran/openmp.cc:10349
! #, fuzzy, gcc-internal-format
! #| msgid "%<DETACH%> clause at %L must not be used together with %<MERGEABLE%> clause"
  msgid "%<GRAINSIZE%> clause at %L must not be used together with %<NUM_TASKS%> clause"
! msgstr "en %<DETACH%>-klausul vid %L får inte användas tillsammans med en %<MERGEABLE%>-klausul"
  
  #: fortran/openmp.cc:10352
! #, fuzzy, gcc-internal-format
! #| msgid "%<DETACH%> clause at %L must not be used together with %<MERGEABLE%> clause"
  msgid "%<REDUCTION%> clause at %L must not be used together with %<NOGROUP%> clause"
! msgstr "en %<DETACH%>-klausul vid %L får inte användas tillsammans med en %<MERGEABLE%>-klausul"
  
  #: fortran/openmp.cc:10356
! #, fuzzy, gcc-internal-format
! #| msgid "%<DETACH%> clause at %L must not be used together with %<MERGEABLE%> clause"
  msgid "%<FULL%> clause at %C must not be used together with %<PARTIAL%> clause"
! msgstr "en %<DETACH%>-klausul vid %L får inte användas tillsammans med en %<MERGEABLE%>-klausul"
  
  #: fortran/openmp.cc:10379
  #, gcc-internal-format, gfc-internal-format
--- 78628,78646 ----
  msgstr "DIST_SCHEDULE-klausulens chunk_size vid %L kräver ett skalärt INTEGER-uttryck"
  
  #: fortran/openmp.cc:10349
! #, gcc-internal-format
  msgid "%<GRAINSIZE%> clause at %L must not be used together with %<NUM_TASKS%> clause"
! msgstr "en %<GRAINSIZE%>-klausul vid %L får inte användas tillsammans med en %<NUM_TASKS%>-klausul"
  
  #: fortran/openmp.cc:10352
! #, gcc-internal-format
  msgid "%<REDUCTION%> clause at %L must not be used together with %<NOGROUP%> clause"
! msgstr "en %<REDUCTION%>-klausul vid %L får inte användas tillsammans med en %<NOGROUP%>-klausul"
  
  #: fortran/openmp.cc:10356
! #, gcc-internal-format
  msgid "%<FULL%> clause at %C must not be used together with %<PARTIAL%> clause"
! msgstr "en %<FULL%>-klausul vid %C får inte användas tillsammans med en %<PARTIAL%>-klausul"
  
  #: fortran/openmp.cc:10379
  #, gcc-internal-format, gfc-internal-format
*************** msgid "%s must contain at least one MAP
*** 78719,78728 ****
  msgstr "%s måste innehålla åtminstone en MAP-klausul vid %L"
  
  #: fortran/openmp.cc:10416
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "TILE requires constant expression at %L"
  msgid "SIZES requires constant expression at %L"
! msgstr "TILE behöver ett konstant uttryck vid %L"
  
  #: fortran/openmp.cc:10432
  #, gcc-internal-format
--- 78658,78666 ----
  msgstr "%s måste innehålla åtminstone en MAP-klausul vid %L"
  
  #: fortran/openmp.cc:10416
! #, gcc-internal-format, gfc-internal-format
  msgid "SIZES requires constant expression at %L"
! msgstr "SIZES behöver ett konstant uttryck vid %L"
  
  #: fortran/openmp.cc:10432
  #, gcc-internal-format
*************** msgid "expr in !$OMP ATOMIC COMPARE assi
*** 78825,78832 ****
  msgstr "uttr i !$OMP ATOMIC COMPARE-tilldelning var = uttr måste vara skalär och får inte referera var vid %L"
  
  #: fortran/openmp.cc:10858
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "!$OMP ATOMIC UPDATE at %L with FAIL clause requiries either the COMPARE clause or using the intrinsic MIN/MAX procedure"
  msgid "!$OMP ATOMIC UPDATE at %L with FAIL clause requires either the COMPARE clause or using the intrinsic MIN/MAX procedure"
  msgstr "!$OMP ATOMIC UPDATE vid %L med en FAIL-klausul behöver antingen klausulen COMPARE eller användning av den inbyggda proceduren MIN/MAX"
  
--- 78763,78769 ----
  msgstr "uttr i !$OMP ATOMIC COMPARE-tilldelning var = uttr måste vara skalär och får inte referera var vid %L"
  
  #: fortran/openmp.cc:10858
! #, gcc-internal-format, gfc-internal-format
  msgid "!$OMP ATOMIC UPDATE at %L with FAIL clause requires either the COMPARE clause or using the intrinsic MIN/MAX procedure"
  msgstr "!$OMP ATOMIC UPDATE vid %L med en FAIL-klausul behöver antingen klausulen COMPARE eller användning av den inbyggda proceduren MIN/MAX"
  
*************** msgid "%s cannot contain OpenMP API call
*** 78916,78925 ****
  msgstr "%s kan inte innehålla OpenMP-API-anrop i mellanliggande kod vid %L"
  
  #: fortran/openmp.cc:12052
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "LINEAR clause modifier used on DO or SIMD construct at %L"
  msgid "SIZES clause is required on !$OMP TILE construct at %L"
! msgstr "LINEAR-klausulmodifierare använd på DO- eller SIMD-konstruktion vid %L"
  
  #: fortran/openmp.cc:12079
  #, gcc-internal-format, gfc-internal-format
--- 78853,78861 ----
  msgstr "%s kan inte innehålla OpenMP-API-anrop i mellanliggande kod vid %L"
  
  #: fortran/openmp.cc:12052
! #, gcc-internal-format, gfc-internal-format
  msgid "SIZES clause is required on !$OMP TILE construct at %L"
! msgstr "en klausul SIZES krävs på konstruktionen !$OMP TILE vid %L"
  
  #: fortran/openmp.cc:12079
  #, gcc-internal-format, gfc-internal-format
*************** msgid "%s inner loops must be perfectly
*** 79038,79047 ****
  msgstr "%s intre slingor måste vara perfekt nästade med en REDUCTION INSCAN-klausul vid %L"
  
  #: fortran/openmp.cc:12284
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "%s inner loops must be perfectly nested with ORDERED clause at %L"
  msgid "%s inner loops must be perfectly nested at %L"
! msgstr "%s inre slingor måste vara perfekt nästade med klausulen ORDERED vid %L"
  
  #: fortran/openmp.cc:12538 fortran/openmp.cc:12551
  #, gcc-internal-format, gfc-internal-format
--- 78974,78982 ----
  msgstr "%s intre slingor måste vara perfekt nästade med en REDUCTION INSCAN-klausul vid %L"
  
  #: fortran/openmp.cc:12284
! #, gcc-internal-format, gfc-internal-format
  msgid "%s inner loops must be perfectly nested at %L"
! msgstr "%s inre slingor måste vara perfekt nästade vid %L"
  
  #: fortran/openmp.cc:12538 fortran/openmp.cc:12551
  #, gcc-internal-format, gfc-internal-format
*************** msgid "!$OMP DECLARE SIMD should refer t
*** 79144,79153 ****
  msgstr "!$OMP DECLARE SIMD skall referera till den inneslutande proceduren %qs vid %L"
  
  #: fortran/openmp.cc:13115
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "expected constant logical expression"
  msgid "Expected constant non-negative scalar integer offset expression at %L"
! msgstr "ett konstant logiskt uttryck förväntades"
  
  #: fortran/openmp.cc:13118
  #, gcc-internal-format
--- 79079,79087 ----
  msgstr "!$OMP DECLARE SIMD skall referera till den inneslutande proceduren %qs vid %L"
  
  #: fortran/openmp.cc:13115
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected constant non-negative scalar integer offset expression at %L"
! msgstr "Ett konstant icke-negativt skalärt heltalsavståndsuttryck förväntades vid %L"
  
  #: fortran/openmp.cc:13118
  #, gcc-internal-format
*************** msgid "For range-based %<adjust_args%>,
*** 79155,79164 ****
  msgstr "För intervallbaserat %<adjust_args%> krävs ett konstant positivt skalärt heltalsuttryck vid %L"
  
  #: fortran/openmp.cc:13132
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Unexpected character in variable list at %C"
  msgid "Expected dummy parameter name or a positive integer at %L"
! msgstr "Oväntat tecken i variabellista vid %C"
  
  #: fortran/openmp.cc:13158
  #, gcc-internal-format, gfc-internal-format
--- 79089,79097 ----
  msgstr "För intervallbaserat %<adjust_args%> krävs ett konstant positivt skalärt heltalsuttryck vid %L"
  
  #: fortran/openmp.cc:13132
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected dummy parameter name or a positive integer at %L"
! msgstr "Ett attrapparameternamn eller ettt positivt heltal förväntades vid %L"
  
  #: fortran/openmp.cc:13158
  #, gcc-internal-format, gfc-internal-format
*************** msgid "The value of n in %<-finit-charac
*** 79301,79310 ****
  msgstr "Värdet på n i %<-finit-character=n%> måste vara mellan 0 och 127"
  
  #: fortran/options.cc:889
! #, fuzzy, gcc-internal-format
! #| msgid "command-line option %qs is valid for %s but not for %s"
  msgid "command-line option %<-fno-builtin-%s%> is not valid for Fortran"
! msgstr "kommandoradsflaggan %qs är giltig för %s men inte för %s"
  
  #: fortran/parse.cc:665
  #, gcc-internal-format, gfc-internal-format
--- 79234,79242 ----
  msgstr "Värdet på n i %<-finit-character=n%> måste vara mellan 0 och 127"
  
  #: fortran/options.cc:889
! #, gcc-internal-format
  msgid "command-line option %<-fno-builtin-%s%> is not valid for Fortran"
! msgstr "kommandoradsflaggan %<-fno-builtin-%s%> är inte giltig för Fortran"
  
  #: fortran/parse.cc:665
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "Namngivet DO-block vid %L kräve
*** 79740,79749 ****
  #. "begin metadirective" construct, or perhaps the
  #. "end metadirective" is missing entirely.
  #: fortran/parse.cc:5817 fortran/parse.cc:6314
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Unexpected junk after OMP THREADPRIVATE at %C"
  msgid "Expected OMP END METADIRECTIVE at %C"
! msgstr "Oväntat skräp efter OMP THREADPRIVATE vid %C"
  
  #: fortran/parse.cc:5827 fortran/parse.cc:6330 fortran/parse.cc:6348
  #, gcc-internal-format, gfc-internal-format
--- 79672,79680 ----
  #. "begin metadirective" construct, or perhaps the
  #. "end metadirective" is missing entirely.
  #: fortran/parse.cc:5817 fortran/parse.cc:6314
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected OMP END METADIRECTIVE at %C"
! msgstr "OMP END METADIRECTIVE förväntades vid %C"
  
  #: fortran/parse.cc:5827 fortran/parse.cc:6330 fortran/parse.cc:6348
  #, gcc-internal-format, gfc-internal-format
*************** msgid "%<OMP DISPATCH%> directive must b
*** 79796,79811 ****
  msgstr "Direktivet %<OMP DISPATCH%> måste följas av ett proceduranrop med en möjlig tilldelning vid %C"
  
  #: fortran/parse.cc:6416
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Duplicated NOWAIT clause on %s and %s at %C"
  msgid "Duplicated NOWAIT clause on !$OMP DISPATCH and !$OMP END DISPATCH at %C"
! msgstr "Dubblerad NOWAIT-klausul på %s och %s vid %C"
  
  #: fortran/parse.cc:6488
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Unexpected %s statement in WHERE block at %C"
  msgid "Unexpected %s statement in OMP METADIRECTIVE block at %C"
! msgstr "Oväntad %s-sats i WHERE-block vid %C"
  
  #: fortran/parse.cc:6529
  #, gcc-internal-format, gfc-internal-format
--- 79727,79740 ----
  msgstr "Direktivet %<OMP DISPATCH%> måste följas av ett proceduranrop med en möjlig tilldelning vid %C"
  
  #: fortran/parse.cc:6416
! #, gcc-internal-format, gfc-internal-format
  msgid "Duplicated NOWAIT clause on !$OMP DISPATCH and !$OMP END DISPATCH at %C"
! msgstr "Dubblerad NOWAIT-klausul på !$OMP DISPATCH och !$OMP END DISPATCH vid %C"
  
  #: fortran/parse.cc:6488
! #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected %s statement in OMP METADIRECTIVE block at %C"
! msgstr "Oväntad %s-sats i blocket OMP METADIRECTIVE vid %C"
  
  #: fortran/parse.cc:6529
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Integer too big for its kind at %
*** 79931,79940 ****
  msgstr "Heltal för stort för sin sort vid %C.  Denna kontroll kan avaktiveras med flaggan %<-fno-range-check%>"
  
  #: fortran/primary.cc:388
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Integer kind %d at %C not available"
  msgid "Unsigned kind %d at %C not available"
! msgstr "Heltalssort %d vid %C inte tillgänglig"
  
  #: fortran/primary.cc:419
  #, gcc-internal-format, gfc-internal-format
--- 79860,79868 ----
  msgstr "Heltal för stort för sin sort vid %C.  Denna kontroll kan avaktiveras med flaggan %<-fno-range-check%>"
  
  #: fortran/primary.cc:388
! #, gcc-internal-format, gfc-internal-format
  msgid "Unsigned kind %d at %C not available"
! msgstr "Teckenlös sort %d vid %C inte tillgänglig"
  
  #: fortran/primary.cc:419
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Procedure pointer component %qs r
*** 80210,80219 ****
  msgstr "Procedurpekarkomponent %qs kräver en argumentlista vid %C"
  
  #: fortran/primary.cc:2833
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expected array subscript stride at %C"
  msgid "Unexpected array/substring ref at %C"
! msgstr "Förväntade intervall av vektorindex vid %C"
  
  #: fortran/primary.cc:2855
  #, gcc-internal-format, gfc-internal-format
--- 80138,80146 ----
  msgstr "Procedurpekarkomponent %qs kräver en argumentlista vid %C"
  
  #: fortran/primary.cc:2833
! #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected array/substring ref at %C"
! msgstr "Oväntad vektor-/delsträngs-ref vid %C"
  
  #: fortran/primary.cc:2855
  #, gcc-internal-format, gfc-internal-format
*************** msgid "The element in the structure cons
*** 80707,80716 ****
  msgstr "Elementet i postkonstrueraren vid %L, för pekarkomponent %qs, borde vara en POINTER eller en TARGET"
  
  #: fortran/resolve.cc:1589
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Pointer assignment with vector subscript on rhs at %L"
  msgid "Pointer assignment target at %L has a vector subscript"
! msgstr "Pekartilldelning med vektorindexering på högersidan vid %L"
  
  #: fortran/resolve.cc:1601
  #, gcc-internal-format
--- 80634,80642 ----
  msgstr "Elementet i postkonstrueraren vid %L, för pekarkomponent %qs, borde vara en POINTER eller en TARGET"
  
  #: fortran/resolve.cc:1589
! #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target at %L has a vector subscript"
! msgstr "Pekartilldelningsmålet vid %L har en vektorindexering"
  
  #: fortran/resolve.cc:1601
  #, gcc-internal-format
*************** msgid "The intrinsic %qs declared INTRIN
*** 80753,80760 ****
  msgstr "Den inbyggda %qs deklarerad INTRINSIC vid %L är inte tillgänglig i den aktuella standardinställningen utan i %s.  Använd en lämplig flagga %<-std=*%> eller aktivera %<-fall-intrinsics%> för att använda den."
  
  #: fortran/resolve.cc:1989
! #, fuzzy, gcc-internal-format
! #| msgid "Non-RECURSIVE procedure %qs from module %qs is  possibly calling itself recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>"
  msgid "Non-RECURSIVE procedure %qs from module %qs is possibly calling itself recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr "Icke RECURSIVE procedur %qs från modulen %qs anropar kanske sig själv rekursivt i proceduren %qs. Deklarera den RECURSIVE eller använd %<-frecursive%>"
  
--- 80679,80685 ----
  msgstr "Den inbyggda %qs deklarerad INTRINSIC vid %L är inte tillgänglig i den aktuella standardinställningen utan i %s.  Använd en lämplig flagga %<-std=*%> eller aktivera %<-fall-intrinsics%> för att använda den."
  
  #: fortran/resolve.cc:1989
! #, gcc-internal-format
  msgid "Non-RECURSIVE procedure %qs from module %qs is possibly calling itself recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr "Icke RECURSIVE procedur %qs från modulen %qs anropar kanske sig själv rekursivt i proceduren %qs. Deklarera den RECURSIVE eller använd %<-frecursive%>"
  
*************** msgid "Function %qs at %L has no IMPLICI
*** 80889,80898 ****
  msgstr "Funktionen %qs vid %L har ingen IMPLICIT-typ"
  
  #: fortran/resolve.cc:3283
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Reference to impure function %qs at %L inside a DO CONCURRENT %s"
  msgid "Reference to impure function at %L inside a DO CONCURRENT"
! msgstr "Referens till den orena funktionen %qs vid %L är inuti ett DO CONCURRENT-%s"
  
  #: fortran/resolve.cc:3294
  #, gcc-internal-format
--- 80814,80822 ----
  msgstr "Funktionen %qs vid %L har ingen IMPLICIT-typ"
  
  #: fortran/resolve.cc:3283
! #, gcc-internal-format, gfc-internal-format
  msgid "Reference to impure function at %L inside a DO CONCURRENT"
! msgstr "Referens till en oren funktion vid %L inuti ett DO CONCURRENT"
  
  #: fortran/resolve.cc:3294
  #, gcc-internal-format
*************** msgid "Function %qs is declared CHARACTE
*** 80936,80945 ****
  msgstr "Funktionen %qs är deklarerad CHARACTER(*) och får inte användas vid %L eftersom det inte är ett attrappargument"
  
  #: fortran/resolve.cc:3470
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Missing argument list in function %qs at %C"
  msgid "Different argument lists in external dummy function %s at %L and %L"
! msgstr "Argumentlista saknas i funktionen %qs vid %C"
  
  #: fortran/resolve.cc:3509
  #, gcc-internal-format
--- 80860,80868 ----
  msgstr "Funktionen %qs är deklarerad CHARACTER(*) och får inte användas vid %L eftersom det inte är ett attrappargument"
  
  #: fortran/resolve.cc:3470
! #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy function %s at %L and %L"
! msgstr "Olika argumentlistor i den externa atrappfunktionen %s vid %L och %L"
  
  #: fortran/resolve.cc:3509
  #, gcc-internal-format
*************** msgid "Using function %qs at %L is depre
*** 80972,80981 ****
  msgstr "Att använda funktionen %qs vid %L bör undvikas"
  
  #: fortran/resolve.cc:3701
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Subroutine call to %qs in DO CONCURRENT block at %L is not PURE"
  msgid "Subroutine call at %L in a DO CONCURRENT block is not PURE"
! msgstr "Subrutinanrop till %qs i DO CONCURRENT-block vid %L är inte PURE"
  
  #: fortran/resolve.cc:3710
  #, gcc-internal-format
--- 80895,80903 ----
  msgstr "Att använda funktionen %qs vid %L bör undvikas"
  
  #: fortran/resolve.cc:3701
! #, gcc-internal-format, gfc-internal-format
  msgid "Subroutine call at %L in a DO CONCURRENT block is not PURE"
! msgstr "Subrutinanrop vid %L i ett block DO CONCURRENT är inte PURE"
  
  #: fortran/resolve.cc:3710
  #, gcc-internal-format
*************** msgid "BOZ literal constant at %L cannot
*** 81068,81077 ****
  msgstr "BOZ-litteralkonstanten vid %L får inte vara en operand till den unära operatorn %qs"
  
  #: fortran/resolve.cc:4368
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "comparison of unsigned expression in %<>= 0%> is always true"
  msgid "Negation of unsigned expression at %L not permitted "
! msgstr "jämförelse med unsigned-uttryck %<>= 0%> är alltid sant"
  
  #: fortran/resolve.cc:4389
  #, gcc-internal-format
--- 80990,80998 ----
  msgstr "BOZ-litteralkonstanten vid %L får inte vara en operand till den unära operatorn %qs"
  
  #: fortran/resolve.cc:4368
! #, gcc-internal-format, gfc-internal-format
  msgid "Negation of unsigned expression at %L not permitted "
! msgstr "Negation av ett teckenlöst uttryck vid %L är inte tillåtet "
  
  #: fortran/resolve.cc:4389
  #, gcc-internal-format
*************** msgid "Operands at %L and %L cannot appe
*** 81079,81130 ****
  msgstr "Operander vid %L och %L kan inte förekomma som operander av den binära operatorn %qs"
  
  #: fortran/resolve.cc:4399
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Invalid context for NULL() pointer at %%L"
  msgid "Invalid context for NULL() pointer at %L"
! msgstr "Ogiltigt sammanhang för NULL()-pekare vid %%L"
  
  #: fortran/resolve.cc:4417
! #, fuzzy, gcc-internal-format
! #| msgid "Operand of unary numeric operator %%<%s%%> at %%L is %s"
  msgid "Operand of unary numeric operator %qs at %L is %s"
! msgstr "Operand till unär numerisk operator %%<%s%%> vid %%L är %s"
  
  #: fortran/resolve.cc:4432 fortran/resolve.cc:4466
! #, fuzzy, gcc-internal-format
! #| msgid "Operands of binary numeric operator %%<%s%%> at %%L are %s/%s"
  msgid "Operands of binary numeric operator %qs at %L are %s/%s"
! msgstr "Operander till binär numerisk operator %%<%s%%> vid %%L är %s/%s"
  
  #: fortran/resolve.cc:4446 fortran/resolve.cc:4635 fortran/resolve.cc:4804
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Inconsistent ranks for operator at %%L and %%L"
  msgid "Inconsistent ranks for operator at %L and %L"
! msgstr "Inkonsistenta ordningar för operator vid %%L och %%L"
  
  #: fortran/resolve.cc:4458
! #, fuzzy, gcc-internal-format
! #| msgid "Unexpected derived-type entities in binary intrinsic numeric operator %%<%s%%> at %%L"
  msgid "Unexpected derived-type entities in binary intrinsic numeric operator %qs at %L"
! msgstr "Oväntade entiteter av härledd typ i binär inbyggd numerisk operator %%<%s%%> vid %%L"
  
  #: fortran/resolve.cc:4482
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Operands of string concatenation operator at %%L are %s/%s"
  msgid "Operands of string concatenation operator at %L are %s/%s"
! msgstr "Operanderna till strängkonkateneringsoperatorn vid %%L är %s/%s"
  
  #: fortran/resolve.cc:4525
! #, fuzzy, gcc-internal-format
! #| msgid "Operands of logical operator %%<%s%%> at %%L are %s/%s"
  msgid "Operands of logical operator %qs at %L are %s/%s"
! msgstr "Operanderna till logiska operatorn %%<%s%%> vid %%L är %s/%s"
  
  #: fortran/resolve.cc:4548
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Operand of .not. operator at %%L is %s"
  msgid "Operand of .not. operator at %L is %s"
! msgstr "Operand till operatorn .not. vid %%L är %s"
  
  #: fortran/resolve.cc:4563
  #, gcc-internal-format, gfc-internal-format
--- 81000,81043 ----
  msgstr "Operander vid %L och %L kan inte förekomma som operander av den binära operatorn %qs"
  
  #: fortran/resolve.cc:4399
! #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL() pointer at %L"
! msgstr "Ogiltigt sammanhang för NULL()-pekare vid %L"
  
  #: fortran/resolve.cc:4417
! #, gcc-internal-format
  msgid "Operand of unary numeric operator %qs at %L is %s"
! msgstr "Operand till unär numerisk operator %qs vid %L är %s"
  
  #: fortran/resolve.cc:4432 fortran/resolve.cc:4466
! #, gcc-internal-format
  msgid "Operands of binary numeric operator %qs at %L are %s/%s"
! msgstr "Operander till binär numerisk operator %qs vid %L är %s/%s"
  
  #: fortran/resolve.cc:4446 fortran/resolve.cc:4635 fortran/resolve.cc:4804
! #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent ranks for operator at %L and %L"
! msgstr "Inkonsistenta ordningar för operator vid %L och %L"
  
  #: fortran/resolve.cc:4458
! #, gcc-internal-format
  msgid "Unexpected derived-type entities in binary intrinsic numeric operator %qs at %L"
! msgstr "Oväntade entiteter av härledd typ i binär inbyggd numerisk operator %qs vid %L"
  
  #: fortran/resolve.cc:4482
! #, gcc-internal-format, gfc-internal-format
  msgid "Operands of string concatenation operator at %L are %s/%s"
! msgstr "Operanderna till strängkonkateneringsoperatorn vid %L är %s/%s"
  
  #: fortran/resolve.cc:4525
! #, gcc-internal-format
  msgid "Operands of logical operator %qs at %L are %s/%s"
! msgstr "Operanderna till logiska operatorn %qs vid %L är %s/%s"
  
  #: fortran/resolve.cc:4548
! #, gcc-internal-format, gfc-internal-format
  msgid "Operand of .not. operator at %L is %s"
! msgstr "Operand till operatorn .not. vid %L är %s"
  
  #: fortran/resolve.cc:4563
  #, gcc-internal-format, gfc-internal-format
*************** msgid "BOZ literal constant near %L cann
*** 81137,81146 ****
  msgstr "BOZ-litteralkonstanten nära %L får inte förekomma som en operand till en relationsoperator"
  
  #: fortran/resolve.cc:4643
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Inconsistent ranks for operator at %%L and %%L"
  msgid "Inconsistent types for operator at %L and %L: %s and %s"
! msgstr "Inkonsistenta ordningar för operator vid %%L och %%L"
  
  #: fortran/resolve.cc:4667
  #, gcc-internal-format, gfc-internal-format
--- 81050,81058 ----
  msgstr "BOZ-litteralkonstanten nära %L får inte förekomma som en operand till en relationsoperator"
  
  #: fortran/resolve.cc:4643
! #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent types for operator at %L and %L: %s and %s"
! msgstr "Inkonsistenta typer för operatorn vid %L och %L: %s och %s"
  
  #: fortran/resolve.cc:4667
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Inequality comparison for %s at %
*** 81153,81192 ****
  msgstr "Olikhetsjämförelse av %s vid %L"
  
  #: fortran/resolve.cc:4682
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Logicals at %%L must be compared with %s instead of %s"
  msgid "Logicals at %L must be compared with %s instead of %s"
! msgstr "Logiska vid %%L måste jämföras med %s istället för %s"
  
  #: fortran/resolve.cc:4690
! #, fuzzy, gcc-internal-format
! #| msgid "Operands of comparison operator %%<%s%%> at %%L are %s/%s"
  msgid "Operands of comparison operator %qs at %L are %s/%s"
! msgstr "Operanderna till jämförelseoperatorn %%<%s%%> vid %%L är %s/%s"
  
  #: fortran/resolve.cc:4705
! #, fuzzy, gcc-internal-format
! #| msgid "Unknown operator %%<%s%%> at %%L; did you mean %%<%s%%>?"
  msgid "Unknown operator %qs at %L; did you mean %qs?"
! msgstr "Okänd operator %%<%s%%> vid %%L; menade du %%<%s%%>?"
  
  #: fortran/resolve.cc:4708
! #, fuzzy, gcc-internal-format
! #| msgid "Unknown operator %%<%s%%> at %%L"
  msgid "Unknown operator %qs at %L"
! msgstr "Okänd operator %%<%s%%> vid %%L"
  
  #: fortran/resolve.cc:4713
! #, fuzzy, gcc-internal-format
! #| msgid "Operand of user operator %%<%s%%> at %%L is %s"
  msgid "Operand of user operator %qs at %L is %s"
! msgstr "Operanderna till användaroperatorn %%<%s%%> vid %%L är %s"
  
  #: fortran/resolve.cc:4720
! #, fuzzy, gcc-internal-format
! #| msgid "Operands of user operator %%<%s%%> at %%L are %s/%s"
  msgid "Operands of user operator %qs at %L are %s/%s"
! msgstr "Operanderna till användaroperatorn %%<%s%%> vid %%L är %s/%s"
  
  #: fortran/resolve.cc:4734
  #, gcc-internal-format
--- 81065,81098 ----
  msgstr "Olikhetsjämförelse av %s vid %L"
  
  #: fortran/resolve.cc:4682
! #, gcc-internal-format, gfc-internal-format
  msgid "Logicals at %L must be compared with %s instead of %s"
! msgstr "Logiska vid %L måste jämföras med %s istället för %s"
  
  #: fortran/resolve.cc:4690
! #, gcc-internal-format
  msgid "Operands of comparison operator %qs at %L are %s/%s"
! msgstr "Operanderna till jämförelseoperatorn %qs vid %L är %s/%s"
  
  #: fortran/resolve.cc:4705
! #, gcc-internal-format
  msgid "Unknown operator %qs at %L; did you mean %qs?"
! msgstr "Okänd operator %qs vid %L; menade du %qs?"
  
  #: fortran/resolve.cc:4708
! #, gcc-internal-format
  msgid "Unknown operator %qs at %L"
! msgstr "Okänd operator %qs vid %L"
  
  #: fortran/resolve.cc:4713
! #, gcc-internal-format
  msgid "Operand of user operator %qs at %L is %s"
! msgstr "Operanderna till användaroperatorn %qs vid %L är %s"
  
  #: fortran/resolve.cc:4720
! #, gcc-internal-format
  msgid "Operands of user operator %qs at %L are %s/%s"
! msgstr "Operanderna till användaroperatorn %qs vid %L är %s/%s"
  
  #: fortran/resolve.cc:4734
  #, gcc-internal-format
*************** msgid "resolve_operator(): Bad intrinsic
*** 81194,81203 ****
  msgstr "resolve_operator(): Felaktig inbyggd"
  
  #: fortran/resolve.cc:4832
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Inconsistent ranks for operator at %%L and %%L"
  msgid "Inconsistent coranks for operator at %L and %L"
! msgstr "Inkonsistenta ordningar för operator vid %%L och %%L"
  
  #: fortran/resolve.cc:5031
  #, gcc-internal-format, gfc-internal-format
--- 81100,81108 ----
  msgstr "resolve_operator(): Felaktig inbyggd"
  
  #: fortran/resolve.cc:4832
! #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent coranks for operator at %L and %L"
! msgstr "Inkonsistenta co-ordningar för operator vid %L och %L"
  
  #: fortran/resolve.cc:5031
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Array index at %L is an array of
*** 81315,81359 ****
  msgstr "Vektorindex vid %L är en vektor med ordning %d"
  
  #: fortran/resolve.cc:5506
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Argument dim at %L must be scalar"
  msgid "TEAM_NUMBER argument at %L must be scalar"
! msgstr "Dim-argumentet vid %L måste vara skalärt"
  
  #: fortran/resolve.cc:5513
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expression at %L must be of INTEGER type, found %s"
  msgid "TEAM_NUMBER argument at %L must be of INTEGER type, found %s"
! msgstr "Uttryck vid %L måste vara av INTEGER-typ, hittade %s"
  
  #: fortran/resolve.cc:5527
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Argument dim at %L must be scalar"
  msgid "TEAM argument at %L must be scalar"
! msgstr "Dim-argumentet vid %L måste vara skalärt"
  
  #: fortran/resolve.cc:5536
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be of TEAM_TYPE from the intrinsic module ISO_FORTRAN_ENV, found %s"
! msgstr "Artument till TEAM vid %L master vara av TEAM_TYPE från den inbyggda modulen ISO_FORTRAN_ENV, fick %s"
  
  #: fortran/resolve.cc:5550
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Argument dim at %L must be scalar"
  msgid "STAT argument at %L must be scalar"
! msgstr "Dim-argumentet vid %L måste vara skalärt"
  
  #: fortran/resolve.cc:5557
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expression at %L must be of INTEGER type, found %s"
  msgid "STAT argument at %L must be of INTEGER type, found %s"
! msgstr "Uttryck vid %L måste vara av INTEGER-typ, hittade %s"
  
  #: fortran/resolve.cc:5566
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expression at %L must be scalar"
  msgid "STAT's expression at %L must be a variable"
! msgstr "Uttryck vid %L måste vara skalärt"
  
  #: fortran/resolve.cc:5588
  #, gcc-internal-format, gfc-internal-format
--- 81220,81258 ----
  msgstr "Vektorindex vid %L är en vektor med ordning %d"
  
  #: fortran/resolve.cc:5506
! #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be scalar"
! msgstr "Argumentet till TEAM_NUMBER vid %L måste vara skalärt"
  
  #: fortran/resolve.cc:5513
! #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be of INTEGER type, found %s"
! msgstr "Argumentet till TEAM_NUMBER vid %L måste vara av INTEGER-typ, hittade %s"
  
  #: fortran/resolve.cc:5527
! #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be scalar"
! msgstr "Argumentet till TEAM vid %L måste vara skalärt"
  
  #: fortran/resolve.cc:5536
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be of TEAM_TYPE from the intrinsic module ISO_FORTRAN_ENV, found %s"
! msgstr "Argumentet till TEAM vid %L måste vara av TEAM_TYPE från den inbyggda modulen ISO_FORTRAN_ENV, hittade %s"
  
  #: fortran/resolve.cc:5550
! #, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be scalar"
! msgstr "Argumentet till STAT vid %L måste vara skalärt"
  
  #: fortran/resolve.cc:5557
! #, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be of INTEGER type, found %s"
! msgstr "Argumentet till STAT vid %L måste vara av INTEGER-typ, hittade %s"
  
  #: fortran/resolve.cc:5566
! #, gcc-internal-format, gfc-internal-format
  msgid "STAT's expression at %L must be a variable"
! msgstr "STATs uttryck vid %L måste vara en variabel"
  
  #: fortran/resolve.cc:5588
  #, gcc-internal-format, gfc-internal-format
*************** msgid "gfc_expression_rank(): Two array
*** 81406,81415 ****
  msgstr "gfc_expression_rank(): Två vektorspecifikationer"
  
  #: fortran/resolve.cc:6048
! #, fuzzy, gcc-internal-format
! #| msgid "illegal operand "
  msgid "Illegal coarray index"
! msgstr "ogiltig operand "
  
  #: fortran/resolve.cc:6096
  #, gcc-internal-format, gfc-internal-format
--- 81305,81313 ----
  msgstr "gfc_expression_rank(): Två vektorspecifikationer"
  
  #: fortran/resolve.cc:6048
! #, gcc-internal-format
  msgid "Illegal coarray index"
! msgstr "Otillåtet co-vektorindex"
  
  #: fortran/resolve.cc:6096
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Variable %qs at %L not specified
*** 81591,81612 ****
  msgstr "Variabeln %qs vid %L inte angiven i en lokalitetsspecifikation av DO CONCURRENT vid %L men behövs på grund av DEFAULT (NONE)"
  
  #: fortran/resolve.cc:8235
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expected variable name at %C"
  msgid "Expected variable name in %s locality spec at %L"
! msgstr "Variabelnamn förväntades vid %C"
  
  #: fortran/resolve.cc:8244
! #, fuzzy, gcc-internal-format
! #| msgid "Variable %qs at %L has not been assigned a format label"
  msgid "Variable %qs at %L has already been specified in a locality-spec"
! msgstr "Variabeln %qs vid %L har inte tilldelats en formatetikett"
  
  #: fortran/resolve.cc:8254
! #, fuzzy, gcc-internal-format
! #| msgid "SAVE attribute at %L cannot be specified in a PURE procedure"
  msgid "Index variable %qs at %L cannot be specified in a locality-spec"
! msgstr "SAVE-attribut vid %L kan inte anges i en PURE-procedur"
  
  #: fortran/resolve.cc:8267
  #, gcc-internal-format
--- 81489,81507 ----
  msgstr "Variabeln %qs vid %L inte angiven i en lokalitetsspecifikation av DO CONCURRENT vid %L men behövs på grund av DEFAULT (NONE)"
  
  #: fortran/resolve.cc:8235
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected variable name in %s locality spec at %L"
! msgstr "Variabelnamn förväntades i %s lokalitetsspecifikation vid %L"
  
  #: fortran/resolve.cc:8244
! #, gcc-internal-format
  msgid "Variable %qs at %L has already been specified in a locality-spec"
! msgstr "Variabeln %qs vid %L har redan angivits i en lokalitetsspecifikation"
  
  #: fortran/resolve.cc:8254
! #, gcc-internal-format
  msgid "Index variable %qs at %L cannot be specified in a locality-spec"
! msgstr "Indexvariabeln %qs vid %L kan inte anges i en lokalitetsspecifikation"
  
  #: fortran/resolve.cc:8267
  #, gcc-internal-format
*************** msgid "OPTIONAL attribute not permitted
*** 81614,81629 ****
  msgstr "Attributet OPTIONAL är inte tillåtet för %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8274
! #, fuzzy, gcc-internal-format
! #| msgid "Assumed size array %qs in %s clause at %L"
  msgid "Assumed-size array not permitted for %qs in %s locality-spec at %L"
! msgstr "Vektor %qs med antagen storlek i %s-klausul vid %L"
  
  #: fortran/resolve.cc:8287
! #, fuzzy, gcc-internal-format
! #| msgid "ALLOCATABLE object %qs in %s clause at %L"
  msgid "ALLOCATABLE attribute not permitted for %qs in %s locality-spec at %L"
! msgstr "ALLOCATABLE-objekt %qs i %s-klausul vid %L"
  
  #: fortran/resolve.cc:8292
  #, gcc-internal-format
--- 81509,81522 ----
  msgstr "Attributet OPTIONAL är inte tillåtet för %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8274
! #, gcc-internal-format
  msgid "Assumed-size array not permitted for %qs in %s locality-spec at %L"
! msgstr "En vektor med antagen storlek är inte tillåten till %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8287
! #, gcc-internal-format
  msgid "ALLOCATABLE attribute not permitted for %qs in %s locality-spec at %L"
! msgstr "Attributet ALLOCATABLE är inte tillåtet till %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8292
  #, gcc-internal-format
*************** msgid "Nonpointer polymorphic dummy argu
*** 81631,81640 ****
  msgstr "Polymorft attrappargument som inte är en pekare är inte tillåtet för %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8297
! #, fuzzy, gcc-internal-format
! #| msgid "Cray pointer %qs in %s clause at %L"
  msgid "Coarray not permitted for %qs in %s locality-spec at %L"
! msgstr "Cray-pekare %qs i %s-klausul vid %L"
  
  #: fortran/resolve.cc:8303
  #, gcc-internal-format
--- 81524,81532 ----
  msgstr "Polymorft attrappargument som inte är en pekare är inte tillåtet för %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8297
! #, gcc-internal-format
  msgid "Coarray not permitted for %qs in %s locality-spec at %L"
! msgstr "En co-vektor är inte tillåten till %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8303
  #, gcc-internal-format
*************** msgid "Finalizable type not permitted fo
*** 81642,81651 ****
  msgstr "en finalize:bar typ är inte tillåten för %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8308
! #, fuzzy, gcc-internal-format
! #| msgid "List item %qs with allocatable components is not permitted in map clause at %L"
  msgid "Type with ultimate allocatable component not permitted for %qs in %s locality-spec at %L"
! msgstr "Listposten %qs med allokerbara komponenter är inte tillåtet i map-klausulen vid %L"
  
  #: fortran/resolve.cc:8316
  #, gcc-internal-format
--- 81534,81542 ----
  msgstr "en finalize:bar typ är inte tillåten för %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8308
! #, gcc-internal-format
  msgid "Type with ultimate allocatable component not permitted for %qs in %s locality-spec at %L"
! msgstr "Typen med en ytterst allokerbar komponent är inte är inte tillåten till %qs i lokalitetsspecifikationen %s vid %L"
  
  #: fortran/resolve.cc:8316
  #, gcc-internal-format
*************** msgid "VOLATILE attribute not permitted
*** 81658,81673 ****
  msgstr "Attributet VOLATILE är inte tillåtet för %qs i lokalitetsspecifikationen REDUCE vid %L"
  
  #: fortran/resolve.cc:8374
! #, fuzzy, gcc-internal-format
! #| msgid "Unexpected intrinsic type %qs at %L"
  msgid "Expected numeric type for %qs in REDUCE at %L, got %s"
! msgstr "Oväntad inbyggd typ %qs vid %L"
  
  #: fortran/resolve.cc:8383
! #, fuzzy, gcc-internal-format
! #| msgid "Expected block name of %qs in %s statement at %L"
  msgid "Expected logical type for %qs in REDUCE at %L, got %qs"
! msgstr "Blocknamn på %qs i %s-sats förväntades vid %L"
  
  #: fortran/resolve.cc:8401
  #, gcc-internal-format
--- 81549,81562 ----
  msgstr "Attributet VOLATILE är inte tillåtet för %qs i lokalitetsspecifikationen REDUCE vid %L"
  
  #: fortran/resolve.cc:8374
! #, gcc-internal-format
  msgid "Expected numeric type for %qs in REDUCE at %L, got %s"
! msgstr "En numerisk typ förväntades till %qs i REDUCE vid %L, fick %s"
  
  #: fortran/resolve.cc:8383
! #, gcc-internal-format
  msgid "Expected logical type for %qs in REDUCE at %L, got %qs"
! msgstr "En logiskt typ förväntades till %qs i REDUCE vid %L, fick %s"
  
  #: fortran/resolve.cc:8401
  #, gcc-internal-format
*************** msgid "Expected integer type for %qs in
*** 81680,81689 ****
  msgstr "En heltalstyp förväntades för %qs i REDUCE med IAND/IOR/IEOR vid %L, fick %s"
  
  #: fortran/resolve.cc:8448
! #, fuzzy, gcc-internal-format
! #| msgid "variable %qD set but not used"
  msgid "Variable %qs in locality-spec at %L is not used"
! msgstr "variabeln %qD sätts men används inte"
  
  #: fortran/resolve.cc:8479
  #, gcc-internal-format, gfc-internal-format
--- 81569,81577 ----
  msgstr "En heltalstyp förväntades för %qs i REDUCE med IAND/IOR/IEOR vid %L, fick %s"
  
  #: fortran/resolve.cc:8448
! #, gcc-internal-format
  msgid "Variable %qs in locality-spec at %L is not used"
! msgstr "Variabeln %qs i lokalitetsspecifikationen vid %L används inte"
  
  #: fortran/resolve.cc:8479
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Source-expr at %L and allocate-ob
*** 81736,81745 ****
  msgstr "Källuttryck vid %L och allokeringsobjekt vid %L måste ha samma form"
  
  #: fortran/resolve.cc:8943
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Only intrinsic operators can be used in expression at %L"
  msgid "The intrinsic NULL cannot be used as source-expr at %L"
! msgstr "Endast inbyggda operatorer kan användas i uttryck vid %L"
  
  #: fortran/resolve.cc:8951
  #, gcc-internal-format, gfc-internal-format
--- 81624,81632 ----
  msgstr "Källuttryck vid %L och allokeringsobjekt vid %L måste ha samma form"
  
  #: fortran/resolve.cc:8943
! #, gcc-internal-format, gfc-internal-format
  msgid "The intrinsic NULL cannot be used as source-expr at %L"
! msgstr "Den inbyggda NULL kan inte användas som källuttryck vid %L"
  
  #: fortran/resolve.cc:8951
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Variable in the ordinary assignme
*** 82216,82225 ****
  msgstr "Variabeln i den ordinära tilldelningen vid %L är en procedurpekarkomponent"
  
  #: fortran/resolve.cc:12319
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Cannot convert %s to %s at %L"
  msgid "Cannot assign %s to %s at %L"
! msgstr "Kan inte konvertera %s till %s vid %L"
  
  #: fortran/resolve.cc:12367
  #, gcc-internal-format
--- 82103,82111 ----
  msgstr "Variabeln i den ordinära tilldelningen vid %L är en procedurpekarkomponent"
  
  #: fortran/resolve.cc:12319
! #, gcc-internal-format, gfc-internal-format
  msgid "Cannot assign %s to %s at %L"
! msgstr "Kan inte tilldela %s till %s vid %L"
  
  #: fortran/resolve.cc:12367
  #, gcc-internal-format
*************** msgid "Entity %qs at %L has a deferred t
*** 82425,82434 ****
  msgstr "Enheten %qs vid %L har en fördröjd typparameter och kräver antingen attributet POINTER eller ALLOCATABLE"
  
  #: fortran/resolve.cc:14579
! #, fuzzy, gcc-internal-format
! #| msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgid "Automatic object %qs at %L cannot have the SAVE attribute"
! msgstr "CLASS-variabeln %qs vid %L får inte ha attributet PARAMETER"
  
  #. F08:C541. The shape of an array defined in a main program or module
  #. * needs to be constant.
--- 82311,82319 ----
  msgstr "Enheten %qs vid %L har en fördröjd typparameter och kräver antingen attributet POINTER eller ALLOCATABLE"
  
  #: fortran/resolve.cc:14579
! #, gcc-internal-format
  msgid "Automatic object %qs at %L cannot have the SAVE attribute"
! msgstr "Det automatiska objektet %qs vid %L får inte ha attributet SAVE"
  
  #. F08:C541. The shape of an array defined in a main program or module
  #. * needs to be constant.
*************** msgid "Variable %qs at %L is a coarray a
*** 83138,83147 ****
  msgstr "Variabeln %qs vid %L är en co-vektor och är inte ALLOCATABLE, SAVE eller ett attrappargument"
  
  #: fortran/resolve.cc:17799
! #, fuzzy, gcc-internal-format
! #| msgid "Coarray variable %qs at %L shall not have codimensions with deferred shape"
  msgid "Coarray variable %qs at %L shall not have codimensions with deferred shape without allocatable"
! msgstr "Co-vektorvariabeln %qs vid %L skall inte ha co-dimensioner med fördröjd form"
  
  #: fortran/resolve.cc:17807
  #, gcc-internal-format
--- 83023,83031 ----
  msgstr "Variabeln %qs vid %L är en co-vektor och är inte ALLOCATABLE, SAVE eller ett attrappargument"
  
  #: fortran/resolve.cc:17799
! #, gcc-internal-format
  msgid "Coarray variable %qs at %L shall not have codimensions with deferred shape without allocatable"
! msgstr "Co-vektorvariabeln %qs vid %L skall inte ha co-dimensioner med fördröjd form utan allokerbarhet"
  
  #: fortran/resolve.cc:17807
  #, gcc-internal-format
*************** msgid "Non-CHARACTER object %qs in defau
*** 83326,83335 ****
  msgstr "Icke-CHARACTER-objektet %qs i standard-CHARACTER EQUIVALENCE-satsen vid %L"
  
  #: fortran/resolve.cc:18938
! #, fuzzy, gcc-internal-format
! #| msgid "Syntax error in EQUIVALENCE statement at %L"
  msgid "Non-NUMERIC object %qs in default NUMERIC EQUIVALENCE statement at %L"
! msgstr "Syntaxfel i EQUIVALENCE-sats vid %L"
  
  #: fortran/resolve.cc:18956
  #, gcc-internal-format
--- 83210,83218 ----
  msgstr "Icke-CHARACTER-objektet %qs i standard-CHARACTER EQUIVALENCE-satsen vid %L"
  
  #: fortran/resolve.cc:18938
! #, gcc-internal-format
  msgid "Non-NUMERIC object %qs in default NUMERIC EQUIVALENCE statement at %L"
! msgstr "Ett icke-numeriskt objektet %qs i satsen NUMERIC EQUIVALENCE vid %L"
  
  #: fortran/resolve.cc:18956
  #, gcc-internal-format
*************** msgid "!$OMP at %C starts a commented li
*** 83422,83431 ****
  msgstr "!$OMP vid %C inleder en kommentarrad eftersom det varken följs av en blank eller en fortsättningsrad"
  
  #: fortran/scanner.cc:1011
! #, fuzzy, gcc-internal-format
! #| msgid "Ignoring '!$omx' vendor-extension sentinel at %C"
  msgid "Ignoring %<!$omx%> vendor-extension sentinel at %C"
! msgstr "Ignorerar leverantörsutvidgningens vaktpost ”!$omx” vid %C"
  
  #: fortran/scanner.cc:1323 fortran/scanner.cc:1526
  #, gcc-internal-format, gfc-internal-format
--- 83305,83313 ----
  msgstr "!$OMP vid %C inleder en kommentarrad eftersom det varken följs av en blank eller en fortsättningsrad"
  
  #: fortran/scanner.cc:1011
! #, gcc-internal-format
  msgid "Ignoring %<!$omx%> vendor-extension sentinel at %C"
! msgstr "Ignorerar leverantörsutvidgningens vaktpost %<!$omx%> vid %C"
  
  #: fortran/scanner.cc:1323 fortran/scanner.cc:1526
  #, gcc-internal-format, gfc-internal-format
*************** msgid "SAVE attribute at %L cannot be sp
*** 84027,84036 ****
  msgstr "SAVE-attribut vid %L kan inte anges i en PURE-procedur"
  
  #: fortran/symbol.cc:1323
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Duplicate SAVE attribute specified at %L"
  msgid "Duplicate SAVE attribute specified near %C"
! msgstr "Dubblerat SAVE-attribut angivet vid %L"
  
  #: fortran/symbol.cc:1327
  #, gcc-internal-format, gfc-internal-format
--- 83909,83917 ----
  msgstr "SAVE-attribut vid %L kan inte anges i en PURE-procedur"
  
  #: fortran/symbol.cc:1323
! #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate SAVE attribute specified near %C"
! msgstr "Dubblerat SAVE-attribut angivet nära %C"
  
  #: fortran/symbol.cc:1327
  #, gcc-internal-format, gfc-internal-format
*************** msgid "Derived type %qs declared at %L m
*** 84234,84243 ****
  msgstr "Härledd typ %qs deklarerad vid %L måste ha attributet BIND för att vara ett C-interoperativ"
  
  #: fortran/symbol.cc:4640
! #, fuzzy, gcc-internal-format
! #| msgid "Derived type %qs with BIND(C) attribute at %L is empty, and may be inaccessible by the C companion processor"
  msgid "Derived type %qs with BIND(C) attribute at %L has no components"
! msgstr "Härledd typ %qs med attributet BIND(C) vid %L är tom, och kan vara otillgängliga av C-följeslagarprocessorn"
  
  #. Generally emit warning, but not twice if -pedantic is given.
  #: fortran/symbol.cc:4646
--- 84115,84123 ----
  msgstr "Härledd typ %qs deklarerad vid %L måste ha attributet BIND för att vara ett C-interoperativ"
  
  #: fortran/symbol.cc:4640
! #, gcc-internal-format
  msgid "Derived type %qs with BIND(C) attribute at %L has no components"
! msgstr "Den härledda typen %qs med attributet BIND(C) vid %L har inga komponenter"
  
  #. Generally emit warning, but not twice if -pedantic is given.
  #: fortran/symbol.cc:4646
*************** msgid "Overlapping unequal initializers
*** 84306,84315 ****
  msgstr "Överlappande olika initierare i EQUIVALENCE vid %C"
  
  #: fortran/trans-array.cc:2466 fortran/trans-expr.cc:10439
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "The structure constructor at %C has been finalized. This feature was removed by f08/0011. Use -std=f2018 or -std=gnu to eliminate the finalization."
  msgid "The structure constructor at %L has been finalized. This feature was removed by f08/0011. Use -std=f2018 or -std=gnu to eliminate the finalization."
! msgstr "Postkonstrueraren vid %C har avslutats. Denna funktion togs bart av f08/0011. Använd -std=f2018 eller -std=gnu för att eliminera avslutningen."
  
  #. Problems occur when we get something like
  #. integer :: a(lots) = (/(i, i=1, lots)/)
--- 84186,84194 ----
  msgstr "Överlappande olika initierare i EQUIVALENCE vid %C"
  
  #: fortran/trans-array.cc:2466 fortran/trans-expr.cc:10439
! #, gcc-internal-format, gfc-internal-format
  msgid "The structure constructor at %L has been finalized. This feature was removed by f08/0011. Use -std=f2018 or -std=gnu to eliminate the finalization."
! msgstr "Postkonstrueraren vid %L har avslutats. Denna funktion togs bart av f08/0011. Använd -std=f2018 eller -std=gnu för att eliminera avslutningen."
  
  #. Problems occur when we get something like
  #. integer :: a(lots) = (/(i, i=1, lots)/)
*************** msgid "Sorry, !$ACC DECLARE at %L is not
*** 84505,84520 ****
  msgstr "Ledsen, !$ACC DECLARE vid %L är inte tillåtet i BLOCK-konstruktion"
  
  #: fortran/trans-decl.cc:7199 fortran/trans-expr.cc:6117
! #, fuzzy, gcc-internal-format
! #| msgid "Builtin not implemented"
  msgid "Unsigned not yet implemented"
! msgstr "Inbyggd inte implementerad"
  
  #: fortran/trans-decl.cc:8317
! #, fuzzy, gcc-internal-format
! #| msgid "Symbol %qs at %C is already in a COMMON block"
  msgid "Symbol %qs at %L is declared in a BLOCK DATA program unit but is not in a COMMON block"
! msgstr "Symbolen %qs vid %C är redan i ett COMMON-block"
  
  #: fortran/trans-expr.cc:1211
  #, gcc-internal-format, gfc-internal-format
--- 84384,84397 ----
  msgstr "Ledsen, !$ACC DECLARE vid %L är inte tillåtet i BLOCK-konstruktion"
  
  #: fortran/trans-decl.cc:7199 fortran/trans-expr.cc:6117
! #, gcc-internal-format
  msgid "Unsigned not yet implemented"
! msgstr "Teckenlöst är inte implementerat ännu"
  
  #: fortran/trans-decl.cc:8317
! #, gcc-internal-format
  msgid "Symbol %qs at %L is declared in a BLOCK DATA program unit but is not in a COMMON block"
! msgstr "Symbolen %qs vid %L är deklarerad i en programenhet BLOCK DATA men är inte i ett COMMON-block"
  
  #: fortran/trans-expr.cc:1211
  #, gcc-internal-format, gfc-internal-format
*************** msgid "implicit mapping of assumed size
*** 84593,84608 ****
  msgstr "implicit avbildning av vektorn %qD med antagen storlek"
  
  #: fortran/trans-openmp.cc:2149
! #, fuzzy, gcc-internal-format
! #| msgid "comparison with string literal results in unspecified behavior"
  msgid "Mapping of unlimited polymorphic list item %qD is unspecified behavior and unsupported"
! msgstr "jämförelse med stränglitteral resulterar i odefinierat beteende"
  
  #: fortran/trans-openmp.cc:2154
! #, fuzzy, gcc-internal-format
! #| msgid "comparison with string literal results in unspecified behavior"
  msgid "Mapping of polymorphic list item %qD is unspecified behavior"
! msgstr "jämförelse med stränglitteral resulterar i odefinierat beteende"
  
  #: fortran/trans-openmp.cc:4176
  #, gcc-internal-format
--- 84470,84483 ----
  msgstr "implicit avbildning av vektorn %qD med antagen storlek"
  
  #: fortran/trans-openmp.cc:2149
! #, gcc-internal-format
  msgid "Mapping of unlimited polymorphic list item %qD is unspecified behavior and unsupported"
! msgstr "Avbildning av den obegränsade polymorfa listposten %qD är odefinierat beteende och stödjs ej"
  
  #: fortran/trans-openmp.cc:2154
! #, gcc-internal-format
  msgid "Mapping of polymorphic list item %qD is unspecified behavior"
! msgstr "Avbildningen av den polymorfa listposten %qD är odefinierat beteende"
  
  #: fortran/trans-openmp.cc:4176
  #, gcc-internal-format
*************** msgid "gfc_trans_omp_workshare(): Bad st
*** 84655,84664 ****
  msgstr "gfc_trans_omp_workshare(): Felaktig satskod"
  
  #: fortran/trans-openmp.cc:9631
! #, fuzzy, gcc-internal-format
! #| msgid "The base name for 'declare variant' must be specified at %L "
  msgid "The base name for %<declare variant%> must be specified at %L"
! msgstr "Basnamnet för ”declare variant” måste anges vid %L"
  
  #: fortran/trans-openmp.cc:9642
  #, gcc-internal-format, gfc-internal-format
--- 84530,84538 ----
  msgstr "gfc_trans_omp_workshare(): Felaktig satskod"
  
  #: fortran/trans-openmp.cc:9631
! #, gcc-internal-format
  msgid "The base name for %<declare variant%> must be specified at %L"
! msgstr "Basnamnet för %<declare variant%> måste anges vid %L"
  
  #: fortran/trans-openmp.cc:9642
  #, gcc-internal-format, gfc-internal-format
*************** msgid "the %qs clause can only be specif
*** 84726,84783 ****
  msgstr "klausulen %qs kan endast anges om väljaren %<dispatch%> i konstruktionsväljarmängden förekommer i klausulen %<match%> vid %L"
  
  #: fortran/trans-openmp.cc:9912 fortran/trans-openmp.cc:9951
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Expected argument list at %C"
  msgid "Expected positive argument index at %L"
! msgstr "Argumentlista förväntades vid %C"
  
  #: fortran/trans-openmp.cc:9923
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "attribute %qs positional argument %i value %wi exceeds number of function arguments %u"
  msgid "Argument index at %L exceeds number of arguments %d"
! msgstr "värdet %3$wi på argument %2$i till attributet %1$qs överskrider antalet funktionsargument %4$u"
  
  #: fortran/trans-openmp.cc:9961
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "Upper cobound is less than lower cobound at %L"
  msgid "Upper argument index smaller than lower one at %L"
! msgstr "Övre cobound är mindre än den lägre cobound vid %L"
  
  #: fortran/trans-openmp.cc:9987
! #, fuzzy, gcc-internal-format
! #| msgid "Variable %qs is not a dummy argument at %L"
  msgid "List item %qs at %L, declared at %L, is not a dummy argument"
! msgstr "Variabeln %qs är inte ett attrappargument vid %L"
  
  #: fortran/trans-openmp.cc:10001
! #, fuzzy, gcc-internal-format
! #| msgid "List item %qs in %s clause at %L must be of TYPE(C_PTR)"
  msgid "Argument %qs at %L to list item in %<need_device_ptr%> at %L must be a scalar of TYPE(C_PTR)"
! msgstr "Listposten %qs i %s-klausul vid %L måste vara TYPE(C_PTR)"
  
  #: fortran/trans-openmp.cc:10008
! #, fuzzy, gcc-internal-format
! #| msgid "%qs is not valid for %qs"
  msgid "Consider using %<need_device_addr%> instead"
! msgstr "%qs är inte giltigt för %qs"
  
  #: fortran/trans-openmp.cc:10015
! #, fuzzy, gcc-internal-format
! #| msgid "Argument %qs of elemental procedure at %L cannot have the ALLOCATABLE attribute"
  msgid "Argument %qs at %L to list item in %<need_device_addr%> at %L must not have the VALUE attribute"
! msgstr "Argumentet %qs av elementär procedur vid %L får inte ha attributet ALLOCATABLE"
  
  #: fortran/trans-openmp.cc:10024
! #, fuzzy, gcc-internal-format
! #| msgid "%qs clause at %L specified more than once"
  msgid "%qs at %L is specified more than once"
! msgstr "Klausulen %qs vid %L angiven mer än en gång"
  
  #: fortran/trans-openmp.cc:10041
! #, fuzzy, gcc-internal-format
! #| msgid "%qs is not valid for %qs"
  msgid "%<need_device_addr%> not yet supported"
! msgstr "%qs är inte giltigt för %qs"
  
  #: fortran/trans-stmt.cc:576
  #, gcc-internal-format, gfc-internal-format
--- 84600,84648 ----
  msgstr "klausulen %qs kan endast anges om väljaren %<dispatch%> i konstruktionsväljarmängden förekommer i klausulen %<match%> vid %L"
  
  #: fortran/trans-openmp.cc:9912 fortran/trans-openmp.cc:9951
! #, gcc-internal-format, gfc-internal-format
  msgid "Expected positive argument index at %L"
! msgstr "Ett positivt argumentindex förväntades vid %L"
  
  #: fortran/trans-openmp.cc:9923
! #, gcc-internal-format, gfc-internal-format
  msgid "Argument index at %L exceeds number of arguments %d"
! msgstr "Argumentindexet vid %L överskrider antalet argument %d"
  
  #: fortran/trans-openmp.cc:9961
! #, gcc-internal-format, gfc-internal-format
  msgid "Upper argument index smaller than lower one at %L"
! msgstr "Det övre argumentindexet är mindre än det lägre vid %L"
  
  #: fortran/trans-openmp.cc:9987
! #, gcc-internal-format
  msgid "List item %qs at %L, declared at %L, is not a dummy argument"
! msgstr "Listposten %qs vid %L, deklarerad vid %L, är inte ett attrappargument"
  
  #: fortran/trans-openmp.cc:10001
! #, gcc-internal-format
  msgid "Argument %qs at %L to list item in %<need_device_ptr%> at %L must be a scalar of TYPE(C_PTR)"
! msgstr "Argumentet %qs vid %L till listposten i %<need_device_ptr%> vid %L måste vara en skalär av TYPE(C_PTR)"
  
  #: fortran/trans-openmp.cc:10008
! #, gcc-internal-format
  msgid "Consider using %<need_device_addr%> instead"
! msgstr "Överväg att använda %<need_device_addr%> istället"
  
  #: fortran/trans-openmp.cc:10015
! #, gcc-internal-format
  msgid "Argument %qs at %L to list item in %<need_device_addr%> at %L must not have the VALUE attribute"
! msgstr "Argumentet %qs vid %L till listposten i %<need_device_addr%> vid %L får inte ha attributet VALUE"
  
  #: fortran/trans-openmp.cc:10024
! #, gcc-internal-format
  msgid "%qs at %L is specified more than once"
! msgstr "%qs vid %L anges mer än en gång"
  
  #: fortran/trans-openmp.cc:10041
! #, gcc-internal-format
  msgid "%<need_device_addr%> not yet supported"
! msgstr "%<need_device_addr%> stödjs inte ännu"
  
  #: fortran/trans-stmt.cc:576
  #, gcc-internal-format, gfc-internal-format
*************** msgid "gfc_trans_select(): Bad type for
*** 84800,84816 ****
  msgstr "gfc_trans_select(): Felaktig typ för Bad type for case-uttryck."
  
  #: fortran/trans-stmt.cc:5170
! #, fuzzy, gcc-internal-format
! #| msgid "Sorry, the event component of derived type at %L is not yet supported"
  msgid "Sorry, %s specifier at %L for assumed-size array %qs is not yet supported"
! msgstr "Ledsen, händelsekomponenten hos härledd typ vid %L stödjs inte ännu"
  
  #. Cf. PR fortran/
  #: fortran/trans-stmt.cc:5207
! #, fuzzy, gcc-internal-format
! #| msgid "Sorry, the event component of derived type at %L is not yet supported"
  msgid "Sorry, LOCAL specifier at %L for %qs of derived type with default initializer is not yet supported"
! msgstr "Ledsen, händelsekomponenten hos härledd typ vid %L stödjs inte ännu"
  
  #: fortran/trans-types.cc:619
  #, gcc-internal-format
--- 84665,84679 ----
  msgstr "gfc_trans_select(): Felaktig typ för Bad type for case-uttryck."
  
  #: fortran/trans-stmt.cc:5170
! #, gcc-internal-format
  msgid "Sorry, %s specifier at %L for assumed-size array %qs is not yet supported"
! msgstr "Ledsen, specificeraren %s vid %L för vektorn %qs med antagen storlek stödjs inte ännu"
  
  #. Cf. PR fortran/
  #: fortran/trans-stmt.cc:5207
! #, gcc-internal-format
  msgid "Sorry, LOCAL specifier at %L for %qs of derived type with default initializer is not yet supported"
! msgstr "Ledsen, specificeraren LOCAL vid %L för %qs av härledd typp med standardinitierare stödjs inte ännu"
  
  #: fortran/trans-types.cc:619
  #, gcc-internal-format
*************** msgid "unexpected EOF"
*** 84974,84989 ****
  msgstr "oväntat filslut"
  
  #: go/gofrontend/expressions.cc:985
! #, fuzzy, gcc-internal-format
! #| msgid "invalid use of %qD"
  msgid "invalid use of type"
! msgstr "ogiltig användning av %qD"
  
  #: go/gofrontend/statements.cc:2670
! #, fuzzy, gcc-internal-format
! #| msgid "expected expression"
  msgid "expected call expression"
! msgstr "uttryck förväntades"
  
  #: lto/lto-common.cc:2041
  #, gcc-internal-format
--- 84837,84850 ----
  msgstr "oväntat filslut"
  
  #: go/gofrontend/expressions.cc:985
! #, gcc-internal-format
  msgid "invalid use of type"
! msgstr "ogiltig användning av typen"
  
  #: go/gofrontend/statements.cc:2670
! #, gcc-internal-format
  msgid "expected call expression"
! msgstr "ett anropsuttryck förväntades"
  
  #: lto/lto-common.cc:2041
  #, gcc-internal-format
*************** msgid "label definition in %<constexpr%>
*** 86483,86492 ****
  msgstr "en etikettdefinition i en %<constexpr%>-funktion är endast tillgängligt med %<-std=c++2b%> eller %<-std=gnu++2b%>"
  
  #: rust/backend/rust-tree.cc:616
! #, fuzzy, gcc-internal-format
! #| msgid "ignoring return value of %qD, that must be used: %<%s%>"
  msgid "ignoring return value of %qD, that must be used: %qs"
! msgstr "ignorerar returvärdet av %qD, som måste användas: %<%s%>"
  
  #: rust/backend/rust-tree.cc:617
  #, gcc-internal-format
--- 86344,86352 ----
  msgstr "en etikettdefinition i en %<constexpr%>-funktion är endast tillgängligt med %<-std=c++2b%> eller %<-std=gnu++2b%>"
  
  #: rust/backend/rust-tree.cc:616
! #, gcc-internal-format
  msgid "ignoring return value of %qD, that must be used: %qs"
! msgstr "ignorerar returvärdet av %qD, som måste användas: %qs"
  
  #: rust/backend/rust-tree.cc:617
  #, gcc-internal-format
*************** msgid "ignoring return value of %qD, tha
*** 86494,86503 ****
  msgstr "ignorerar returvärdet av %qD, som måste användas"
  
  #: rust/backend/rust-tree.cc:633
! #, fuzzy, gcc-internal-format
! #| msgid "ignoring returned value of type %qT, that must be used: %<%s%>"
  msgid "ignoring returned value of type %qT, that must be used: %qs"
! msgstr "ignorerar returnerat värde av typen %qT, som måste användas: %<%s%>"
  
  #: rust/backend/rust-tree.cc:634
  #, gcc-internal-format
--- 86354,86362 ----
  msgstr "ignorerar returvärdet av %qD, som måste användas"
  
  #: rust/backend/rust-tree.cc:633
! #, gcc-internal-format
  msgid "ignoring returned value of type %qT, that must be used: %qs"
! msgstr "ignorerar returnerat värde av typen %qT, som måste användas: %qs"
  
  #: rust/backend/rust-tree.cc:634
  #, gcc-internal-format
*************** msgstr "oanvänt namn %qE"
*** 86514,87676 ****
  #, gcc-internal-format, gfc-internal-format
  msgid "are you trying to break %s? how dare you?"
  msgstr "försöker du göra sönder %s? hur vågar du?"
- 
- #, gcc-internal-format
- #~ msgid "%qF requires arch15 or higher"
- #~ msgstr "%qF behöver arch15 eller högre"
- 
- #, gcc-internal-format
- #~ msgid "%qs matching variant requires arch15 or higher"
- #~ msgstr "%qs-matchning kräver arch15 eller högre"
- 
- #, gcc-internal-format
- #~ msgid "Builtin %qF requires arch15 or higher"
- #~ msgstr "Inbyggd %qF kräver arch15 eller högre"
- 
- #, gcc-internal-format
- #~ msgid "use of %<this%> in a constant expression"
- #~ msgstr "%<this%> används i ett konstant uttryck"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "FIRSTPRIVATE with polymorphic list item at %L is unspecified behavior"
- #~ msgstr "FIRSTPRIVATE med ett polymorft listelement vid %L är ett ospecificerat beteeende"
- 
- #, gcc-internal-format
- #~ msgid "Sorry, LOCAL and LOCAL_INIT are not yet supported for %<do concurrent%> constructs at %L"
- #~ msgstr "Ledsen, LOCAL och LOCAL_INIT stödjs inte ännu för konstruktioner %<do concurrent%> vid %L"
- 
- #, fuzzy, gcc-internal-format
- #~| msgid "comparison with string literal results in unspecified behavior"
- #~ msgid "Implicit mapping of polymorphic variable %qD is unspecified behavior"
- #~ msgstr "jämförelse med stränglitteral resulterar i odefinierat beteende"
- 
- #, no-c-format
- #~ msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1 built-in functions and code generation."
- #~ msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX10.1-funktioner och -kodgenerering."
- 
- #, no-c-format
- #~ msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1 and AVX10.2 built-in functions and code generation."
- #~ msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX10.1- och AVX10.2-funktioner och -kodgenerering."
- 
- #, gcc-internal-format
- #~ msgid "%<-mesa%> is deprecated and support for ESA/390 will be removed; use %<-mzarch%> instead"
- #~ msgstr "%<-mesa%> bör undvikas och stöd för ESA/390 kommer tas bort; anvnd %<-march%> istället"
- 
- #, gcc-internal-format
- #~ msgid "%<append_args%> clause not yet supported for %qD, except when specifying all %d objects in the %<interop%> clause of the %<dispatch%> directive"
- #~ msgstr "%<append_args%>-klausulen stödjs inte ännu för %qD, utom när alla %d objekt specificeras i %<interop%>-klausulen till %<dispatch%>-direktivet"
- 
- #, gcc-internal-format
- #~ msgid "required by %<dispatch%> construct"
- #~ msgstr "krävs av konstruktionen %<dispatch%>"
- 
- #, gcc-internal-format
- #~ msgid "%<#pragma omp interop%> not yet supported"
- #~ msgstr "%<#pragma omp interop%> stödjs inte ännu"
- 
- #, gcc-internal-format
- #~ msgid "%<init%> clause with modifier other than %<prefer_type%>, %<target%> or %<targetsync%>"
- #~ msgstr "en klausul %<init%> med en annan modifierare än %<prefer_type%>, %<target%> eller %<targetsync%>"
- 
- #, c-format
- #~ msgid "bad I/O address 0x"
- #~ msgstr "felaktig I/O-adress 0x"
- 
- #, gcc-internal-format
- #~ msgid "late or dynamic variant resolution required for call in a %<dispatch%> construct"
- #~ msgstr "sen eller dynamisk variantupplösning krävs för anrop i en %<dispatch%>-konstruktion"
- 
- #, gcc-internal-format
- #~ msgid "unexpected %<interop%> clause as invoked procedure %qD is not variant substituted"
- #~ msgstr "oväntad %<interop%>-klausul eftersom den anropade proceduren %qD inte är variantsubtituerad"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "TEAM= attribute in %C misplaced"
- #~ msgstr "attributet TEAM= i %C är felplacerat"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "STAT= attribute in %C misplaced"
- #~ msgstr "attributet STAT= i %C är felplacerat"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "Sorry, not yet able to call a non-pure/non-elemental function %s in a coarray reference;  use a temporary for the function's result instead"
- #~ msgstr "Ledsen, kan inte ännu anropa en icke-ren/icke-elementär funktion %s i en co-vektor-referens; använd en temporär till funktionsresultatet istället"
- 
- #~ msgid "You need a C startup file for -msys-crt0="
- #~ msgstr "Du behöver en C-uppstartsfil för -msys-crt0="
- 
- #, no-c-format
- #~ msgid "Enable certain features present in the Concepts TS."
- #~ msgstr "Aktivera vissa funktioner som finns i Concepts TS."
- 
- #, no-c-format
- #~ msgid "Conform to the ISO 2023 C++ draft standard (experimental and incomplete support)."
- #~ msgstr "Följ standardutkastet ISO 2023 C++ (experimentellt och ofullständigt stöd)."
- 
- #, no-c-format
- #~ msgid "Conform to the ISO 2023 C standard draft (expected to be published in 2024) (experimental and incomplete support)."
- #~ msgstr "Följ standardutkastet ISO 2023 C (förväntas publiceras under 2024) (experimentellt och ofullständigt stöd)."
- 
- #, no-c-format
- #~ msgid "Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support)."
- #~ msgstr "Följ standardutkastet ISO 2023 C++ med GNU-utökningar (experimentellt och ofullständigt stöd)."
- 
- #, no-c-format
- #~ msgid "Conform to the ISO 2023 C standard draft (expected to be published in 2024) with GNU extensions (experimental and incomplete support)."
- #~ msgstr "Följ standardutkastet ISO 2023 C (förväntas publiceras under 2024) med GNU-utökningar (experimentellt och ofullständigt stöd)."
- 
- #, no-c-format
- #~ msgid "When generating -fpic code, allow the use of PLTs. Ignored for fno-pic."
- #~ msgstr "Vid generering av -fpic-kod, tillåt användningen av PLT:er.  Ignoreras för fno-pic."
- 
- #, no-c-format
- #~ msgid "Use LRA instead of reload."
- #~ msgstr "Använd LRA istället för omladdning."
- 
- #, no-c-format
- #~ msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation."
- #~ msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F- och AVX512PF-funktioner och -kodgenerering."
- 
- #, no-c-format
- #~ msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation."
- #~ msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F- och AVX512ER-funktioner och -kodgenerering."
- 
- #, no-c-format
- #~ msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation."
- #~ msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX5124FMAPS-funktioner och -kodgenerering."
- 
- #, no-c-format
- #~ msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation."
- #~ msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX5124VNNIW-funktioner och -kodgenerering."
- 
- #, no-c-format
- #~ msgid "Support PREFETCHWT1 built-in functions and code generation."
- #~ msgstr "Stöd inbyggda PREFETCHWT1-funktioner och -kodgenerering."
- 
- #, no-c-format
- #~ msgid "Link with a limited version of the C library."
- #~ msgstr "Länka med en begränsad version av C-biblioteket."
- 
- #, no-c-format
- #~ msgid "Name of system library to link against."
- #~ msgstr "Namn på systembiblioteket att länka mot."
- 
- #, no-c-format
- #~ msgid "Name of the startfile."
- #~ msgstr "Namn på startfilen."
- 
- #, no-c-format
- #~ msgid "Link with HAL BSP."
- #~ msgstr "Länka med HAL BSP."
- 
- #, no-c-format
- #~ msgid "Enable DIV, DIVU."
- #~ msgstr "Aktivera DIV, DIVU."
- 
- #, no-c-format
- #~ msgid "Enable MUL instructions."
- #~ msgstr "Använd MUL-instruktioner."
- 
- #, no-c-format
- #~ msgid "Enable MULX instructions, assume fast shifter."
- #~ msgstr "Använd MULX-instruktioner, anta snabb skiftare."
- 
- #, no-c-format
- #~ msgid "Use table based fast divide (default at -O3)."
- #~ msgstr "Använd tabellbaserad snabb division (standard för -O3)."
- 
- #, no-c-format
- #~ msgid "All memory accesses use I/O load/store instructions."
- #~ msgstr "Alla minnesåtkomster använder I/O ladda-/lagrainstruktioner."
- 
- #, no-c-format
- #~ msgid "Volatile memory accesses use I/O load/store instructions."
- #~ msgstr "Volatila minnesåtkomster använder I/O ladda-/lagrainstruktioner."
- 
- #, no-c-format
- #~ msgid "Volatile memory accesses do not use I/O load/store instructions."
- #~ msgstr "Volatila minnesåtkomster använder inte I/O ladda-/lagrainstruktioner."
- 
- #, no-c-format
- #~ msgid "Enable/disable GP-relative addressing."
- #~ msgstr "Aktivera/avaktivera GP-relativ adressering."
- 
- #, no-c-format
- #~ msgid "Valid options for GP-relative addressing (for -mgpopt):"
- #~ msgstr "Giltiga flaggor för GP-relativ adressering (för -mgpopt):"
- 
- #, no-c-format
- #~ msgid "Equivalent to -mgpopt=none."
- #~ msgstr "Ekvivalent med -mgpopt=none."
- 
- #, no-c-format
- #~ msgid "Floating point custom instruction configuration name."
- #~ msgstr "Namn på anpassad instruktionskonfiguration för flyttal."
- 
- #, no-c-format
- #~ msgid "Do not use the ftruncds custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen ftruncds."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of ftruncds custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion ftruncds."
- 
- #, no-c-format
- #~ msgid "Do not use the fextsd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fextsd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fextsd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fextsd."
- 
- #, no-c-format
- #~ msgid "Do not use the fixdu custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fixdu."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fixdu custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fixdu."
- 
- #, no-c-format
- #~ msgid "Do not use the fixdi custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fixdi."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fixdi custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fixdi."
- 
- #, no-c-format
- #~ msgid "Do not use the fixsu custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fixsu."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fixsu custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fixsu."
- 
- #, no-c-format
- #~ msgid "Do not use the fixsi custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fixsi."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fixsi custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fixsi."
- 
- #, no-c-format
- #~ msgid "Do not use the floatud custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen floatud."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of floatud custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion floatud."
- 
- #, no-c-format
- #~ msgid "Do not use the floatid custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen floatid."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of floatid custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion floatid."
- 
- #, no-c-format
- #~ msgid "Do not use the floatus custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen floatus."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of floatus custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion floatus."
- 
- #, no-c-format
- #~ msgid "Do not use the floatis custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen floatis."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of floatis custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion floatis."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpned custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpned."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpned custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpned."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpeqd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpeqd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpeqd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpeqd."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpged custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpged."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpged custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpged."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpgtd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpgtd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpgtd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpgtd."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpled custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpled."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpled custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpled."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpltd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpltd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpltd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpltd."
- 
- #, no-c-format
- #~ msgid "Do not use the flogd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen flogd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of flogd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion flogd."
- 
- #, no-c-format
- #~ msgid "Do not use the fexpd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fexpd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fexpd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fexpd."
- 
- #, no-c-format
- #~ msgid "Do not use the fatand custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fatand."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fatand custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fatand."
- 
- #, no-c-format
- #~ msgid "Do not use the ftand custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen ftand."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of ftand custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion ftand."
- 
- #, no-c-format
- #~ msgid "Do not use the fsind custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fsind."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fsind custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fsind."
- 
- #, no-c-format
- #~ msgid "Do not use the fcosd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcosd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcosd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcosd."
- 
- #, no-c-format
- #~ msgid "Do not use the fsqrtd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fsqrtd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fsqrtd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fsqrtd."
- 
- #, no-c-format
- #~ msgid "Do not use the fabsd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fabsd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fabsd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fabsd."
- 
- #, no-c-format
- #~ msgid "Do not use the fnegd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fnegd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fnegd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fnegd."
- 
- #, no-c-format
- #~ msgid "Do not use the fmaxd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fmaxd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fmaxd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fmaxd."
- 
- #, no-c-format
- #~ msgid "Do not use the fmind custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fmind."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fmind custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fmind."
- 
- #, no-c-format
- #~ msgid "Do not use the fdivd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fdivd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fdivd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fdivd."
- 
- #, no-c-format
- #~ msgid "Do not use the fmuld custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fmuld."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fmuld custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fmuld."
- 
- #, no-c-format
- #~ msgid "Do not use the fsubd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fsubd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fsubd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fsubd."
- 
- #, no-c-format
- #~ msgid "Do not use the faddd custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen faddd."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of faddd custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion faddd."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpnes custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpnes."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpnes custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpnes."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpeqs custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpeqs."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpeqs custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpeqs."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpges custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpges."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpges custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpges."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmpgts custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmpgts."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmpgts custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmpgts."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmples custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmples."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmples custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmples."
- 
- #, no-c-format
- #~ msgid "Do not use the fcmplts custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcmplts."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcmplts custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcmplts."
- 
- #, no-c-format
- #~ msgid "Do not use the flogs custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen flogs."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of flogs custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion flogs."
- 
- #, no-c-format
- #~ msgid "Do not use the fexps custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fexps."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fexps custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fexps."
- 
- #, no-c-format
- #~ msgid "Do not use the fatans custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fatans."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fatans custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fatans."
- 
- #, no-c-format
- #~ msgid "Do not use the ftans custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen ftans."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of ftans custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion ftans."
- 
- #, no-c-format
- #~ msgid "Do not use the fsins custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fsins."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fsins custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fsins."
- 
- #, no-c-format
- #~ msgid "Do not use the fcoss custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fcoss."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fcoss custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fcoss."
- 
- #, no-c-format
- #~ msgid "Do not use the fsqrts custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fsqrts."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fsqrts custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fsqrts."
- 
- #, no-c-format
- #~ msgid "Do not use the fabss custom instr."
- #~ msgstr "Använd inte den anpassade instruktionen fabss."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fabss custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fabss."
- 
- #, no-c-format
- #~ msgid "Do not use the fnegs custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fnegs."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fnegs custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fnegs."
- 
- #, no-c-format
- #~ msgid "Do not use the fmaxs custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fmaxs."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fmaxs custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fmaxs."
- 
- #, no-c-format
- #~ msgid "Do not use the fmins custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fmins."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fmins custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fmins."
- 
- #, no-c-format
- #~ msgid "Do not use the fdivs custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fdivs."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fdivs custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fdivs."
- 
- #, no-c-format
- #~ msgid "Do not use the fmuls custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fmuls."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fmuls custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fmuls."
- 
- #, no-c-format
- #~ msgid "Do not use the fsubs custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fsubs."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fsubs custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fsubs."
- 
- #, no-c-format
- #~ msgid "Do not use the fadds custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fadds."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fadds custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fadds."
- 
- #, no-c-format
- #~ msgid "Do not use the frdy custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen frdy."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of frdy custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion frdy."
- 
- #, no-c-format
- #~ msgid "Do not use the frdxhi custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen frdxhi."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of frdxhi custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion frdxhi."
- 
- #, no-c-format
- #~ msgid "Do not use the frdxlo custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen frdxlo."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of frdxlo custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion frdxlo."
- 
- #, no-c-format
- #~ msgid "Do not use the fwry custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fwry."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fwry custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fwry."
- 
- #, no-c-format
- #~ msgid "Do not use the fwrx custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen fwrx."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of fwrx custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion fwrx."
- 
- #, no-c-format
- #~ msgid "Do not use the round custom instruction."
- #~ msgstr "Använd inte den anpassade instruktionen round."
- 
- #, no-c-format
- #~ msgid "Integer id (N) of round custom instruction."
- #~ msgstr "Heltals-id (N) för anpassad instruktion round."
- 
- #, no-c-format
- #~ msgid "Valid Nios II ISA levels (for -march):"
- #~ msgstr "Giltiga Nios II ISA-nivåer (för -march):"
- 
- #, no-c-format
- #~ msgid "Enable generation of R2 BMX instructions."
- #~ msgstr "Aktivera generering av R2 BMX-instruktioner."
- 
- #, no-c-format
- #~ msgid "Enable generation of R2 CDX instructions."
- #~ msgstr "Använd generering av R2 CDX-instruktioner."
- 
- #, no-c-format
- #~ msgid "Regular expression matching additional GP-addressible section names."
- #~ msgstr "Reguljärt uttryck som matchar ytterligare GP-adresserbara sektionsnamn."
- 
- #, no-c-format
- #~ msgid "Regular expression matching section names for r0-relative addressing."
- #~ msgstr "Reguljärt uttryck som matchar sektionsnamn för r0-relativ adressering."
- 
- #, no-c-format
- #~ msgid "Target DFLOAT double precision code."
- #~ msgstr "Sikta på DFLOAT-dubbelprecisionskod."
- 
- #, no-c-format
- #~ msgid "Improve GCC's ability to track column numbers in large source files, at the expense of slower compilation."
- #~ msgstr "Förbättra GCC:s förmåga att följa kolumnnummer i stora källkodsfiler, på bekostnad av långsammare kompilering."
- 
- #~ msgid "bad address, not an I/O address:"
- #~ msgstr "felaktig adress, inte en I/O-adress:"
- 
- #~ msgid "candidate:"
- #~ msgstr "kandidat:"
- 
- #~ msgid "%r%s:%d:%d:%R   [ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\n"
- #~ msgstr "%r%s:%d:%d:%R   [ hoppar över %d instansieringskontexter, använd -ftemplate-backtrace-limit=0 för att avaktivera ]\n"
- 
- #~ msgid "%r%s:%d:%d:%R   in %<constexpr%> expansion of %qs"
- #~ msgstr "%r%s:%d:%d:%R   i expansion av %<constexpr%> i %qs"
- 
- #, gcc-internal-format
- #~ msgid "AVX512PF support will be removed in GCC 15"
- #~ msgstr "stöd för AVX512PF kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "AVX512ER support will be removed in GCC 15"
- #~ msgstr "stöd för AVX512ER kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "AVX5124FMAPS support will be removed in GCC 15"
- #~ msgstr "stöd för AVX5124FMAPS kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "AVX5124VNNIW support will be removed in GCC 15"
- #~ msgstr "stöd för AVX5124VNNIW kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "PREFETCHWT1 support will be removed in GCC 15"
- #~ msgstr "stöd för PREFETCHWT1 kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "%<or%> of unmatched not-equal tests is always 1"
- #~ msgstr "%<or%> mellan omatchade olikhetstester är alltid 1"
- 
- #, gcc-internal-format
- #~ msgid "%<and%> of mutually exclusive equal-tests is always 0"
- #~ msgstr "%<and%> mellan ömsesidigt uteslutande likhetstester är alltid 0"
- 
- #, gcc-internal-format
- #~ msgid "%+qD causes a section type conflict"
- #~ msgstr "%+qD orsakar en sektionstypkonflikt"
- 
- #, gcc-internal-format
- #~ msgid "section type conflict"
- #~ msgstr "sektionstypskonflikt"
- 
- #, gcc-internal-format
- #~ msgid "%s %<%s%.*s%> expects argument of type %<%T%s%>, but argument %d has type %qT"
- #~ msgstr "%s %<%s%.*s%> förväntar sig argument av typen %<%T%s%>, men argument %d har typen %qT"
- 
- #, gcc-internal-format
- #~ msgid "%s %<%s%.*s%> expects a matching %<%T%s%> argument"
- #~ msgstr "%s %<%s%.*s%> förväntar sig ett matchande %<%T%s%>-argument"
- 
- #, gcc-internal-format
- #~ msgid "adding %<-flarge-source-files%> will allow for more column-tracking support, at the expense of compilation time and memory"
- #~ msgstr "att lägga till %<-flarge-source-files%> kommer tillåta mer kolumnspårningstöd, på bekostnad av kompileringstid och minne"
- 
- #, gcc-internal-format
- #~ msgid "%<-fconcepts-ts%> is deprecated and will be removed in GCC 15; please convert your code to C++20 concepts"
- #~ msgstr "%<-fconcepts-ts%> undanbedes och kommer tas bort i GCC 15; konvertera din kod till C++20-koncept"
- 
- #, gcc-internal-format
- #~ msgid "previously declared as %s with bound %<%s%>"
- #~ msgstr "tidigare deklaration som %s med gränsen %<%s%>"
- 
- #, gcc-internal-format
- #~ msgid "bad value %<%s%> for %<-mtls-size=%> switch"
- #~ msgstr "felaktigt värde %<%s%> till flaggan %<-mtls-size=%>"
- 
- #, gcc-internal-format
- #~ msgid "invalid argument %<%s%> for %<%s%>"
- #~ msgstr "ogiltigt argument %<%s%> till %<%s%>"
- 
- #, gcc-internal-format
- #~ msgid "nested function trampolines not supported on GCN5 due to non-executable stacks"
- #~ msgstr "nästade funktionstrampoliner stödjs inte på GCN5 på grund av icke exekverbar stack"
- 
- #, gcc-internal-format
- #~ msgid "cannot open intermediate gcn obj file"
- #~ msgstr "kan inte öppna intermediär gcn-obj-fil"
- 
- #, gcc-internal-format
- #~ msgid "the forth argument must be scale 1, 2, 4, 8"
- #~ msgstr "det fjärde argumentet ha skala 1, 2, 4, 8"
- 
- #, gcc-internal-format
- #~ msgid "incorrect hint operand"
- #~ msgstr "felaktig tipsoperand"
- 
- #, gcc-internal-format
- #~ msgid "%<-mtune=knl%> support will be removed in GCC 15"
- #~ msgstr "stödet för %<-mtune=knl%> kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "%<target(\"tune=knl\")%> support will be removed in GCC 15"
- #~ msgstr "stödet för %<target(\"tune=knl\")%> kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "%<-mtune=knm%> support will be removed in GCC 15"
- #~ msgstr "stödet för %<-mtune=knm%> kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "%<target(\"tune=knm\")%> support will be removed in GCC 15"
- #~ msgstr "stödet för %<target(\"tune=knm\")%> kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "%<-march=knl%> support will be removed in GCC 15"
- #~ msgstr "stödet för %<-march=knl%> kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "%<target(\"arch=knl\")%> support will be removed in GCC 15"
- #~ msgstr "stödet för %<target(\"arch=knl\")%> kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "%<-march=knm%> support will be removed in GCC 15"
- #~ msgstr "stödet för %<-march=knm%> kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "%<target(\"arch=knm\")%> support will be removed in GCC 15"
- #~ msgstr "stödet för %<target(\"arch=knm\")%> kommer tas bort i GCC 15"
- 
- #, gcc-internal-format
- #~ msgid "%<-mfpxx%> requires %<-mlra%>"
- #~ msgstr "%<-mfpxx%> kräver %<-mlra%>"
- 
- #, gcc-internal-format
- #~ msgid "Unknown form for stack limit expression"
- #~ msgstr "Okänd form på stackgränsuttryck"
- 
- #, gcc-internal-format
- #~ msgid "switch %<-mcustom-%s%> is required for double-precision floating-point"
- #~ msgstr "flaggan %<-mcustom-%s%> behövs för dubbel precisions flyttal"
- 
- #, gcc-internal-format
- #~ msgid "conflicting use of %<-mcustom%> switches, target attributes, and/or %<__builtin_custom_%> functions"
- #~ msgstr "motstridig användning av %<-mcustom%>-flaggor, målattribut, och/eller %<__builtin_custom_%>-funktioner"
- 
- #, gcc-internal-format
- #~ msgid "ignoring unrecognized switch %<-mcustom-fpu-cfg%> value %<%s%>"
- #~ msgstr "ignorerar okänt värde %<%s%> till flaggan %<-mcustom-fpu-cfg%>"
- 
- #, gcc-internal-format
- #~ msgid "switch %<-mcustom-%s%> value %d must be between 0 and 255"
- #~ msgstr "värdet %2$d till flaggan %<-mcustom-%1$s%> måste vara mellan 0 och 255"
- 
- #, gcc-internal-format
- #~ msgid "position-independent code requires the Linux ABI"
- #~ msgstr "positionsoberoende kod behöver Linux-ABI:et"
- 
- #, gcc-internal-format
- #~ msgid "PIC support for %<-fstack-limit-symbol%>"
- #~ msgstr "PIC-stöd för %<-fstack-limit-symbol%>"
- 
- #, gcc-internal-format
- #~ msgid "%<-mgpopt%> not supported with PIC"
- #~ msgstr "%<-mgpopt%> stödjs inte med PIC"
- 
- #, gcc-internal-format
- #~ msgid "%<-mgprel-sec=%> not supported with PIC"
- #~ msgstr "%<-mgprel-sec=%> stödjs inte med PIC"
- 
- #, gcc-internal-format
- #~ msgid "%<-mr0rel-sec=%> not supported with PIC"
- #~ msgstr "%<-mr0rel-sec=%> stödjs inte med PIC"
- 
- #, gcc-internal-format
- #~ msgid "%<-mgprel-sec=%> argument is not a valid regular expression"
- #~ msgstr "argumentet till %<-mgprel-sec=%> är inte ett giltigt reguljärt uttryck"
- 
- #, gcc-internal-format
- #~ msgid "%<-mr0rel-sec=%> argument is not a valid regular expression"
- #~ msgstr "argumentet till %<-mr0rel-sec=%> är inte ett giltigt reguljärt uttryck"
- 
- #, gcc-internal-format
- #~ msgid "BMX instructions are only supported with R2 architecture"
- #~ msgstr "BMX-instruktioner stödjs endast med R2-arkitekturen"
- 
- #, gcc-internal-format
- #~ msgid "CDX instructions are only supported with R2 architecture"
- #~ msgstr "CDX-instruktioner stödjs endast med R2-arkitekturer"
- 
- #, gcc-internal-format
- #~ msgid "R2 architecture is little-endian only"
- #~ msgstr "R2-arkitekturen har endast omvänd byteordning"
- 
- #, gcc-internal-format
- #~ msgid "cannot call %<__builtin_custom_%s%> without specifying switch %<-mcustom-%s%>"
- #~ msgstr "det går inte att anropa %<__builtin_custom_%s%> utan att ange flaggan %<-mcustom-%s%>"
- 
- #, gcc-internal-format
- #~ msgid "custom instruction opcode must be a compile-time constant in the range 0-255 for %<__builtin_custom_%s%>"
- #~ msgstr "anpassade instruktions-opkoder måste vara kompileringstillfälleskonstanter i intervallet 0-255 för %<__builtin_custom_%s%>"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "control register number must be in range 0-31 for %s"
- #~ msgstr "styrregisternummer måste vara i intervallet 0-31 för %s"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "register number must be in range 0-31 for %s"
- #~ msgstr "registernummer måste vara i intervallet 0-31 för %s"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "immediate value must fit into a %d-bit integer for %s"
- #~ msgstr "ett omedelbart värde måste passa i ett %d-bitars heltal för %s"
- 
- #, gcc-internal-format
- #~ msgid "the ENI instruction operand must be either 0 or 1"
- #~ msgstr "operanden till instruktionen ENI måste vara antingen 0 eller 1"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "built-in function %s requires Nios II R%d"
- #~ msgstr "den inbyggda funktionen %s behöver Nios II R%d"
- 
- #, gcc-internal-format
- #~ msgid "switch %<-mcustom-%s%> conflicts with switch %<-mcustom-%s%>"
- #~ msgstr "flaggan %<-mcustom-%s%> står i konflikt med flaggan %<-mcustom-%s%>"
- 
- #, gcc-internal-format
- #~ msgid "call to %<__builtin_custom_%s%> conflicts with switch %<-mcustom-%s%>"
- #~ msgstr "anrop till %<__builtin_custom_%s%> står i konflikt med flaggan %<-mcustom-%s%>"
- 
- #, gcc-internal-format
- #~ msgid "%<custom-fpu-cfg%> option does not support %<no-%>"
- #~ msgstr "flaggan %<custom-fpu-cfg%> stödjer inte %<no-%>"
- 
- #, gcc-internal-format
- #~ msgid "%<custom-fpu-cfg%> option requires configuration argument"
- #~ msgstr "flaggan %<custom-fpu-cfg%> behöver konfigurationsargument"
- 
- #, gcc-internal-format
- #~ msgid "%<no-custom-%s%> does not accept arguments"
- #~ msgstr "%<no-custom-%s%> tar inte argument"
- 
- #, gcc-internal-format
- #~ msgid "%<custom-%s=%> requires argument"
- #~ msgstr "%<custom-%s=%> behöver argument"
- 
- #, gcc-internal-format
- #~ msgid "%<custom-%s=%> argument should be a non-negative integer"
- #~ msgstr "argumentet till %<custom-%s=%> skall vara ett ickenegativt heltal"
- 
- #, gcc-internal-format
- #~ msgid "%<custom-%s=%> is not recognized as FPU instruction"
- #~ msgstr "%<custom-%s=%> är inte känt som en FPU-instruktion"
- 
- #, gcc-internal-format
- #~ msgid "invalid custom instruction option %qs"
- #~ msgstr "ogiltig flagga för anpassad instruktion %qs"
- 
- #, gcc-internal-format
- #~ msgid "parameter %u (%q+D) has void type"
- #~ msgstr "parameter %u (%q+D) har void-typ"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "parameter %u has void type"
- #~ msgstr "parameter %u har void-typ"
- 
- #, gcc-internal-format
- #~ msgid "%<_Generic%> association has function type"
- #~ msgstr "%<_Generic%>-association har funktionstyp"
- 
- #, gcc-internal-format
- #~ msgid "%<#pragma omp allocate%> for static variables like %qD not yet supported"
- #~ msgstr "%<#pragma omp allocate%> för statiska variabler som %qD stödjs inte ännu"
- 
- #, gcc-internal-format
- #~ msgid "expected %<match%>"
- #~ msgstr "%<match%> förväntades"
- 
- #, gcc-internal-format
- #~ msgid "%qs attribute cannot be applied to a function that does not take variable arguments"
- #~ msgstr "attributet %qs kan användas på en funktion som inte tar variabla argument"
- 
- #, gcc-internal-format
- #~ msgid "  passing %qT as %<this%> argument discards qualifiers"
- #~ msgstr "  att skicka %qT som %<this%>-argument kastar kvalificerare"
- 
- #, gcc-internal-format
- #~ msgid "the temporary was destroyed at the end of the full expression %qE"
- #~ msgstr "den temporära destruerades vid slutet av det fullständiga uttrycket %qE"
- 
- #, gcc-internal-format
- #~ msgid "cast from %qT is not allowed in a constant expression because %qE does not point to an object"
- #~ msgstr "typkonvertering från %qT är inte tillåtet i ett konstant uttryck eftersom %qE inte pekar på ett objekt"
- 
- #, gcc-internal-format
- #~ msgid "unexpected template-id %qE"
- #~ msgstr "oväntat mall-id %qE"
- 
- #, gcc-internal-format
- #~ msgid "function concept must be called"
- #~ msgstr "funktionskoncept måste anropas"
- 
- #, gcc-internal-format
- #~ msgid "function call of variable concept %qE"
- #~ msgstr "funktionsanrop av variabelkonceptet %qE"
- 
- #, gcc-internal-format
- #~ msgid "no matching concepts for %qE"
- #~ msgstr "inga matchande koncept för %qE"
- 
- #, gcc-internal-format
- #~ msgid "%qE cannot be introduced with an ellipsis %<...%>"
- #~ msgstr "%qE kan inte introduceras med en ellips %<...%>"
- 
- #, gcc-internal-format
- #~ msgid "prototype declared here"
- #~ msgstr "prototypen deklarerad här"
- 
- #, gcc-internal-format
- #~ msgid "all template parameters of %qD must be introduced"
- #~ msgstr "alla mallparametrar till %qD måste introduceras"
- 
- #, gcc-internal-format
- #~ msgid "cannot deduce template parameters from introduction list"
- #~ msgstr "kan inte härleda mallargument från introduktionslistan"
- 
- #, gcc-internal-format
- #~ msgid "definition of concept %qD is empty"
- #~ msgstr "definitionen av konceptet %qD är tom"
- 
- #, gcc-internal-format
- #~ msgid "definition of concept %qD has multiple statements"
- #~ msgstr "definitionen av konceptet %qD har flera satser"
- 
- #, gcc-internal-format
- #~ msgid "cannot initialize a return object of type %qT with an rvalue of type %<void%>"
- #~ msgstr "det går inte att initiera ett returobjekt av typen %qT med ett r-värde av typen %<void%>"
- 
- #, gcc-internal-format
- #~ msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>: %<%s%>"
- #~ msgstr "ignorerar returvärdet av %qD, deklarerad med attributet %<nodiscard%>: %<%s%>"
- 
- #, gcc-internal-format
- #~ msgid "ignoring returned value of type %qT, declared with attribute %<nodiscard%>: %<%s%>"
- #~ msgstr "ignorerar returnerat värde av typen %qT, deklarerat med attributet %<nodiscard%>: %<%s%>"
- 
- #, gcc-internal-format
- #~ msgid "cannot specialize concept %q#D"
- #~ msgstr "kan inte specialisera konceptet %q#D"
- 
- #, gcc-internal-format
- #~ msgid "variable concept has no initializer"
- #~ msgstr "variabelkoncept har ingen initierare"
- 
- #, gcc-internal-format
- #~ msgid "concept %q#D declared with function parameters"
- #~ msgstr "konceptet %q#D deklarerad med funktionsparametrar"
- 
- #, gcc-internal-format
- #~ msgid "concept %q#D declared with a deduced return type"
- #~ msgstr "konceptet %q#D deklarerat med en härledd returtyp"
- 
- #, gcc-internal-format
- #~ msgid "concept %q#D with non-%<bool%> return type %qT"
- #~ msgstr "koncept %q#D med icke-%<bool%>-returtyp %qT"
- 
- #, gcc-internal-format
- #~ msgid "concept %qD has no definition"
- #~ msgstr "konceptet %qD har ingen definition"
- 
- #, gcc-internal-format
- #~ msgid "a function concept cannot be constrained"
- #~ msgstr "ett funktionskoncept kan inte begränsas"
- 
- #, gcc-internal-format
- #~ msgid "concept must have type %<bool%>"
- #~ msgstr "koncept måste ha typen %<bool%>"
- 
- #, gcc-internal-format
- #~ msgid "a variable concept cannot be constrained"
- #~ msgstr "ett variabelkoncept kan inte begränsas"
- 
- #, gcc-internal-format
- #~ msgid "%<long%> and %<short%> specified together"
- #~ msgstr "%<long%> och %<short%> angivna tillsammans"
- 
- #, gcc-internal-format
- #~ msgid "defaulted declaration %q+D does not match the expected signature"
- #~ msgstr "standarddeklaration %q+D stämmer inte med den förväntade signaturen"
- 
- #, gcc-internal-format
- #~ msgid "%q#D references internal linkage entity %q#D"
- #~ msgstr "%q#D refererar entiteten %q#D med intern länkning"
- 
- #, gcc-internal-format
- #~ msgid "macro debug output may be incomplete with modules"
- #~ msgstr "makrofelsökningsutdata kan vara ofullständig med moduler"
- 
- #, gcc-internal-format
- #~ msgid "module dependencies require preprocessing"
- #~ msgstr "modulberoenden kräver preprocessning"
- 
- #, gcc-internal-format
- #~ msgid "you should use the %<-%s%> option"
- #~ msgstr "du behöver använda flaggan %<-%s%>"
- 
- #, gcc-internal-format
- #~ msgid "%<%T::%D%> names the constructor, not the type"
- #~ msgstr "%<%T::%D%> namnger konstrueraren, inte typen"
- 
- #, gcc-internal-format
- #~ msgid "import cannot appear directly in a linkage-specification"
- #~ msgstr "import får inte förekomma direkt i en länkningsspecifikation"
- 
- #, gcc-internal-format
- #~ msgid "extra %<;%>"
- #~ msgstr "extra %<;%>"
- 
- #, gcc-internal-format
- #~ msgid "use of %<auto%> in template argument only available with %<-fconcepts-ts%>"
- #~ msgstr "användning av %<auto%> i mallargument är endast tillgängligt med %<-fconcepts-ts%>"
- 
- #, gcc-internal-format
- #~ msgid "template-introductions are not part of C++20 concepts; use %qs to enable"
- #~ msgstr "mallintroduktioner är inte en del av C++20 koncept; använd %qs för att aktivera"
- 
- #, gcc-internal-format
- #~ msgid "no matching concept for template-introduction"
- #~ msgstr "det finns inget matchande koncept för mallintroduktionen"
- 
- #, gcc-internal-format
- #~ msgid "explicit specialization of function concept %qD"
- #~ msgstr "explicit specialisering av funktionskonceptet %qD"
- 
- #, gcc-internal-format
- #~ msgid "specialization of variable concept %q#D"
- #~ msgstr "specialisering av variabelkonceptet %q#D"
- 
- #, gcc-internal-format
- #~ msgid "explicit instantiation of variable concept %q#D"
- #~ msgstr "explicit instansiering av variabelkonceptet %q#D"
- 
- #, gcc-internal-format
- #~ msgid "explicit instantiation of function concept %q#D"
- #~ msgstr "explicit instansiering av funktionskonceptet %q#D"
- 
- #, gcc-internal-format
- #~ msgid "invalid use of %qT in template argument"
- #~ msgstr "felaktig användning av %qT i mallargument"
- 
- #, gcc-internal-format
- #~ msgid "non-pointer argument to %<__builtin_launder%>"
- #~ msgstr "icke-pekar-argument till %<__builtin_launder%>"
- 
- #, gcc-internal-format
- #~ msgid "statement-expression in a constant expression"
- #~ msgstr "satsuttryck i ett konstant uttryck"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "    Included at %s:%d:"
- #~ msgstr "    Inkluderad vid %s:%d:"
- 
- #, gcc-internal-format
- #~ msgid "<During initialization>\n"
- #~ msgstr "<Under initiering>\n"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "Program unit at %L has OpenMP device constructs/routines but does not set !$OMP REQUIRES UNIFIED_ADDRESS but other program units do"
- #~ msgstr "Programenheten vid %L har OpenMP device-konstruktioner/-rutiner men sätter inte !$OMP REQUIRES UNIFIED_ADDRESS men andra programenheter gör det"
- 
- #, gcc-internal-format, gfc-internal-format
- #~ msgid "Program unit at %L has OpenMP device constructs/routines but does not set !$OMP REQUIRES UNIFIED_SHARED_MEMORY but other program units do"
- #~ msgstr "Programenheten vid %L har OpenMP device-konstruktioner/-rutiner men sätter inte !$OMP REQUIRES UNIFIED_SHARED_MEMORY men andra programenheter gör det"
- 
- #, gcc-internal-format
- #~ msgid "Sorry, !$OMP allocate for variable %qs at %L with SAVE attribute not yet implemented"
- #~ msgstr "Ledsen, !$OMP allokering för variabeln %qs vid %L med attributet SAVE stödjs inte ännu"
- 
- #, gcc-internal-format
- #~ msgid "%qs specified in 'allocate' clause at %L but not in an explicit privatization clause"
- #~ msgstr "%qs angivet i en ”allocate”-klausul vid %L men inte i en explicit privatiseringsklausul"
--- 86373,86375 ----
diff -Nrcpad gcc-16-20250511/gcc/po/zh_CN.po gcc-16-20250518/gcc/po/zh_CN.po
*** gcc-16-20250511/gcc/po/zh_CN.po	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/po/zh_CN.po	Sun May 18 22:32:09 2025
***************
*** 4,10 ****
  # Meng Jie <zuxy.meng@gmail.com>, 2005-2014.
  # Jeff Bai <jeffbai@aosc.xyz>, 2015.
  # Mingye Wang (Arthur2e5) <arthur200126@gmail.com>, 2015, 2016.
! # Boyuan Yang <073plan@gmail.com>, 2019, 2023, 2024.
  # Zixing Zhou <zixingzhou@foxmail.com>, 2023.
  # Zhanhaoxiang Zhang <zzhx2006@outlook.com>, 2024.
  #
--- 4,10 ----
  # Meng Jie <zuxy.meng@gmail.com>, 2005-2014.
  # Jeff Bai <jeffbai@aosc.xyz>, 2015.
  # Mingye Wang (Arthur2e5) <arthur200126@gmail.com>, 2015, 2016.
! # Boyuan Yang <073plan@gmail.com>, 2019, 2023-2025.
  # Zixing Zhou <zixingzhou@foxmail.com>, 2023.
  # Zhanhaoxiang Zhang <zzhx2006@outlook.com>, 2024.
  #
***************
*** 33,43 ****
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 14.2.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-04-23 19:27+0000\n"
! "PO-Revision-Date: 2025-01-09 15:04+0800\n"
! "Last-Translator: Zhanhaoxiang Zhang <zzhx2006@outlook.com>\n"
  "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
  "Language: zh_CN\n"
  "MIME-Version: 1.0\n"
--- 33,43 ----
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 15.1.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-04-23 19:27+0000\n"
! "PO-Revision-Date: 2025-05-15 13:53-0400\n"
! "Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
  "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
  "Language: zh_CN\n"
  "MIME-Version: 1.0\n"
*************** msgstr ""
*** 45,51 ****
  "Content-Transfer-Encoding: 8bit\n"
  "Plural-Forms: nplurals=1; plural=0;\n"
  "X-Bugs: Report translation errors to the Language-Team address.\n"
! "X-Generator: Poedit 3.5\n"
  
  #: cif-code.def:39
  msgid "function not considered for inlining"
--- 45,51 ----
  "Content-Transfer-Encoding: 8bit\n"
  "Plural-Forms: nplurals=1; plural=0;\n"
  "X-Bugs: Report translation errors to the Language-Team address.\n"
! "X-Generator: Poedit 3.6\n"
  
  #: cif-code.def:39
  msgid "function not considered for inlining"
*************** msgid "-E or -x required when input is f
*** 317,326 ****
  msgstr "当输入来自标准输入设备时，需要 -E 或 -x"
  
  #: config/darwin.h:153
- #, fuzzy
- #| msgid " conflicting code gen style switches are used"
  msgid "conflicting code generation switches"
! msgstr "使用了相互冲突的代码生成风格"
  
  #: config/darwin.h:158
  msgid "-bundle_loader not allowed with -dynamiclib"
--- 317,324 ----
  msgstr "当输入来自标准输入设备时，需要 -E 或 -x"
  
  #: config/darwin.h:153
  msgid "conflicting code generation switches"
! msgstr "使用了相互冲突的代码生成开关"
  
  #: config/darwin.h:158
  msgid "-bundle_loader not allowed with -dynamiclib"
*************** msgid "Issue debug information for compi
*** 831,840 ****
  msgstr ""
  
  #: fortran/lang.opt:486
! #, fuzzy, no-c-format
! #| msgid "Enable Plan 9 language extensions"
  msgid "Enable all DEC language extensions."
! msgstr "启用九号计划语言扩展"
  
  #: fortran/lang.opt:490
  #, fuzzy, no-c-format
--- 829,837 ----
  msgstr ""
  
  #: fortran/lang.opt:486
! #, no-c-format
  msgid "Enable all DEC language extensions."
! msgstr "启用所有 DEC 语言扩展。"
  
  #: fortran/lang.opt:490
  #, fuzzy, no-c-format
*************** msgid "Enable legacy math intrinsics for
*** 868,876 ****
  msgstr ""
  
  #: fortran/lang.opt:515
! #, fuzzy, no-c-format
  msgid "Enable support for DEC STRUCTURE/RECORD."
! msgstr "启用对巨型对象的支持"
  
  #: fortran/lang.opt:519
  #, no-c-format
--- 865,873 ----
  msgstr ""
  
  #: fortran/lang.opt:515
! #, no-c-format
  msgid "Enable support for DEC STRUCTURE/RECORD."
! msgstr "启用对 DEC STRUCTURE/RECORD 的支持。"
  
  #: fortran/lang.opt:519
  #, no-c-format
*************** msgid "Does nothing.  Preserved for back
*** 1257,1266 ****
  msgstr "不起作用。为向前兼容保留的选项。"
  
  #: fortran/lang.opt:911
! #, fuzzy, no-c-format
! #| msgid "Statically link the GNU Fortran helper library (libgfortran)"
  msgid "Statically link the GNU Fortran helper library (libgfortran)."
! msgstr "静态链接 GNU Fortran 助手库(libgfortran)"
  
  #: fortran/lang.opt:915
  #, fuzzy, no-c-format
--- 1254,1262 ----
  msgstr "不起作用。为向前兼容保留的选项。"
  
  #: fortran/lang.opt:911
! #, no-c-format
  msgid "Statically link the GNU Fortran helper library (libgfortran)."
! msgstr "静态链接 GNU Fortran 助手库(libgfortran)。"
  
  #: fortran/lang.opt:915
  #, fuzzy, no-c-format
*************** msgstr "遵循 ISO Fortran 2023 标准�
*** 1296,1302 ****
  #: fortran/lang.opt:939
  #, no-c-format
  msgid "Enable experimental Fortran 202y features."
! msgstr ""
  
  #: fortran/lang.opt:943
  #, no-c-format
--- 1292,1298 ----
  #: fortran/lang.opt:939
  #, no-c-format
  msgid "Enable experimental Fortran 202y features."
! msgstr "启用实验性的 Fortuan 202y 特性。"
  
  #: fortran/lang.opt:943
  #, no-c-format
*************** msgstr "当把函数转换为不兼容�
*** 1670,1676 ****
  #: c-family/c.opt:410
  #, no-c-format
  msgid "-Wbidi-chars=[none|unpaired|any|ucn] Warn about UTF-8 bidirectional control characters."
! msgstr ""
  
  #: c-family/c.opt:433
  #, no-c-format
--- 1666,1672 ----
  #: c-family/c.opt:410
  #, no-c-format
  msgid "-Wbidi-chars=[none|unpaired|any|ucn] Warn about UTF-8 bidirectional control characters."
! msgstr "-Wbidi-chars=[none|unpaired|any|ucn] 对 UTF-8 双向控制字符给出警告。"
  
  #: c-family/c.opt:433
  #, no-c-format
*************** msgid "Deprecated in favor of -Wc11-c23-
*** 1703,1712 ****
  msgstr "已弃用，请改用 -Wc11-c23-compat。"
  
  #: c-family/c.opt:457
! #, fuzzy, no-c-format
! #| msgid "Warn about features not present in ISO C11, but present in ISO C23."
  msgid "Warn about features not present in ISO C23, but present in ISO C2Y."
! msgstr "对 ISO C11 中不存在但 ISO C23 中存在的特性给出警告。"
  
  #: c-family/c.opt:461
  #, no-c-format
--- 1699,1707 ----
  msgstr "已弃用，请改用 -Wc11-c23-compat。"
  
  #: c-family/c.opt:457
! #, no-c-format
  msgid "Warn about features not present in ISO C23, but present in ISO C2Y."
! msgstr "对 ISO C23 中不存在但 ISO C2Y 中存在的特性给出警告。"
  
  #: c-family/c.opt:461
  #, no-c-format
*************** msgid "Warn for implicit type conversion
*** 1869,1878 ****
  msgstr "当隐式类型转换可能改变值时给出警告"
  
  #: c-family/c.opt:590
! #, fuzzy, no-c-format
! #| msgid "Warn for converting NULL from/to a non-pointer type"
  msgid "Warn for converting NULL from/to a non-pointer type."
! msgstr "将 NULL 转换为非指针类型时给出警告"
  
  #: c-family/c.opt:598
  #, fuzzy, no-c-format
--- 1864,1872 ----
  msgstr "当隐式类型转换可能改变值时给出警告"
  
  #: c-family/c.opt:590
! #, no-c-format
  msgid "Warn for converting NULL from/to a non-pointer type."
! msgstr "对 NULL 和非指针类型之间的转换给出警告。"
  
  #: c-family/c.opt:598
  #, fuzzy, no-c-format
*************** msgid "Warn when performing class templa
*** 1880,1889 ****
  msgstr "%qE不是类型%qT的有效模板实参，因为对象%qD没有外部链接"
  
  #: c-family/c.opt:603
! #, fuzzy, no-c-format
! #| msgid "Warn when all constructors and destructors are private"
  msgid "Warn when all constructors and destructors are private."
! msgstr "当所有构造函数和析构函数都是私有时给出警告"
  
  #: c-family/c.opt:607
  #, no-c-format
--- 1874,1882 ----
  msgstr "%qE不是类型%qT的有效模板实参，因为对象%qD没有外部链接"
  
  #: c-family/c.opt:603
! #, no-c-format
  msgid "Warn when all constructors and destructors are private."
! msgstr "当所有构造函数和析构函数都是私有时给出警告。"
  
  #: c-family/c.opt:607
  #, no-c-format
*************** msgstr "对悬空的 else 给出警告�
*** 1893,1899 ****
  #: c-family/c.opt:611 c-family/c.opt:615
  #, no-c-format
  msgid "Warn for uses of pointers to auto variables whose lifetime has ended."
! msgstr ""
  
  #: c-family/c.opt:619
  #, no-c-format
--- 1886,1892 ----
  #: c-family/c.opt:611 c-family/c.opt:615
  #, no-c-format
  msgid "Warn for uses of pointers to auto variables whose lifetime has ended."
! msgstr "对使用了指向生命周期已结束的 auto 变量的指针给出警告。"
  
  #: c-family/c.opt:619
  #, no-c-format
*************** msgid "Warn about implicit conversions f
*** 1993,2008 ****
  msgstr "对从“float”到“double”的隐式转换给出警告。"
  
  #: c-family/c.opt:702
! #, fuzzy, no-c-format
! #| msgid "Warn when a declaration does not specify a type"
  msgid "Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier."
! msgstr "当声明未指定类型时给出警告"
  
  #: c-family/c.opt:706
! #, fuzzy, no-c-format
! #| msgid "Warn about an empty body in an if or else statement"
  msgid "Warn about duplicated branches in if-else statements."
! msgstr "当 if 或 else 语句体为空时给出警告"
  
  #: c-family/c.opt:710
  #, no-c-format
--- 1986,1999 ----
  msgstr "对从“float”到“double”的隐式转换给出警告。"
  
  #: c-family/c.opt:702
! #, no-c-format
  msgid "Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier."
! msgstr "当声明中含有重复的 const, volatile, restrict 或 _Atomic 说明符时给出警告。"
  
  #: c-family/c.opt:706
! #, no-c-format
  msgid "Warn about duplicated branches in if-else statements."
! msgstr "对 if-else 语句中重复的分支给出警告。"
  
  #: c-family/c.opt:710
  #, no-c-format
*************** msgid "Warn when a function never produc
*** 2263,2272 ****
  msgstr "数字常量表达式下溢时警告"
  
  #: c-family/c.opt:930
! #, fuzzy, no-c-format
! #| msgid "Warn about invalid uses of the \"offsetof\" macro"
  msgid "Warn about invalid uses of the \"offsetof\" macro."
! msgstr "对“offsetof”宏无效的使用给出警告"
  
  #: c-family/c.opt:934
  #, fuzzy, no-c-format
--- 2254,2262 ----
  msgstr "数字常量表达式下溢时警告"
  
  #: c-family/c.opt:930
! #, no-c-format
  msgid "Warn about invalid uses of the \"offsetof\" macro."
! msgstr "对“offsetof”宏无效的使用给出警告。"
  
  #: c-family/c.opt:934
  #, fuzzy, no-c-format
*************** msgstr ""
*** 2432,2438 ****
  #: c-family/c.opt:1083
  #, no-c-format
  msgid "Warn on namespace definition."
! msgstr ""
  
  #: c-family/c.opt:1087
  #, fuzzy, no-c-format
--- 2422,2428 ----
  #: c-family/c.opt:1083
  #, no-c-format
  msgid "Warn on namespace definition."
! msgstr "对命名空间的定义给出警告。"
  
  #: c-family/c.opt:1087
  #, fuzzy, no-c-format
*************** msgid "Warn when fields in a struct with
*** 2556,2565 ****
  msgstr ""
  
  #: c-family/c.opt:1211
! #, fuzzy, no-c-format
! #| msgid "Warn about possibly missing parentheses"
  msgid "Warn about possibly missing parentheses."
! msgstr "可能缺少括号的情况下给出警告"
  
  #: c-family/c.opt:1219
  #, no-c-format
--- 2546,2554 ----
  msgstr ""
  
  #: c-family/c.opt:1211
! #, no-c-format
  msgid "Warn about possibly missing parentheses."
! msgstr "在可能缺少括号的情况下给出警告。"
  
  #: c-family/c.opt:1219
  #, no-c-format
*************** msgid "Warn about useless casts."
*** 2978,2986 ****
  msgstr "对无用的类型转换给出警告。"
  
  #: c-family/c.opt:1599
! #, fuzzy, no-c-format
  msgid "Warn about using variadic macros."
! msgstr "当定义在主文件中的宏未被使用时给出警告"
  
  #: c-family/c.opt:1603
  #, no-c-format
--- 2967,2975 ----
  msgstr "对无用的类型转换给出警告。"
  
  #: c-family/c.opt:1599
! #, no-c-format
  msgid "Warn about using variadic macros."
! msgstr "在使用了变长参数宏时给出警告。"
  
  #: c-family/c.opt:1603
  #, no-c-format
*************** msgid "Enable support for C++ concepts."
*** 3131,3140 ****
  msgstr "启用对 C++ concepts 的支持。"
  
  #: c-family/c.opt:1819
! #, fuzzy, no-c-format
! #| msgid "Removed in GCC 10.  This switch has no effect."
  msgid "Removed in GCC 15.  This switch has no effect."
! msgstr "已在 GCC 10 中移除。此开关不起作用。"
  
  #: c-family/c.opt:1823
  #, no-c-format
--- 3120,3128 ----
  msgstr "启用对 C++ concepts 的支持。"
  
  #: c-family/c.opt:1819
! #, no-c-format
  msgid "Removed in GCC 15.  This switch has no effect."
! msgstr "已在 GCC 15 中移除。此开关不起作用。"
  
  #: c-family/c.opt:1823
  #, no-c-format
*************** msgid "Allow implicit conversions betwee
*** 3383,3392 ****
  msgstr "允许具有不同元素数量和/或元素类型的向量间的转换。"
  
  #: c-family/c.opt:2059
! #, fuzzy, no-c-format
! #| msgid "Enable C++ modules-ts (experimental)."
  msgid "Enable C++20 Modules (experimental)."
! msgstr "启用 C++ modules-ts（实验性）。"
  
  #: c-family/c.opt:2067
  #, no-c-format
--- 3371,3379 ----
  msgstr "允许具有不同元素数量和/或元素类型的向量间的转换。"
  
  #: c-family/c.opt:2059
! #, no-c-format
  msgid "Enable C++20 Modules (experimental)."
! msgstr "启用 C++20 模块 实验性）。"
  
  #: c-family/c.opt:2067
  #, no-c-format
*************** msgid "Conform to the ISO 2020 C++ stand
*** 3900,3909 ****
  msgstr "遵循 ISO 2020 C++ 标准（试验性质的不完全支持）。"
  
  #: c-family/c.opt:2589 c-family/c.opt:2593
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2020 C++ standard (experimental and incomplete support)."
  msgid "Conform to the ISO 2023 C++ standard (published in 2024; experimental and incomplete support)."
! msgstr "遵循 ISO 2020 C++ 标准（试验性质的不完全支持）。"
  
  #: c-family/c.opt:2597 c-family/c.opt:2601
  #, no-c-format
--- 3887,3895 ----
  msgstr "遵循 ISO 2020 C++ 标准（试验性质的不完全支持）。"
  
  #: c-family/c.opt:2589 c-family/c.opt:2593
! #, no-c-format
  msgid "Conform to the ISO 2023 C++ standard (published in 2024; experimental and incomplete support)."
! msgstr "遵循 ISO 2023 C++ 标准（于2024年发布；试验性质的不完全支持）。"
  
  #: c-family/c.opt:2597 c-family/c.opt:2601
  #, no-c-format
*************** msgid "Conform to the ISO 2017 C standar
*** 3927,3936 ****
  msgstr "遵循 ISO 2017 C 标准（于2018年发布）。"
  
  #: c-family/c.opt:2621 c-family/c.opt:2779
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2017 C standard (published in 2018)."
  msgid "Conform to the ISO 2023 C standard (published in 2024)."
! msgstr "遵循 ISO 2017 C 标准（于2018年发布）。"
  
  #: c-family/c.opt:2625
  #, no-c-format
--- 3913,3921 ----
  msgstr "遵循 ISO 2017 C 标准（于2018年发布）。"
  
  #: c-family/c.opt:2621 c-family/c.opt:2779
! #, no-c-format
  msgid "Conform to the ISO 2023 C standard (published in 2024)."
! msgstr "遵循 ISO 2023 C 标准（于2014年发布）。"
  
  #: c-family/c.opt:2625
  #, no-c-format
*************** msgid "Deprecated in favor of -std=c23."
*** 3938,3947 ****
  msgstr "已弃用，请改用 -std=c23。"
  
  #: c-family/c.opt:2629
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2020 C++ standard (experimental and incomplete support)."
  msgid "Conform to the ISO 202Y C standard draft (experimental and incomplete support)."
! msgstr "遵循 ISO 2020 C++ 标准（试验性质的不完全支持）。"
  
  #: c-family/c.opt:2633 c-family/c.opt:2637 c-family/c.opt:2751
  #, no-c-format
--- 3923,3931 ----
  msgstr "已弃用，请改用 -std=c23。"
  
  #: c-family/c.opt:2629
! #, no-c-format
  msgid "Conform to the ISO 202Y C standard draft (experimental and incomplete support)."
! msgstr "遵循 ISO 202Y C 标准草案（试验性质的不完全支持）。"
  
  #: c-family/c.opt:2633 c-family/c.opt:2637 c-family/c.opt:2751
  #, no-c-format
*************** msgid "Enable Cobol parser debugging"
*** 4136,4145 ****
  msgstr "启用后端调试."
  
  #: cobol/lang.opt:102
! #, fuzzy, no-c-format
! #| msgid "Enable backend debugging."
  msgid "Enable Cobol yacc debugging"
! msgstr "启用后端调试."
  
  #: cobol/lang.opt:106
  #, no-c-format
--- 4120,4128 ----
  msgstr "启用后端调试."
  
  #: cobol/lang.opt:102
! #, no-c-format
  msgid "Enable Cobol yacc debugging"
! msgstr "启用 Cobol yacc 调试"
  
  #: cobol/lang.opt:106
  #, no-c-format
*************** msgid "Select the runtime."
*** 4182,4190 ****
  msgstr "选择运行时。"
  
  #: ada/gcc-interface/lang.opt:93
! #, fuzzy, no-c-format
  msgid "Catch typos."
! msgstr "进入了 catch 块"
  
  #: ada/gcc-interface/lang.opt:97
  #, fuzzy, no-c-format
--- 4165,4173 ----
  msgstr "选择运行时。"
  
  #: ada/gcc-interface/lang.opt:93
! #, no-c-format
  msgid "Catch typos."
! msgstr "捕获打字错误。"
  
  #: ada/gcc-interface/lang.opt:97
  #, fuzzy, no-c-format
*************** msgid "Generate JSON file."
*** 4236,4245 ****
  msgstr "生成 JSON 文件。"
  
  #: d/lang.opt:167
! #, fuzzy, no-c-format
! #| msgid "-MF <file>\tWrite dependency output to the given file"
  msgid "-Xf <file>\tWrite JSON output to the given <file>."
! msgstr "-MF <文件>\t将依赖项输出到给定文件"
  
  #: d/lang.opt:171
  #, no-c-format
--- 4219,4227 ----
  msgstr "生成 JSON 文件。"
  
  #: d/lang.opt:167
! #, no-c-format
  msgid "-Xf <file>\tWrite JSON output to the given <file>."
! msgstr "-Xf <文件>\t将 JSON 输出到给定<文件>。"
  
  #: d/lang.opt:171
  #, no-c-format
*************** msgid "Implement 'in' contracts of overr
*** 4440,4449 ****
  msgstr ""
  
  #: d/lang.opt:408
! #, fuzzy, no-c-format
! #| msgid "Consider access to byte sized memory slow."
  msgid "Disable access to shared memory objects."
! msgstr "认为按字节访问内存速度较慢。"
  
  #: d/lang.opt:412
  #, no-c-format
--- 4422,4430 ----
  msgstr ""
  
  #: d/lang.opt:408
! #, no-c-format
  msgid "Disable access to shared memory objects."
! msgstr "禁用对共享内存对象的访问。"
  
  #: d/lang.opt:412
  #, no-c-format
*************** msgstr "指定目标架构的名称"
*** 9265,9271 ****
  #: config/nvptx/nvptx.opt:64
  #, no-c-format
  msgid "Alias:"
! msgstr ""
  
  #: config/nvptx/nvptx.opt:125
  #, fuzzy, no-c-format
--- 9246,9252 ----
  #: config/nvptx/nvptx.opt:64
  #, no-c-format
  msgid "Alias:"
! msgstr "别名："
  
  #: config/nvptx/nvptx.opt:125
  #, fuzzy, no-c-format
*************** msgid "Known PTX ISA versions (for use w
*** 9274,9282 ****
  msgstr "已知 MIPS ISA 等级 (用于 -mips 选项)："
  
  #: config/nvptx/nvptx.opt:156
! #, fuzzy, no-c-format
  msgid "Specify the PTX ISA version to use."
! msgstr "ELF 文件 ABI 版本无效"
  
  #: config/nvptx/nvptx.opt:160
  #, no-c-format
--- 9255,9263 ----
  msgstr "已知 MIPS ISA 等级 (用于 -mips 选项)："
  
  #: config/nvptx/nvptx.opt:156
! #, no-c-format
  msgid "Specify the PTX ISA version to use."
! msgstr "指定要使用的 PTX ISA 版本。"
  
  #: config/nvptx/nvptx.opt:160
  #, no-c-format
*************** msgid "Always align function entry, jump
*** 12154,12163 ****
  msgstr ""
  
  #: config/nds32/nds32.opt:85
! #, fuzzy, no-c-format
! #| msgid "Align code and data to 32 bits"
  msgid "Align function entry to 4 byte."
! msgstr "将代码和数据对齐到 32 位边界上"
  
  #: config/nds32/nds32.opt:97
  #, no-c-format
--- 12135,12143 ----
  msgstr ""
  
  #: config/nds32/nds32.opt:85
! #, no-c-format
  msgid "Align function entry to 4 byte."
! msgstr "将函数入口对齐到 4 字节。"
  
  #: config/nds32/nds32.opt:97
  #, no-c-format
*************** msgid "Generate string extension instruc
*** 12206,12214 ****
  msgstr "生成加载/存储乘法指令"
  
  #: config/nds32/nds32.opt:139
! #, fuzzy, no-c-format
  msgid "Generate DSP extension instructions."
! msgstr "生成加载/存储乘法指令"
  
  #: config/nds32/nds32.opt:143
  #, fuzzy, no-c-format
--- 12186,12194 ----
  msgstr "生成加载/存储乘法指令"
  
  #: config/nds32/nds32.opt:139
! #, no-c-format
  msgid "Generate DSP extension instructions."
! msgstr "生成 DSP 扩展指令。"
  
  #: config/nds32/nds32.opt:143
  #, fuzzy, no-c-format
*************** msgid "Known IQ2000 CPUs (for use with t
*** 12355,12364 ****
  msgstr "已知 IQ2000 处理器 (用于 -mcpu= 选项)："
  
  #: config/iq2000/iq2000.opt:61 config/mips/mips.opt:142
! #, fuzzy, no-c-format
! #| msgid "Use ROM instead of RAM"
  msgid "Use ROM instead of RAM."
! msgstr "使用 ROM 而不是 RAM"
  
  #: config/iq2000/iq2000.opt:70
  #, fuzzy, no-c-format
--- 12335,12343 ----
  msgstr "已知 IQ2000 处理器 (用于 -mcpu= 选项)："
  
  #: config/iq2000/iq2000.opt:61 config/mips/mips.opt:142
! #, no-c-format
  msgid "Use ROM instead of RAM."
! msgstr "使用 ROM 而不是 RAM。"
  
  #: config/iq2000/iq2000.opt:70
  #, fuzzy, no-c-format
*************** msgid "Put uninitialized constants in RO
*** 12373,12387 ****
  msgstr "将未初始化的常量放在 ROM 中(需要 -membedded-data)"
  
  #: config/csky/csky.opt:34
! #, fuzzy, no-c-format
  msgid "Specify the target architecture."
! msgstr "指定目标架构的名称"
  
  #: config/csky/csky.opt:38
! #, fuzzy, no-c-format
! #| msgid "Specify the target CPU"
  msgid "Specify the target processor."
! msgstr "选择目标 CPU"
  
  #: config/csky/csky.opt:90
  #, fuzzy, no-c-format
--- 12352,12365 ----
  msgstr "将未初始化的常量放在 ROM 中(需要 -membedded-data)"
  
  #: config/csky/csky.opt:34
! #, no-c-format
  msgid "Specify the target architecture."
! msgstr "指定目标架构的名称。"
  
  #: config/csky/csky.opt:38
! #, no-c-format
  msgid "Specify the target processor."
! msgstr "指定目标处理器。"
  
  #: config/csky/csky.opt:90
  #, fuzzy, no-c-format
*************** msgid "Enable coprocessor instructions."
*** 12426,12435 ****
  msgstr "启用 clip 指令"
  
  #: config/csky/csky.opt:122
! #, fuzzy, no-c-format
! #| msgid "Enable average instructions"
  msgid "Enable cache prefetch instructions."
! msgstr "启用均值指令"
  
  #: config/csky/csky.opt:126
  #, fuzzy, no-c-format
--- 12404,12412 ----
  msgstr "启用 clip 指令"
  
  #: config/csky/csky.opt:122
! #, no-c-format
  msgid "Enable cache prefetch instructions."
! msgstr "启用缓存预取指令。"
  
  #: config/csky/csky.opt:126
  #, fuzzy, no-c-format
*************** msgstr "已知 C6X ISA (用于 -march= �
*** 12546,12557 ****
  #: config/c6x/c6x.opt:30 config/mips/mips.opt:134
  #, no-c-format
  msgid "Use big-endian byte order."
! msgstr "令大端在前。"
  
  #: config/c6x/c6x.opt:34 config/mips/mips.opt:138
  #, no-c-format
  msgid "Use little-endian byte order."
! msgstr "令小端在前。"
  
  #: config/c6x/c6x.opt:42
  #, fuzzy, no-c-format
--- 12523,12534 ----
  #: config/c6x/c6x.opt:30 config/mips/mips.opt:134
  #, no-c-format
  msgid "Use big-endian byte order."
! msgstr "使用大端字节序。"
  
  #: config/c6x/c6x.opt:34 config/mips/mips.opt:138
  #, no-c-format
  msgid "Use little-endian byte order."
! msgstr "使用小端字节序。"
  
  #: config/c6x/c6x.opt:42
  #, fuzzy, no-c-format
*************** msgid "Annotate assembler instructions w
*** 12958,12967 ****
  msgstr "使用估算的地址评注汇编指令"
  
  #: config/sh/sh.opt:247
! #, fuzzy, no-c-format
! #| msgid "Generate code in little endian mode"
  msgid "Generate code in little endian mode."
! msgstr "生成小端在前的代码"
  
  #: config/sh/sh.opt:251
  #, fuzzy, no-c-format
--- 12935,12943 ----
  msgstr "使用估算的地址评注汇编指令"
  
  #: config/sh/sh.opt:247
! #, no-c-format
  msgid "Generate code in little endian mode."
! msgstr "在小端序模式下生成代码。"
  
  #: config/sh/sh.opt:251
  #, fuzzy, no-c-format
*************** msgid "Pretend a branch-around-a-move is
*** 13014,13040 ****
  msgstr "将数据传输周围的跳转认为是条件转移。"
  
  #: config/sh/sh.opt:295
! #, fuzzy, no-c-format
! #| msgid "Enable the use of the fsca instruction"
  msgid "Enable the use of the fsca instruction."
! msgstr "启用对 fsca 指令的使用"
  
  #: config/sh/sh.opt:299
! #, fuzzy, no-c-format
! #| msgid "Enable the use of the fsrra instruction"
  msgid "Enable the use of the fsrra instruction."
! msgstr "启用 fsrra 指令的使用"
  
  #: config/gcn/gcn-tables.opt:25
  #, no-c-format
  msgid "GCN GPU type to use:"
! msgstr ""
  
  #: config/gcn/gcn.opt:26 config/gcn/gcn.opt:30
! #, fuzzy, no-c-format
! #| msgid "Specify the name of the target CPU"
  msgid "Specify the name of the target GPU."
! msgstr "指定目标 CPU 的名称"
  
  #: config/gcn/gcn.opt:34
  #, no-c-format
--- 12990,13013 ----
  msgstr "将数据传输周围的跳转认为是条件转移。"
  
  #: config/sh/sh.opt:295
! #, no-c-format
  msgid "Enable the use of the fsca instruction."
! msgstr "启用对 fsca 指令的使用。"
  
  #: config/sh/sh.opt:299
! #, no-c-format
  msgid "Enable the use of the fsrra instruction."
! msgstr "启用 fsrra 指令的使用。"
  
  #: config/gcn/gcn-tables.opt:25
  #, no-c-format
  msgid "GCN GPU type to use:"
! msgstr "要使用的 GCN GPU 类型："
  
  #: config/gcn/gcn.opt:26 config/gcn/gcn.opt:30
! #, no-c-format
  msgid "Specify the name of the target GPU."
! msgstr "指定目标 CPU 的名称。"
  
  #: config/gcn/gcn.opt:34
  #, no-c-format
*************** msgid "Assume small address space."
*** 13093,13102 ****
  msgstr "假定小地址空间"
  
  #: config/bpf/bpf.opt:28
! #, fuzzy, no-c-format
! #| msgid "Generate LP64 code"
  msgid "Generate xBPF."
! msgstr "生成 LP64 代码"
  
  #: config/bpf/bpf.opt:34
  #, fuzzy, no-c-format
--- 13066,13074 ----
  msgstr "假定小地址空间"
  
  #: config/bpf/bpf.opt:28
! #, no-c-format
  msgid "Generate xBPF."
! msgstr "生成 xBPF。"
  
  #: config/bpf/bpf.opt:34
  #, fuzzy, no-c-format
*************** msgid "Enable extra conditional-branch i
*** 13127,13136 ****
  msgstr "启用条件移动指令。"
  
  #: config/bpf/bpf.opt:56
! #, fuzzy, no-c-format
! #| msgid "Enable 32-bit divide instructions"
  msgid "Enable 32-bit ALU instructions."
! msgstr "启用 32 位除法指令"
  
  #: config/bpf/bpf.opt:60
  #, fuzzy, no-c-format
--- 13099,13107 ----
  msgstr "启用条件移动指令。"
  
  #: config/bpf/bpf.opt:56
! #, no-c-format
  msgid "Enable 32-bit ALU instructions."
! msgstr "启用 32 位 ALU 指令。"
  
  #: config/bpf/bpf.opt:60
  #, fuzzy, no-c-format
*************** msgid "FP exceptions are enabled."
*** 13351,13360 ****
  msgstr "FP 异常已启用"
  
  #: config/mips/mips.opt:223
! #, fuzzy, no-c-format
! #| msgid "Use 32-bit floating-point registers"
  msgid "Use 32-bit floating-point registers."
! msgstr "使用 32 位浮点寄存器"
  
  #: config/mips/mips.opt:227
  #, no-c-format
--- 13322,13330 ----
  msgstr "FP 异常已启用"
  
  #: config/mips/mips.opt:223
! #, no-c-format
  msgid "Use 32-bit floating-point registers."
! msgstr "使用 32 位浮点寄存器。"
  
  #: config/mips/mips.opt:227
  #, no-c-format
*************** msgid "Use -G for object-local data."
*** 13456,13477 ****
  msgstr "为对象局部数据使用 -G"
  
  #: config/mips/mips.opt:305
! #, fuzzy, no-c-format
! #| msgid "Use indirect calls"
  msgid "Use indirect calls."
! msgstr "使用间接调用"
  
  #: config/mips/mips.opt:309
! #, fuzzy, no-c-format
! #| msgid "Use a 32-bit long type"
  msgid "Use a 32-bit long type."
! msgstr "使用 32 位 long 类型"
  
  #: config/mips/mips.opt:313
! #, fuzzy, no-c-format
! #| msgid "Use a 64-bit long type"
  msgid "Use a 64-bit long type."
! msgstr "使用 64 位 long 类型"
  
  #: config/mips/mips.opt:317
  #, fuzzy, no-c-format
--- 13426,13444 ----
  msgstr "为对象局部数据使用 -G"
  
  #: config/mips/mips.opt:305
! #, no-c-format
  msgid "Use indirect calls."
! msgstr "使用间接调用。"
  
  #: config/mips/mips.opt:309
! #, no-c-format
  msgid "Use a 32-bit long type."
! msgstr "使用 32 位 long 类型。"
  
  #: config/mips/mips.opt:313
! #, no-c-format
  msgid "Use a 64-bit long type."
! msgstr "使用 64 位 long 类型。"
  
  #: config/mips/mips.opt:317
  #, fuzzy, no-c-format
*************** msgid "Don't optimize block moves."
*** 13486,13494 ****
  msgstr "不优化块移动"
  
  #: config/mips/mips.opt:325
! #, fuzzy, no-c-format
  msgid "Use microMIPS instructions."
! msgstr "使用浮点双精度指令"
  
  #: config/mips/mips.opt:329
  #, fuzzy, no-c-format
--- 13453,13461 ----
  msgstr "不优化块移动"
  
  #: config/mips/mips.opt:325
! #, no-c-format
  msgid "Use microMIPS instructions."
! msgstr "使用 microMIPS 指令。"
  
  #: config/mips/mips.opt:329
  #, fuzzy, no-c-format
*************** msgid "Use MIPS MSA Extension instructio
*** 13497,13506 ****
  msgstr "使用 MIPS-DSP 指令"
  
  #: config/mips/mips.opt:333
! #, fuzzy, no-c-format
! #| msgid "Allow the use of MT instructions"
  msgid "Allow the use of MT instructions."
! msgstr "允许使用 MT 指令"
  
  #: config/mips/mips.opt:337
  #, fuzzy, no-c-format
--- 13464,13472 ----
  msgstr "使用 MIPS-DSP 指令"
  
  #: config/mips/mips.opt:333
! #, no-c-format
  msgid "Allow the use of MT instructions."
! msgstr "允许使用 MT 指令。"
  
  #: config/mips/mips.opt:337
  #, fuzzy, no-c-format
*************** msgid "Prevent the use of all floating-p
*** 13509,13518 ****
  msgstr "不允许使用任何浮点操作"
  
  #: config/mips/mips.opt:341
! #, fuzzy, no-c-format
! #| msgid "Use MCU instructions"
  msgid "Use MCU instructions."
! msgstr "使用 MCU 指令"
  
  #: config/mips/mips.opt:345
  #, fuzzy, no-c-format
--- 13475,13483 ----
  msgstr "不允许使用任何浮点操作"
  
  #: config/mips/mips.opt:341
! #, no-c-format
  msgid "Use MCU instructions."
! msgstr "使用 MCU 指令。"
  
  #: config/mips/mips.opt:345
  #, fuzzy, no-c-format
*************** msgid "if this code is reached, the prog
*** 30236,30249 ****
  msgstr "如果执行到这段代码，程序将中止"
  
  #: godump.cc:1434
! #, fuzzy, gcc-internal-format
  msgid "could not close Go dump file: %m"
! msgstr "无法打开用零填充的指令转储文件%qs：%s"
  
  #: godump.cc:1446
! #, fuzzy, gcc-internal-format
  msgid "could not open Go dump file %qs: %m"
! msgstr "无法打开最终指令转储文件%qs：%s"
  
  #: graphite.cc:529
  #, fuzzy, gcc-internal-format
--- 30201,30214 ----
  msgstr "如果执行到这段代码，程序将中止"
  
  #: godump.cc:1434
! #, gcc-internal-format
  msgid "could not close Go dump file: %m"
! msgstr "无法关闭 Go 转储文件：%m"
  
  #: godump.cc:1446
! #, gcc-internal-format
  msgid "could not open Go dump file %qs: %m"
! msgstr "无法打开 Go 转储文件 %qs：%m"
  
  #: graphite.cc:529
  #, fuzzy, gcc-internal-format
*************** msgid "array types have different bounds
*** 30399,30407 ****
  msgstr "?: 的操作数类型不一致，分别为%qT和%qT"
  
  #: ipa-devirt.cc:1139
! #, fuzzy, gcc-internal-format
  msgid "return value type mismatch"
! msgstr "<返回值>"
  
  #: ipa-devirt.cc:1154
  #, gcc-internal-format
--- 30364,30372 ----
  msgstr "?: 的操作数类型不一致，分别为%qT和%qT"
  
  #: ipa-devirt.cc:1139
! #, gcc-internal-format
  msgid "return value type mismatch"
! msgstr "返回值类型不匹配"
  
  #: ipa-devirt.cc:1154
  #, gcc-internal-format
*************** msgid "name %qs is defined to different
*** 30610,30619 ****
  msgstr "%qE未声明(不在函数内)"
  
  #: ipa-devirt.cc:4325
! #, fuzzy, gcc-internal-format
! #| msgid "missing definition"
  msgid "mismatching definition"
! msgstr "定义缺失"
  
  #: ipa-fnsummary.cc:4845
  #, fuzzy, gcc-internal-format
--- 30575,30583 ----
  msgstr "%qE未声明(不在函数内)"
  
  #: ipa-devirt.cc:4325
! #, gcc-internal-format
  msgid "mismatching definition"
! msgstr "不匹配的定义"
  
  #: ipa-fnsummary.cc:4845
  #, fuzzy, gcc-internal-format
*************** msgstr "需要 %<,%> 或 %<)%>"
*** 30867,30879 ****
  #: lazy-diagnostic-path.cc:179
  #, gcc-internal-format
  msgid "this warning should be skipped"
! msgstr ""
  
  #: lazy-diagnostic-path.cc:194
! #, fuzzy, gcc-internal-format
! #| msgid "this is the insn:"
  msgid "this is a test"
! msgstr "这是指令："
  
  #: lra-assigns.cc:1694
  #, fuzzy, gcc-internal-format, gfc-internal-format
--- 30831,30842 ----
  #: lazy-diagnostic-path.cc:179
  #, gcc-internal-format
  msgid "this warning should be skipped"
! msgstr "该警告信息应当被跳过"
  
  #: lazy-diagnostic-path.cc:194
! #, gcc-internal-format
  msgid "this is a test"
! msgstr "这是一个测试"
  
  #: lra-assigns.cc:1694
  #, fuzzy, gcc-internal-format, gfc-internal-format
*************** msgstr ""
*** 31002,31008 ****
  #: lto-compress.cc:165
  #, gcc-internal-format
  msgid "original size unknown"
! msgstr ""
  
  #: lto-compress.cc:171
  #, fuzzy, gcc-internal-format, gfc-internal-format
--- 30965,30971 ----
  #: lto-compress.cc:165
  #, gcc-internal-format
  msgid "original size unknown"
! msgstr "原始大小未知"
  
  #: lto-compress.cc:171
  #, fuzzy, gcc-internal-format, gfc-internal-format
*************** msgid "problem with building target imag
*** 31145,31163 ****
  msgstr "组建目标平台：%s\n"
  
  #: lto-wrapper.cc:1083
! #, fuzzy, gcc-internal-format
  msgid "reading input file"
! msgstr "读取输入历史文件…\n"
  
  #: lto-wrapper.cc:1088
! #, fuzzy, gcc-internal-format
  msgid "writing output file"
! msgstr "写入到输出文件 '%s' 时出错\n"
  
  #: lto-wrapper.cc:1127
  #, gcc-internal-format
  msgid "installation error, cannot find %<crtoffloadtable%s.o%>"
! msgstr ""
  
  #: lto-wrapper.cc:1380
  #, fuzzy
--- 31108,31126 ----
  msgstr "组建目标平台：%s\n"
  
  #: lto-wrapper.cc:1083
! #, gcc-internal-format
  msgid "reading input file"
! msgstr "正在读取输入文件"
  
  #: lto-wrapper.cc:1088
! #, gcc-internal-format
  msgid "writing output file"
! msgstr "正在写入输出文件"
  
  #: lto-wrapper.cc:1127
  #, gcc-internal-format
  msgid "installation error, cannot find %<crtoffloadtable%s.o%>"
! msgstr "安装错误，无法找到 %<crtoffloadtable%s.o%>"
  
  #: lto-wrapper.cc:1380
  #, fuzzy
*************** msgid "environment variable %<COLLECT_GC
*** 31178,31187 ****
  msgstr "环境变量 COLLECT_GCC_OPTIONS 必须被设置"
  
  #: lto-wrapper.cc:1575
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "missing argument to %qs"
  msgid "missing directory: %s"
! msgstr "%qs缺少参数"
  
  #: lto-wrapper.cc:1768 lto-wrapper.cc:1828 c-family/c-pch.cc:215
  #: c-family/c-pch.cc:250 c-family/c-pch.cc:288 c-family/c-pch.cc:366
--- 31141,31149 ----
  msgstr "环境变量 COLLECT_GCC_OPTIONS 必须被设置"
  
  #: lto-wrapper.cc:1575
! #, gcc-internal-format, gfc-internal-format
  msgid "missing directory: %s"
! msgstr "缺失目录：%s"
  
  #: lto-wrapper.cc:1768 lto-wrapper.cc:1828 c-family/c-pch.cc:215
  #: c-family/c-pch.cc:250 c-family/c-pch.cc:288 c-family/c-pch.cc:366
*************** msgid "using ltrans cache without file l
*** 31217,31226 ****
  msgstr ""
  
  #: lto-wrapper.cc:2315 config/gcn/mkoffload.cc:954
! #, fuzzy, gcc-internal-format
! #| msgid "atexit failed"
  msgid "%<atexit%> failed"
! msgstr "atexit 失败"
  
  #: multiple_target.cc:72
  #, fuzzy, gcc-internal-format
--- 31179,31187 ----
  msgstr ""
  
  #: lto-wrapper.cc:2315 config/gcn/mkoffload.cc:954
! #, gcc-internal-format
  msgid "%<atexit%> failed"
! msgstr "%<atexit%> 失败"
  
  #: multiple_target.cc:72
  #, fuzzy, gcc-internal-format
*************** msgid "location of OpenACC %<kernels%>"
*** 31744,31752 ****
  msgstr ""
  
  #: omp-oacc-kernels-decompose.cc:1295
! #, fuzzy, gcc-internal-format
  msgid "%qs not yet supported"
! msgstr "%P%F：不支持 -shared\n"
  
  #: omp-oacc-neuter-broadcast.cc:1764
  #, gcc-internal-format
--- 31705,31713 ----
  msgstr ""
  
  #: omp-oacc-kernels-decompose.cc:1295
! #, gcc-internal-format
  msgid "%qs not yet supported"
! msgstr "%qs 尚未被支持"
  
  #: omp-oacc-neuter-broadcast.cc:1764
  #, gcc-internal-format
*************** msgid "fail to initialize plugin %s"
*** 32525,32538 ****
  msgstr "无法初始化插件 %s"
  
  #: plugin.cc:708
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid ""
! #| "cannot load plugin %s\n"
! #| "%s"
  msgid "cannot load plugin %s: %s"
! msgstr ""
! "无法加载插件 %s\n"
! "%s"
  
  #: plugin.cc:718
  #, fuzzy, gcc-internal-format, gfc-internal-format
--- 32486,32494 ----
  msgstr "无法初始化插件 %s"
  
  #: plugin.cc:708
! #, gcc-internal-format, gfc-internal-format
  msgid "cannot load plugin %s: %s"
! msgstr "无法加载插件 %s：%s"
  
  #: plugin.cc:718
  #, fuzzy, gcc-internal-format, gfc-internal-format
*************** msgstr ""
*** 32555,32564 ****
  "%3$s"
  
  #: plugin.cc:737
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "fail to initialize plugin %s"
  msgid "failed to initialize plugin %s"
! msgstr "无法初始化插件 %s"
  
  #: plugin.cc:1049
  #, fuzzy, gcc-internal-format
--- 32511,32519 ----
  "%3$s"
  
  #: plugin.cc:737
! #, gcc-internal-format, gfc-internal-format
  msgid "failed to initialize plugin %s"
! msgstr "初始化插件 %s 失败"
  
  #: plugin.cc:1049
  #, fuzzy, gcc-internal-format
*************** msgid "register of %qD used for multiple
*** 32831,32839 ****
  msgstr "嵌套函数中使用了全局寄存器变量%qD"
  
  #: reginfo.cc:760 config/rs6000/rs6000-logue.cc:5577
! #, fuzzy, gcc-internal-format
  msgid "conflicts with %qD"
! msgstr "%qD与已用的函数冲突"
  
  #: reginfo.cc:765
  #, gcc-internal-format
--- 32786,32794 ----
  msgstr "嵌套函数中使用了全局寄存器变量%qD"
  
  #: reginfo.cc:760 config/rs6000/rs6000-logue.cc:5577
! #, gcc-internal-format
  msgid "conflicts with %qD"
! msgstr "与 %qD 冲突"
  
  #: reginfo.cc:765
  #, gcc-internal-format
*************** msgid "variable symbol is not variable"
*** 33125,33133 ****
  msgstr "%L处的符号不是一个 DUMMY 变量"
  
  #: symtab.cc:1130
! #, fuzzy, gcc-internal-format
  msgid "node has unknown type"
! msgstr "未知类型的输入行"
  
  #: symtab.cc:1135
  #, fuzzy, gcc-internal-format, gfc-internal-format
--- 33080,33088 ----
  msgstr "%L处的符号不是一个 DUMMY 变量"
  
  #: symtab.cc:1130
! #, gcc-internal-format
  msgid "node has unknown type"
! msgstr "节点类型未知"
  
  #: symtab.cc:1135
  #, fuzzy, gcc-internal-format, gfc-internal-format
*************** msgid "mips16 function profiling"
*** 45675,45684 ****
  msgstr "mips16 函数取样"
  
  #: config/mmix/mmix.cc:318
! #, fuzzy, gcc-internal-format
! #| msgid "-f%s not supported: ignored"
  msgid "%<-f%s%> not supported: ignored"
! msgstr "-f%s 不受支持：已忽略"
  
  #: config/mmix/mmix.cc:783
  #, gcc-internal-format
--- 45630,45638 ----
  msgstr "mips16 函数取样"
  
  #: config/mmix/mmix.cc:318
! #, gcc-internal-format
  msgid "%<-f%s%> not supported: ignored"
! msgstr "%<-f%s%> 不受支持：已忽略"
  
  #: config/mmix/mmix.cc:783
  #, gcc-internal-format
*************** msgstr ""
*** 45818,45824 ****
  #: config/msp430/msp430-devices.cc:488
  #, gcc-internal-format
  msgid "could not locate MCU data file %<devices.csv%>"
! msgstr ""
  
  #: config/msp430/msp430.cc:181
  #, gcc-internal-format
--- 45772,45778 ----
  #: config/msp430/msp430-devices.cc:488
  #, gcc-internal-format
  msgid "could not locate MCU data file %<devices.csv%>"
! msgstr "无法定位 MCU 数据文件 %<devices.csv%>"
  
  #: config/msp430/msp430.cc:181
  #, gcc-internal-format
*************** msgid "unrecognized MCU name %qs, assumi
*** 45861,45870 ****
  msgstr ""
  
  #: config/msp430/msp430.cc:250
! #, fuzzy, gcc-internal-format
! #| msgid "unrecognized register name %qs"
  msgid "Unrecognized MCU name %qs."
! msgstr "不可识别的寄存名%qs"
  
  #: config/msp430/msp430.cc:255
  #, fuzzy, gcc-internal-format
--- 45815,45823 ----
  msgstr ""
  
  #: config/msp430/msp430.cc:250
! #, gcc-internal-format
  msgid "Unrecognized MCU name %qs."
! msgstr "无法识别的 MCU 名称 %qs。"
  
  #: config/msp430/msp430.cc:255
  #, fuzzy, gcc-internal-format
*************** msgid "%<-mabi=2fp+%> option only suppor
*** 46152,46160 ****
  msgstr ""
  
  #: config/nvptx/mkoffload.cc:94
! #, fuzzy, gcc-internal-format
  msgid "deleting file %s: %m"
! msgstr "删除临时 exp 文件 %s"
  
  #: config/nvptx/mkoffload.cc:119
  #, gcc-internal-format
--- 46105,46113 ----
  msgstr ""
  
  #: config/nvptx/mkoffload.cc:94
! #, gcc-internal-format
  msgid "deleting file %s: %m"
! msgstr "正在删除文件 %s: %m"
  
  #: config/nvptx/mkoffload.cc:119
  #, gcc-internal-format
*************** msgid "cannot open '%s'"
*** 46203,46211 ****
  msgstr "无法打开“%s”"
  
  #: config/nvptx/mkoffload.cc:860
! #, fuzzy, gcc-internal-format
  msgid "cannot open intermediate ptx file"
! msgstr "无法打开输入文件“%s”"
  
  #: config/nvptx/nvptx.cc:206
  #, fuzzy, gcc-internal-format
--- 46156,46164 ----
  msgstr "无法打开“%s”"
  
  #: config/nvptx/mkoffload.cc:860
! #, gcc-internal-format
  msgid "cannot open intermediate ptx file"
! msgstr "无法打开中间的 ptx 文件"
  
  #: config/nvptx/nvptx.cc:206
  #, fuzzy, gcc-internal-format
*************** msgid "%<CTABLE_ENTRY%> index %wd is not
*** 46355,46369 ****
  msgstr ""
  
  #: config/pru/pru-pragma.cc:63
! #, fuzzy, gcc-internal-format
! #| msgid "redefinition of %q#T"
  msgid "redefinition of %<CTABLE_ENTRY %wd%>"
! msgstr "%q#T重定义"
  
  #: config/pru/pru-pragma.cc:67
  #, gcc-internal-format
  msgid "%<CTABLE_ENTRY%> base address is not a multiple of 256"
! msgstr ""
  
  #: config/pru/pru-pragma.cc:75
  #, fuzzy, gcc-internal-format
--- 46308,46321 ----
  msgstr ""
  
  #: config/pru/pru-pragma.cc:63
! #, gcc-internal-format
  msgid "redefinition of %<CTABLE_ENTRY %wd%>"
! msgstr "%<CTABLE_ENTRY %wd%> 的重定义"
  
  #: config/pru/pru-pragma.cc:67
  #, gcc-internal-format
  msgid "%<CTABLE_ENTRY%> base address is not a multiple of 256"
! msgstr "%<CTABLE_ENTRY%> 基地址不是 256 的倍数"
  
  #: config/pru/pru-pragma.cc:75
  #, fuzzy, gcc-internal-format
*************** msgid "rv32e requires ilp32e ABI"
*** 46754,46763 ****
  msgstr "rv32e 需要 ilp32e ABI"
  
  #: config/riscv/riscv.cc:10723
! #, fuzzy, gcc-internal-format
! #| msgid "rv32e requires ilp32e ABI"
  msgid "rv64e requires lp64e ABI"
! msgstr "rv32e 需要 ilp32e ABI"
  
  #: config/riscv/riscv.cc:10728
  #, fuzzy, gcc-internal-format
--- 46706,46714 ----
  msgstr "rv32e 需要 ilp32e ABI"
  
  #: config/riscv/riscv.cc:10723
! #, gcc-internal-format
  msgid "rv64e requires lp64e ABI"
! msgstr "rv64e 需要 lp64e ABI"
  
  #: config/riscv/riscv.cc:10728
  #, fuzzy, gcc-internal-format
*************** msgstr "%qs必须与%qs一起使用"
*** 47252,47261 ****
  #: config/rs6000/rs6000.cc:4222 config/rs6000/rs6000.cc:4231
  #: config/rs6000/rs6000.cc:4369 config/rs6000/rs6000.cc:4382
  #: config/rs6000/rs6000.cc:4404
! #, fuzzy, gcc-internal-format
! #| msgid "%qT referred to as %qs"
  msgid "%qs requires %qs"
! msgstr "%qT作为%qs被引用"
  
  #: config/rs6000/rs6000.cc:4118
  #, fuzzy, gcc-internal-format
--- 47203,47211 ----
  #: config/rs6000/rs6000.cc:4222 config/rs6000/rs6000.cc:4231
  #: config/rs6000/rs6000.cc:4369 config/rs6000/rs6000.cc:4382
  #: config/rs6000/rs6000.cc:4404
! #, gcc-internal-format
  msgid "%qs requires %qs"
! msgstr "%qs 需要 %qs"
  
  #: config/rs6000/rs6000.cc:4118
  #, fuzzy, gcc-internal-format
*************** msgid "%qF requires z15 or higher"
*** 47517,47526 ****
  msgstr "%qF 需要 z15 或更高"
  
  #: config/s390/s390-c.cc:965
! #, fuzzy, gcc-internal-format
! #| msgid "%qF requires z14 or higher"
  msgid "%qF requires z17 or higher"
! msgstr "%qF 需要 z14 或更高"
  
  #: config/s390/s390-c.cc:979
  #, gcc-internal-format
--- 47467,47475 ----
  msgstr "%qF 需要 z15 或更高"
  
  #: config/s390/s390-c.cc:965
! #, gcc-internal-format
  msgid "%qF requires z17 or higher"
! msgstr "%qF 需要 z17 或更高"
  
  #: config/s390/s390-c.cc:979
  #, gcc-internal-format
*************** msgid "Extension: Unary operator followi
*** 80823,80831 ****
  msgstr "扩展：%C处单目运算符出现在算术运算符之后"
  
  #: fortran/matchexp.cc:666
! #, fuzzy, gcc-internal-format
  msgid "match_level_4(): Bad operator"
! msgstr "错误的运算符"
  
  #: fortran/misc.cc:116
  #, gcc-internal-format
--- 80772,80780 ----
  msgstr "扩展：%C处单目运算符出现在算术运算符之后"
  
  #: fortran/matchexp.cc:666
! #, gcc-internal-format
  msgid "match_level_4(): Bad operator"
! msgstr "match_level_4()：错误的运算符"
  
  #: fortran/misc.cc:116
  #, gcc-internal-format
diff -Nrcpad gcc-16-20250511/gcc/range-op-float.cc gcc-16-20250518/gcc/range-op-float.cc
*** gcc-16-20250511/gcc/range-op-float.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/range-op-float.cc	Sun May 18 22:32:09 2025
*************** private:
*** 2899,2904 ****
--- 2899,2935 ----
    }
  } fop_div;
  
+ // Implement fold for a cast from float to an int.
+ bool
+ operator_cast::fold_range (irange &, tree, const frange &,
+ 			   const irange &, relation_trio) const
+ {
+   return false;
+ }
+ 
+ // Implement op1_range for a cast from float to an int.
+ bool
+ operator_cast::op1_range (frange &, tree, const irange &,
+ 			  const irange &, relation_trio) const
+ {
+   return false;
+ }
+ 
+ // Implement fold for a cast from int to a float.
+ bool
+ operator_cast::fold_range (frange &, tree, const irange &,
+ 			   const frange &, relation_trio) const
+ {
+   return false;
+ }
+ 
+ // Implement op1_range for a cast from int to a float.
+ bool
+ operator_cast::op1_range (irange &, tree, const frange &,
+ 			  const frange &, relation_trio) const
+ {
+   return false;
+ }
  
  // Initialize any float operators to the primary table
  
diff -Nrcpad gcc-16-20250511/gcc/range-op-mixed.h gcc-16-20250518/gcc/range-op-mixed.h
*** gcc-16-20250511/gcc/range-op-mixed.h	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/range-op-mixed.h	Sun May 18 22:32:09 2025
*************** public:
*** 473,478 ****
--- 473,487 ----
    bool fold_range (prange &r, tree type,
  		   const irange &op1, const prange &op2,
  		   relation_trio rel = TRIO_VARYING) const final override;
+   bool fold_range (irange &r, tree type,
+ 		   const frange &lh,
+ 		   const irange &rh,
+ 		   relation_trio = TRIO_VARYING) const;
+   bool fold_range (frange &r, tree type,
+ 		   const irange &lh,
+ 		   const frange &rh,
+ 		   relation_trio = TRIO_VARYING) const;
+ 
    bool op1_range (irange &r, tree type,
  		  const irange &lhs, const irange &op2,
  		  relation_trio rel = TRIO_VARYING) const final override;
*************** public:
*** 485,490 ****
--- 494,508 ----
    bool op1_range (prange &r, tree type,
  		  const irange &lhs, const prange &op2,
  		  relation_trio rel = TRIO_VARYING) const final override;
+   bool op1_range (frange &r, tree type,
+ 		  const irange &lhs,
+ 		  const irange &op2,
+ 		  relation_trio = TRIO_VARYING) const;
+   bool op1_range (irange &r, tree type,
+ 		  const frange &lhs,
+ 		  const frange &op2,
+ 		  relation_trio = TRIO_VARYING) const;
+ 
    relation_kind lhs_op1_relation (const irange &lhs,
  				  const irange &op1, const irange &op2,
  				  relation_kind) const final override;
diff -Nrcpad gcc-16-20250511/gcc/range-op-ptr.cc gcc-16-20250518/gcc/range-op-ptr.cc
*** gcc-16-20250511/gcc/range-op-ptr.cc	Sun May 11 22:32:10 2025
--- gcc-16-20250518/gcc/range-op-ptr.cc	Sun May 18 22:32:09 2025
*************** operator_cast::fold_range (prange &r, tr
*** 602,609 ****
    int_range<2> tmp = inner;
    tree pointer_uint_type = make_unsigned_type (TYPE_PRECISION (type));
    range_cast (tmp, pointer_uint_type);
!   r.set (type, tmp.lower_bound (), tmp.upper_bound ());
!   r.update_bitmask (tmp.get_bitmask ());
    return true;
  }
  
--- 602,615 ----
    int_range<2> tmp = inner;
    tree pointer_uint_type = make_unsigned_type (TYPE_PRECISION (type));
    range_cast (tmp, pointer_uint_type);
!   // Casts may cause ranges to become UNDEFINED based on bitmasks.
!   if (tmp.undefined_p ())
!     r.set_varying (type);
!   else
!     {
!       r.set (type, tmp.lower_bound (), tmp.upper_bound ());
!       r.update_bitmask (tmp.get_bitmask ());
!     }
    return true;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/range-op.cc gcc-16-20250518/gcc/range-op.cc
*** gcc-16-20250511/gcc/range-op.cc	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/range-op.cc	Sun May 18 22:32:09 2025
*************** dispatch_trio (unsigned lhs, unsigned op
*** 164,169 ****
--- 164,171 ----
  // These are the supported dispatch patterns. These map to the parameter list
  // of the routines in range_operator.  Note the last 3 characters are
  // shorthand for the LHS, OP1, and OP2 range discriminator class.
+ // Reminder, single operand instructions use the LHS type for op2, even if
+ // unused. so FLOAT = INT would be RO_FIF.
  
  const unsigned RO_III =	dispatch_trio (VR_IRANGE, VR_IRANGE, VR_IRANGE);
  const unsigned RO_IFI = dispatch_trio (VR_IRANGE, VR_FRANGE, VR_IRANGE);
*************** range_op_handler::fold_range (vrange &r,
*** 246,251 ****
--- 248,257 ----
  	return m_operator->fold_range (as_a <frange> (r), type,
  				       as_a <irange> (lh),
  				       as_a <irange> (rh), rel);
+       case RO_FIF:
+ 	return m_operator->fold_range (as_a <frange> (r), type,
+ 				       as_a <irange> (lh),
+ 				       as_a <frange> (rh), rel);
        case RO_PPP:
  	return m_operator->fold_range (as_a <prange> (r), type,
  				       as_a <prange> (lh),
*************** range_op_handler::op1_range (vrange &r,
*** 292,297 ****
--- 298,307 ----
  	return m_operator->op1_range (as_a <irange> (r), type,
  				      as_a <irange> (lhs),
  				      as_a <irange> (op2), rel);
+       case RO_IFF:
+ 	return m_operator->op1_range (as_a <irange> (r), type,
+ 				      as_a <frange> (lhs),
+ 				      as_a <frange> (op2), rel);
        case RO_PPP:
  	return m_operator->op1_range (as_a <prange> (r), type,
  				      as_a <prange> (lhs),
*************** range_op_handler::op1_range (vrange &r,
*** 312,317 ****
--- 322,331 ----
  	return m_operator->op1_range (as_a <frange> (r), type,
  				      as_a <irange> (lhs),
  				      as_a <frange> (op2), rel);
+       case RO_FII:
+ 	return m_operator->op1_range (as_a <frange> (r), type,
+ 				      as_a <irange> (lhs),
+ 				      as_a <irange> (op2), rel);
        case RO_FFF:
  	return m_operator->op1_range (as_a <frange> (r), type,
  				      as_a <frange> (lhs),
*************** range_operator::fold_range (irange &r, t
*** 761,766 ****
--- 775,804 ----
    return true;
  }
  
+ 
+ bool
+ range_operator::fold_range (frange &, tree, const irange &,
+ 			   const frange &, relation_trio) const
+ {
+   return false;
+ }
+ 
+ bool
+ range_operator::op1_range (irange &, tree, const frange &,
+ 			  const frange &, relation_trio) const
+ {
+   return false;
+ }
+ 
+ bool
+ range_operator::op1_range (frange &, tree, const irange &,
+ 			  const irange &, relation_trio) const
+ {
+   return false;
+ }
+ 
+ 
+ 
  // The default for op1_range is to return false.
  
  bool
*************** operator_bitwise_and::op1_range (irange
*** 3678,3691 ****
        return true;
      }
  
    // For 0 = op1 & MASK, op1 is ~MASK.
!   if (lhs.zero_p () && op2.singleton_p ())
      {
        wide_int nz = wi::bit_not (op2.get_nonzero_bits ());
        int_range<2> tmp (type);
        tmp.set_nonzero_bits (nz);
        r.intersect (tmp);
      }
    return true;
  }
  
--- 3716,3749 ----
        return true;
      }
  
+   if (!op2.singleton_p (mask))
+     return true;
+ 
    // For 0 = op1 & MASK, op1 is ~MASK.
!   if (lhs.zero_p ())
      {
        wide_int nz = wi::bit_not (op2.get_nonzero_bits ());
        int_range<2> tmp (type);
        tmp.set_nonzero_bits (nz);
        r.intersect (tmp);
      }
+ 
+   irange_bitmask lhs_bm = lhs.get_bitmask ();
+   // given   [5,7]  mask 0x3 value 0x4 =  N &  [7, 7] mask 0x0 value 0x7
+   // Nothing is known about the bits not specified in the mask value (op2),
+   //  Start with the mask, 1's will occur where values were masked.
+   wide_int op1_mask = ~mask;
+   // Any bits that are unknown on the LHS are also unknown in op1,
+   // so union the current mask with the LHS mask.
+   op1_mask |= lhs_bm.mask ();
+   // The resulting zeros correspond to known bits in the LHS mask, and
+   // the LHS value should tell us what they are.  Mask off any
+   // extraneous values thats are not convered by the mask.
+   wide_int op1_value = lhs_bm.value () & ~op1_mask;
+   irange_bitmask op1_bm (op1_value, op1_mask);
+   // INtersect this mask with anything already known about the value.
+   op1_bm.intersect (r.get_bitmask ());
+   r.update_bitmask (op1_bm);
    return true;
  }
  
diff -Nrcpad gcc-16-20250511/gcc/range-op.h gcc-16-20250518/gcc/range-op.h
*** gcc-16-20250511/gcc/range-op.h	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/range-op.h	Sun May 18 22:32:09 2025
*************** public:
*** 86,91 ****
--- 86,95 ----
  			   const irange &lh,
  			   const irange &rh,
  			   relation_trio = TRIO_VARYING) const;
+   virtual bool fold_range (frange &r, tree type,
+ 			   const irange &lh,
+ 			   const frange &rh,
+ 			   relation_trio = TRIO_VARYING) const;
    virtual bool fold_range (prange &r, tree type,
  			   const prange &lh,
  			   const prange &rh,
*************** public:
*** 146,152 ****
  			  const irange &lhs,
  			  const frange &op2,
  			  relation_trio = TRIO_VARYING) const;
! 
  
    virtual bool op2_range (irange &r, tree type,
  			  const irange &lhs,
--- 150,163 ----
  			  const irange &lhs,
  			  const frange &op2,
  			  relation_trio = TRIO_VARYING) const;
!   virtual bool op1_range (irange &r, tree type,
! 			  const frange &lhs,
! 			  const frange &op2,
! 			  relation_trio = TRIO_VARYING) const;
!   virtual bool op1_range (frange &r, tree type,
! 			  const irange &lhs,
! 			  const irange &op2,
! 			  relation_trio = TRIO_VARYING) const;
  
    virtual bool op2_range (irange &r, tree type,
  			  const irange &lhs,
diff -Nrcpad gcc-16-20250511/gcc/ree.cc gcc-16-20250518/gcc/ree.cc
*** gcc-16-20250511/gcc/ree.cc	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/ree.cc	Sun May 18 22:32:09 2025
*************** combine_reaching_defs (ext_cand *cand, c
*** 903,910 ****
                                   REGNO (SET_DEST (set)));
        emit_move_insn (new_dst, new_src);
  
!       rtx_insn *insn = get_insns ();
!       end_sequence ();
        if (NEXT_INSN (insn))
  	return false;
        if (recog_memoized (insn) == -1)
--- 903,909 ----
                                   REGNO (SET_DEST (set)));
        emit_move_insn (new_dst, new_src);
  
!       rtx_insn *insn = end_sequence ();
        if (NEXT_INSN (insn))
  	return false;
        if (recog_memoized (insn) == -1)
diff -Nrcpad gcc-16-20250511/gcc/reg-stack.cc gcc-16-20250518/gcc/reg-stack.cc
*** gcc-16-20250511/gcc/reg-stack.cc	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/reg-stack.cc	Sun May 18 22:32:09 2025
*************** compensate_edge (edge e)
*** 2989,2996 ****
  
        change_stack (after, &regstack, target_stack, EMIT_BEFORE);
  
!       seq = get_insns ();
!       end_sequence ();
  
        set_insn_locations (seq, e->goto_locus);
        insert_insn_on_edge (seq, e);
--- 2989,2995 ----
  
        change_stack (after, &regstack, target_stack, EMIT_BEFORE);
  
!       seq = end_sequence ();
  
        set_insn_locations (seq, e->goto_locus);
        insert_insn_on_edge (seq, e);
diff -Nrcpad gcc-16-20250511/gcc/reload1.cc gcc-16-20250518/gcc/reload1.cc
*** gcc-16-20250511/gcc/reload1.cc	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/reload1.cc	Sun May 18 22:32:09 2025
*************** emit_input_reload_insns (class insn_chai
*** 7540,7547 ****
      copy_reg_eh_region_note_forward (insn, get_insns (), NULL);
  
    /* End this sequence.  */
!   *where = get_insns ();
!   end_sequence ();
  
    /* Update reload_override_in so that delete_address_reloads_1
       can see the actual register usage.  */
--- 7540,7546 ----
      copy_reg_eh_region_note_forward (insn, get_insns (), NULL);
  
    /* End this sequence.  */
!   *where = end_sequence ();
  
    /* Update reload_override_in so that delete_address_reloads_1
       can see the actual register usage.  */
diff -Nrcpad gcc-16-20250511/gcc/rtl.h gcc-16-20250518/gcc/rtl.h
*** gcc-16-20250511/gcc/rtl.h	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/rtl.h	Sun May 18 22:32:09 2025
*************** extern rtx_insn *get_last_nonnote_insn (
*** 3306,3312 ****
  extern void start_sequence (void);
  extern void push_to_sequence (rtx_insn *);
  extern void push_to_sequence2 (rtx_insn *, rtx_insn *);
! extern void end_sequence (void);
  #if TARGET_SUPPORTS_WIDE_INT == 0
  extern double_int rtx_to_double_int (const_rtx);
  #endif
--- 3306,3312 ----
  extern void start_sequence (void);
  extern void push_to_sequence (rtx_insn *);
  extern void push_to_sequence2 (rtx_insn *, rtx_insn *);
! extern rtx_insn *end_sequence (void);
  #if TARGET_SUPPORTS_WIDE_INT == 0
  extern double_int rtx_to_double_int (const_rtx);
  #endif
diff -Nrcpad gcc-16-20250511/gcc/sel-sched-ir.cc gcc-16-20250518/gcc/sel-sched-ir.cc
*** gcc-16-20250511/gcc/sel-sched-ir.cc	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/sel-sched-ir.cc	Sun May 18 22:32:09 2025
*************** setup_nop_and_exit_insns (void)
*** 5862,5869 ****
  
    start_sequence ();
    emit_insn (nop_pattern);
!   exit_insn = get_insns ();
!   end_sequence ();
    set_block_for_insn (exit_insn, EXIT_BLOCK_PTR_FOR_FN (cfun));
  }
  
--- 5862,5868 ----
  
    start_sequence ();
    emit_insn (nop_pattern);
!   exit_insn = end_sequence ();
    set_block_for_insn (exit_insn, EXIT_BLOCK_PTR_FOR_FN (cfun));
  }
  
diff -Nrcpad gcc-16-20250511/gcc/shrink-wrap.cc gcc-16-20250518/gcc/shrink-wrap.cc
*** gcc-16-20250511/gcc/shrink-wrap.cc	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/shrink-wrap.cc	Sun May 18 22:32:09 2025
*************** emit_common_heads_for_components (sbitma
*** 1559,1566 ****
  	{
  	  start_sequence ();
  	  targetm.shrink_wrap.emit_prologue_components (pro);
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  	  record_prologue_seq (seq);
  
  	  emit_insn_after (seq, bb_note (bb));
--- 1559,1565 ----
  	{
  	  start_sequence ();
  	  targetm.shrink_wrap.emit_prologue_components (pro);
! 	  rtx_insn *seq = end_sequence ();
  	  record_prologue_seq (seq);
  
  	  emit_insn_after (seq, bb_note (bb));
*************** emit_common_heads_for_components (sbitma
*** 1572,1579 ****
  	{
  	  start_sequence ();
  	  targetm.shrink_wrap.emit_epilogue_components (epi);
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  	  record_epilogue_seq (seq);
  
  	  emit_insn_after (seq, bb_note (bb));
--- 1571,1577 ----
  	{
  	  start_sequence ();
  	  targetm.shrink_wrap.emit_epilogue_components (epi);
! 	  rtx_insn *seq = end_sequence ();
  	  record_epilogue_seq (seq);
  
  	  emit_insn_after (seq, bb_note (bb));
*************** emit_common_tails_for_components (sbitma
*** 1659,1666 ****
  	{
  	  start_sequence ();
  	  targetm.shrink_wrap.emit_epilogue_components (epi);
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  	  record_epilogue_seq (seq);
  
  	  if (control_flow_insn_p (last_insn))
--- 1657,1663 ----
  	{
  	  start_sequence ();
  	  targetm.shrink_wrap.emit_epilogue_components (epi);
! 	  rtx_insn *seq = end_sequence ();
  	  record_epilogue_seq (seq);
  
  	  if (control_flow_insn_p (last_insn))
*************** emit_common_tails_for_components (sbitma
*** 1675,1682 ****
  	{
  	  start_sequence ();
  	  targetm.shrink_wrap.emit_prologue_components (pro);
! 	  rtx_insn *seq = get_insns ();
! 	  end_sequence ();
  	  record_prologue_seq (seq);
  
  	  if (control_flow_insn_p (last_insn))
--- 1672,1678 ----
  	{
  	  start_sequence ();
  	  targetm.shrink_wrap.emit_prologue_components (pro);
! 	  rtx_insn *seq = end_sequence ();
  	  record_prologue_seq (seq);
  
  	  if (control_flow_insn_p (last_insn))
*************** insert_prologue_epilogue_for_components
*** 1740,1747 ****
  	      /* Put the epilogue components in place.  */
  	      start_sequence ();
  	      targetm.shrink_wrap.emit_epilogue_components (epi);
! 	      rtx_insn *seq = get_insns ();
! 	      end_sequence ();
  	      record_epilogue_seq (seq);
  
  	      if (e->flags & EDGE_SIBCALL)
--- 1736,1742 ----
  	      /* Put the epilogue components in place.  */
  	      start_sequence ();
  	      targetm.shrink_wrap.emit_epilogue_components (epi);
! 	      rtx_insn *seq = end_sequence ();
  	      record_epilogue_seq (seq);
  
  	      if (e->flags & EDGE_SIBCALL)
*************** insert_prologue_epilogue_for_components
*** 1764,1771 ****
  	      /* Put the prologue components in place.  */
  	      start_sequence ();
  	      targetm.shrink_wrap.emit_prologue_components (pro);
! 	      seq = get_insns ();
! 	      end_sequence ();
  	      record_prologue_seq (seq);
  
  	      insert_insn_on_edge (seq, e);
--- 1759,1765 ----
  	      /* Put the prologue components in place.  */
  	      start_sequence ();
  	      targetm.shrink_wrap.emit_prologue_components (pro);
! 	      seq = end_sequence ();
  	      record_prologue_seq (seq);
  
  	      insert_insn_on_edge (seq, e);
diff -Nrcpad gcc-16-20250511/gcc/symtab.cc gcc-16-20250518/gcc/symtab.cc
*** gcc-16-20250511/gcc/symtab.cc	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/symtab.cc	Sun May 18 22:32:09 2025
*************** symtab_node::dump_base (FILE *f)
*** 989,998 ****
  	     same_comdat_group->dump_asm_name ());
    if (next_sharing_asm_name)
      fprintf (f, "  next sharing asm name: %i\n",
! 	     next_sharing_asm_name->order);
    if (previous_sharing_asm_name)
      fprintf (f, "  previous sharing asm name: %i\n",
! 	     previous_sharing_asm_name->order);
  
    if (address_taken)
      fprintf (f, "  Address is taken.\n");
--- 989,998 ----
  	     same_comdat_group->dump_asm_name ());
    if (next_sharing_asm_name)
      fprintf (f, "  next sharing asm name: %i\n",
! 	     next_sharing_asm_name->get_uid ());
    if (previous_sharing_asm_name)
      fprintf (f, "  previous sharing asm name: %i\n",
! 	     previous_sharing_asm_name->get_uid ());
  
    if (address_taken)
      fprintf (f, "  Address is taken.\n");
diff -Nrcpad gcc-16-20250511/gcc/testsuite/ChangeLog gcc-16-20250518/gcc/testsuite/ChangeLog
*** gcc-16-20250511/gcc/testsuite/ChangeLog	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/ChangeLog	Sun May 18 22:32:09 2025
***************
*** 1,3 ****
--- 1,831 ----
+ 2025-05-17  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* gcc.dg/builtins-1.c: Builtin codegen test.
+ 	* gcc.dg/c23-builtins-1.c: Builtin signature test.
+ 
+ 2025-05-17  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/sat/sat_arith.h: Add more helper macros.
+ 	* gcc.target/riscv/sat/sat_arith_data.h: Add the test data
+ 	for scalar unsigned SAT_ADD.
+ 	* gcc.target/riscv/sat/sat_u_add-run-1-u16.c: Leverage the test
+ 	data from the shared header file.
+ 	* gcc.target/riscv/sat/sat_u_add-run-1-u32.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-1-u64.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-1-u8.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-2-u16.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-2-u32.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-2-u64.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-2-u8.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-3-u16.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-3-u32.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-3-u64.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-3-u8.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-4-u16.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-4-u32.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-4-u64.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-4-u8.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-5-u16.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-5-u32.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-5-u64.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-5-u8.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-6-u16.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-6-u32.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-6-u64.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-6-u8.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u32.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u64.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u32-from-u64.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u16.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u32.c: Ditto
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u64.c: Ditto
+ 
+ 2025-05-16  Pengxuan Zheng  <quic_pzheng@quicinc.com>
+ 
+ 	PR target/100165
+ 	* gcc.target/aarch64/fmov-3-be.c: New test.
+ 	* gcc.target/aarch64/fmov-3-le.c: New test.
+ 	* gcc.target/aarch64/fmov-4-be.c: New test.
+ 	* gcc.target/aarch64/fmov-4-le.c: New test.
+ 	* gcc.target/aarch64/fmov-5-be.c: New test.
+ 	* gcc.target/aarch64/fmov-5-le.c: New test.
+ 
+ 2025-05-16  Pengxuan Zheng  <quic_pzheng@quicinc.com>
+ 
+ 	PR target/100165
+ 	* gcc.target/aarch64/fmov-1-be.c: New test.
+ 	* gcc.target/aarch64/fmov-1-le.c: New test.
+ 	* gcc.target/aarch64/fmov-2-be.c: New test.
+ 	* gcc.target/aarch64/fmov-2-le.c: New test.
+ 
+ 2025-05-16  Pengxuan Zheng  <quic_pzheng@quicinc.com>
+ 
+ 	PR target/100165
+ 	* gcc.target/aarch64/and-be.c: New test.
+ 	* gcc.target/aarch64/and-le.c: New test.
+ 
+ 2025-05-16  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group1/declarative_1.cob: Handle modified exception handling.
+ 
+ 2025-05-16  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* gcc.dg/pr78408-1.c: Update scan to forwprop1 only.
+ 
+ 2025-05-16  Jason Merrill  <jason@redhat.com>
+ 
+ 	* g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C:
+ 	Remove { target c++17 }.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: Take
+ 	test name for the vx combine test data.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: Leverage
+ 	the test name to identify the test data.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u8.c: Ditto.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c: Add test cases
+ 	for vsub vx combine case 1 with GR2VR cost 2.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c: Ditto.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c: Add test cases
+ 	for vsub vx combine case 1 with GR2VR cost 1.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c: Ditto.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c: Add test cases
+ 	for vsub vx combine case 1 with GR2VR cost 0.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c: Ditto.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c: Add test cases
+ 	for vsub vx combine with GR2VR cost 15.
+ 	* 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-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.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c: Add test cases
+ 	for vsub vx combine with GR2VR cost 1.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c: Diito.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c: Diito.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c: Diito.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c: Diito.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c: Diito.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c: Diito.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c: Diito.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add vector sub
+ 	vx combine asm check.
+ 	* 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-1-u16.c: Ditto.
+ 	* 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_binary_data.h: Add test
+ 	data for vector sub vx combine.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i8.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u8.c: New test.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add
+ 	type and op name to generate test function name.
+ 	* 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-1-u16.c: Ditto
+ 	* 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-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-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-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-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-4-i16.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c: Ditto
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: Refine the
+ 	test helper macros to avoid conflict.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h: Ditto.
+ 
+ 2025-05-16  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u16.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u32.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u64.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c: ...here.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u8.c: Move to...
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c: ...here.
+ 
+ 2025-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* g++.dg/coroutines/co-await-syntax-09-convert.C: Add -fcoroutines.
+ 	* g++.dg/coroutines/co-await-syntax-10.C
+ 	* g++.dg/coroutines/co-await-syntax-11.C
+ 	* g++.dg/coroutines/co-await-void_type.C
+ 	* g++.dg/coroutines/co-return-warning-1.C
+ 	* g++.dg/coroutines/ramp-return-a.C
+ 	* g++.dg/coroutines/ramp-return-c.C: Likewise.
+ 	* g++.dg/coroutines/coroutines.exp: Removed.
+ 	* lib/g++-dg.exp: Start at C++20 for coroutines/
+ 
+ 2025-05-15  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/85750
+ 	* gfortran.dg/alloc_comp_auto_array_3.f90: Adjust scan counts.
+ 	* gfortran.dg/alloc_comp_class_3.f03: Remove bogus warnings.
+ 	* gfortran.dg/alloc_comp_class_4.f03: Likewise.
+ 	* gfortran.dg/allocate_with_source_14.f03: Adjust scan count.
+ 	* gfortran.dg/derived_constructor_comps_6.f90: Likewise.
+ 	* gfortran.dg/derived_result_5.f90: New test.
+ 
+ 2025-05-15  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/120251
+ 	* cobol.dg/group1/check_88.cob: One final regex "." instead of "ß"
+ 
+ 2025-05-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/116546
+ 	* gcc.dg/pr116546.c: New.
+ 
+ 2025-05-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/120277
+ 	* gcc.dg/pr120277.c: New.
+ 
+ 2025-05-15  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/120251
+ 	* cobol.dg/group1/check_88.cob: Ignore characters above 0x80.
+ 	* cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob:
+ 	Output HIGH-VALUE as hex, rather than as characters.
+ 	* cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out:
+ 	Likewise.
+ 	* cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob: Typo.
+ 	* cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_1.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_2.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_3.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_4.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_5-f.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_6.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_7.cob: Likewise.
+ 	* cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob: New test.
+ 	* cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out: New test.
+ 
+ 2025-05-15  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/120223
+ 	* gcc.target/riscv/pr120223.c: New test.
+ 
+ 2025-05-15  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/120161
+ 	* g++.dg/template/unify13.C: New test.
+ 
+ 2025-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* lib/g++-dg.exp (g++-std-flags): Factor out of g++-dg-runtest.
+ 	* g++.dg/modules/modules.exp: Use it instead of a copy.
+ 
+ 2025-05-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.target/i386/pr110310.c: Adjust.
+ 
+ 2025-05-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.target/i386/vect-epilogues-1.c: New testcase.
+ 	* gcc.target/i386/vect-epilogues-2.c: Likewise.
+ 	* gcc.target/i386/vect-epilogues-3.c: Likewise.
+ 	* gcc.target/i386/vect-epilogues-4.c: Likewise.
+ 	* gcc.target/i386/vect-epilogues-5.c: Likewise.
+ 
+ 2025-05-14  Simon Martin  <simon@nasilyan.com>
+ 
+ 	PR c++/120126
+ 	* g++.dg/cpp0x/lambda/lambda-ice33.C: New test.
+ 
+ 2025-05-14  Jiawei  <jiawei@iscas.ac.cn>
+ 
+ 	* gcc.target/riscv/arch-55.c: New test.
+ 
+ 2025-05-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* gcc.dg/ipa/pr120044-1.c: New test.
+ 	* gcc.dg/ipa/pr120044-2.c: Likewise.
+ 	* gcc.dg/tree-ssa/pr114864.c: Likewise.
+ 
+ 2025-05-14  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/120125
+ 	* g++.dg/modules/clone-4_a.C: New test.
+ 	* g++.dg/modules/clone-4_b.C: New test.
+ 
+ 2025-05-14  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/119864
+ 	* g++.dg/modules/openmp-1.C: New test.
+ 
+ 2025-05-14  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/modules/tpl-friend-19_a.C: New test.
+ 	* g++.dg/modules/tpl-friend-19_b.C: New test.
+ 
+ 2025-05-14  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	* g++.dg/opt/pr96780_cpp23.C: New.
+ 
+ 2025-05-14  Owen Avery  <powerboat9.gamer@gmail.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	* g++.dg/warn/ignore-virtual-move-assign.C: New test.
+ 
+ 2025-05-14  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/pr103771-4.c: New test.
+ 
+ 2025-05-13  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR fortran/113413
+ 	* gfortran.dg/dec_math.f90: Add comment that degree
+ 	functions are part of F2023.
+ 
+ 2025-05-13  Yuao Ma  <c8ef@outlook.com>
+ 	    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/113413
+ 	* gfortran.dg/dec_math.f90: Add atand(y, x) testcase.
+ 
+ 2025-05-13  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR tree-optimization/119903
+ 	* g++.dg/tree-ssa/pr119903-1.C: New test.
+ 
+ 2025-05-13  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR middle-end/118868
+ 	* c-c++-common/pr118868-1.c: New test.
+ 
+ 2025-05-13  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/120188
+ 	* gm2.dg/doc/examples/plugin/fail/doc-examples-plugin-fail.exp:
+ 	Remove call to gm2-dg-frontend-configure-check and replace with
+ 	tests for whether plugin variables exist.
+ 
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libfortran/120196
+ 	* gfortran.dg/pr120196.f90: New test.
+ 
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/120191
+ 	* gfortran.dg/pr120191_3.f90: New test.
+ 
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/120191
+ 	* gfortran.dg/pr120191_2.f90: New test.
+ 
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 	    Daniil Kochergin  <daniil2472s@gmail.com>
+ 	    Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR fortran/120191
+ 	* gfortran.dg/pr120191_1.f90: New test.
+ 
+ 2025-05-13  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/116792
+ 	* gcc.dg/html-output/missing-semicolon.py: Verify that we don't
+ 	have an empty "gcc-annotated-source" and we do have a
+ 	"gcc-generated-patch".
+ 	* gcc.dg/plugin/diagnostic-test-metadata-html.c: New test.
+ 	* gcc.dg/plugin/diagnostic-test-metadata-html.py: New test script.
+ 	* gcc.dg/plugin/diagnostic-test-paths-2.c: Add
+ 	"-fdiagnostics-add-output=experimental-html" to options. Add
+ 	invocation of diagnostic-test-paths-2.py.
+ 	* gcc.dg/plugin/diagnostic-test-paths-2.py: New test script.
+ 	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add
+ 	diagnostic-test-metadata-html.c.
+ 
+ 2025-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gcc.dg/tree-ssa/vrp124.c: New.
+ 
+ 2025-05-12  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_arith.h: Add test helper macros.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u32-from-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u32-from-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u64.c: New test.
+ 
+ 2025-05-12  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/sat/sat_arith.h: Add test helper macros.
+ 	* gcc.target/riscv/sat/sat_u_add-7-u16-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-7-u16-from-u64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-7-u32-from-u64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-7-u8-from-u16.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-7-u8-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-7-u8-from-u64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u32-from-u64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u16.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u64.c: New test.
+ 
+ 2025-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120012
+ 	* g++.dg/abi/base-defaulted2.C: New test.
+ 
+ 2025-05-12  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/120188
+ 	* lib/gm2-dg.exp (gm2-dg-frontend-configure-check): New function.
+ 	(gm2-dg-runtest): Add -O2 to the option_list.
+ 	* gm2.dg/doc/examples/plugin/fail/assignvalue.mod: New test.
+ 	* gm2.dg/doc/examples/plugin/fail/doc-examples-plugin-fail.exp: New test.
+ 
+ 2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* gcc.target/nvptx/march-map=sm_61.c: Adjust.
+ 	* gcc.target/nvptx/march-map=sm_62.c: Likewise.
+ 	* gcc.target/nvptx/march=sm_61.c: New.
+ 
+ 2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* gcc.target/nvptx/mptx=5.0.c: New.
+ 
+ 2025-05-12  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/116445
+ 	* gcc.target/arm/unsigned-extend-2.c: Fix dg directives.
+ 
+ 2025-05-12  Dongyan Chen  <chendongyan@isrc.iscas.ac.cn>
+ 
+ 	* gcc.target/riscv/arch-ss-1.c: New test.
+ 	* gcc.target/riscv/arch-ss-2.c: New test.
+ 
+ 2025-05-12  Dongyan Chen  <chendongyan@isrc.iscas.ac.cn>
+ 
+ 	* gcc.target/riscv/arch-zilsd-1.c: New.
+ 	* gcc.target/riscv/arch-zilsd-2.c: New.
+ 	* gcc.target/riscv/arch-zilsd-3.c: New.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* gcc.target/arm/ivopts.c: Remove test for iwmmxt
+ 	* lib/target-supports.exp
+ 	(check_effective_target_arm_iwmmxt_ok): Delete.
+ 
+ 2025-05-12  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* gcc.target/arm/mmx-1.c: Removed.
+ 	* gcc.target/arm/mmx-2.c: Removed.
+ 	* gcc.target/arm/pr64208.c: Removed.
+ 	* gcc.target/arm/pr79145.c: Removed.
+ 	* gcc.target/arm/pr99724.c: Removed.
+ 	* gcc.target/arm/pr99786.c: Removed.
+ 
+ 2025-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR testsuite/120222
+ 	* gcc.dg/tree-ssa/gen-vect-28.c: Use noipa on main_1.
+ 
+ 2025-05-12  Jiawei  <jiawei@iscas.ac.cn>
+ 
+ 	* gcc.target/riscv/arch-52.c: Fix regular expression.
+ 
+ 2025-05-12  Chao-ying Fu  <cfu@wavecomp.com>
+ 
+ 	* gcc.target/mips/pr54240.c: Scan phiopt2.
+ 
+ 2025-05-11  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* gcc.target/i386/pr91446.c: xfail.
+ 	* gcc.target/i386/pr99881.c: remove xfail.
+ 
+ 2025-05-11  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* lib/target-supports.exp
+ 	(check_effective_target_xtensa_atomic): New function.
+ 	(check_effective_target_sync_int_long)
+ 	(check_effective_target_sync_char_short): Add test for xtensa.
+ 
+ 2025-05-11  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/258_Nested_PERFORM.cob: New testcase.
+ 	* cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.cob: Likewise.
+ 	* cobol.dg/group2/338_Default_Arithmetic__1_.cob: Likewise.
+ 	* cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob: Likewise.
+ 	* cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob: Likewise.
+ 	* cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob: Likewise.
+ 	* cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__2_.cob: Likewise.
+ 	* cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob: Likewise.
+ 	* cobol.dg/group2/Alphanumeric_and_binary_numeric.cob: Likewise.
+ 	* cobol.dg/group2/Alphanumeric_MOVE_with_truncation.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__1_.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__2_.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__3_.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__4_.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__5_.cob: Likewise.
+ 	* cobol.dg/group2/CALL_with_OMITTED_parameter.cob: Likewise.
+ 	* cobol.dg/group2/Class_check_with_reference_modification.cob: Likewise.
+ 	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.cob: Likewise.
+ 	* cobol.dg/group2/Complex_IF.cob: Likewise.
+ 	* cobol.dg/group2/Concatenation_operator.cob: Likewise.
+ 	* cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.cob: Likewise.
+ 	* cobol.dg/group2/CURRENCY_SIGN.cob: Likewise.
+ 	* cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.cob: Likewise.
+ 	* cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.cob: Likewise.
+ 	* cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.cob: Likewise.
+ 	* cobol.dg/group2/EXIT_PARAGRAPH.cob: Likewise.
+ 	* cobol.dg/group2/EXIT_PERFORM.cob: Likewise.
+ 	* cobol.dg/group2/EXIT_PERFORM_CYCLE.cob: Likewise.
+ 	* cobol.dg/group2/EXIT_SECTION.cob: Likewise.
+ 	* cobol.dg/group2/Fixed_continuation_indicator.cob: Likewise.
+ 	* cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.cob: Likewise.
+ 	* cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.cob: Likewise.
+ 	* cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.cob: Likewise.
+ 	* cobol.dg/group2/Index_and_parenthesized_expression.cob: Likewise.
+ 	* cobol.dg/group2/LENGTH_OF_omnibus.cob: Likewise.
+ 	* cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.cob: Likewise.
+ 	* cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_indexes.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_edited_item__1_.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_edited_item__2_.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_itself.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_JUSTIFIED_item.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_with_group_refmod.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_with_refmod.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_with_refmod__variable_.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_Z_literal_.cob: Likewise.
+ 	* cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob: Likewise.
+ 	* cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob: Likewise.
+ 	* cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.cob: Likewise.
+ 	* cobol.dg/group2/Non-overflow_after_overflow.cob: Likewise.
+ 	* cobol.dg/group2/OCCURS_clause_with_1_entry.cob: Likewise.
+ 	* cobol.dg/group2/OSVS_Arithmetic_Test__2_.cob: Likewise.
+ 	* cobol.dg/group2/PERFORM_..._CONTINUE.cob: Likewise.
+ 	* cobol.dg/group2/PERFORM_inline__1_.cob: Likewise.
+ 	* cobol.dg/group2/PERFORM_inline__2_.cob: Likewise.
+ 	* cobol.dg/group2/PERFORM_type_OSVS.cob: Likewise.
+ 	* cobol.dg/group2/PIC_ZZZ-__ZZZ_.cob: Likewise.
+ 	* cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.cob: Likewise.
+ 	* cobol.dg/group2/Quote_marks_in_comment_paragraphs.cob: Likewise.
+ 	* cobol.dg/group2/Recursive_PERFORM_paragraph.cob: Likewise.
+ 	* cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.cob: Likewise.
+ 	* cobol.dg/group2/SORT__EBCDIC_table_sort__1_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__EBCDIC_table_sort__2_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__2_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__3A_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__3B_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort.cob: Likewise.
+ 	* cobol.dg/group2/SOURCE_FIXED_FREE_directives.cob: Likewise.
+ 	* cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob: Likewise.
+ 	* cobol.dg/group2/_-static__compilation.cob: Likewise.
+ 	* cobol.dg/group2/STOP_RUN_WITH_ERROR_STATUS.cob: Likewise.
+ 	* cobol.dg/group2/STOP_RUN_WITH_NORMAL_STATUS.cob: Likewise.
+ 	* cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.cob: Likewise.
+ 	* cobol.dg/group2/STRING_with_subscript_reference.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_DELIMITED_ALL_LOW-VALUE.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_DELIMITED_ALL_SPACE-2.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_DELIMITED_POINTER.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_DELIMITER_IN.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_with_FUNCTION___literal.cob: Likewise.
+ 	* cobol.dg/group2/258_Nested_PERFORM.out: Known-good results file.
+ 	* cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out: Likewise.
+ 	* cobol.dg/group2/338_Default_Arithmetic__1_.out: Likewise.
+ 	* cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out: Likewise.
+ 	* cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.out: Likewise.
+ 	* cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out: Likewise.
+ 	* cobol.dg/group2/Alphanumeric_MOVE_with_truncation.out: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__1_.out: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__2_.out: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__3_.out: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__5_.out: Likewise.
+ 	* cobol.dg/group2/CALL_with_OMITTED_parameter.out: Likewise.
+ 	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.out: Likewise.
+ 	* cobol.dg/group2/Complex_IF.out: Likewise.
+ 	* cobol.dg/group2/Concatenation_operator.out: Likewise.
+ 	* cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.out: Likewise.
+ 	* cobol.dg/group2/CURRENCY_SIGN.out: Likewise.
+ 	* cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.out: Likewise.
+ 	* cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.out: Likewise.
+ 	* cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.out: Likewise.
+ 	* cobol.dg/group2/EXIT_PERFORM_CYCLE.out: Likewise.
+ 	* cobol.dg/group2/EXIT_PERFORM.out: Likewise.
+ 	* cobol.dg/group2/Fixed_continuation_indicator.out: Likewise.
+ 	* cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.out: Likewise.
+ 	* cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.out: Likewise.
+ 	* cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.out: Likewise.
+ 	* cobol.dg/group2/Index_and_parenthesized_expression.out: Likewise.
+ 	* cobol.dg/group2/LENGTH_OF_omnibus.out: Likewise.
+ 	* cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.out: Likewise.
+ 	* cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.out: Likewise.
+ 	* cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.out: Likewise.
+ 	* cobol.dg/group2/MOVE_to_edited_item__1_.out: Likewise.
+ 	* cobol.dg/group2/MOVE_to_edited_item__2_.out: Likewise.
+ 	* cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.out: Likewise.
+ 	* cobol.dg/group2/MOVE_to_JUSTIFIED_item.out: Likewise.
+ 	* cobol.dg/group2/MOVE_Z_literal_.out: Likewise.
+ 	* cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out: Likewise.
+ 	* cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out: Likewise.
+ 	* cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.out: Likewise.
+ 	* cobol.dg/group2/OSVS_Arithmetic_Test__2_.out: Likewise.
+ 	* cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.out: Likewise.
+ 	* cobol.dg/group2/Quote_marks_in_comment_paragraphs.out: Likewise.
+ 	* cobol.dg/group2/Recursive_PERFORM_paragraph.out: Likewise.
+ 	* cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.out: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__2_.out: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__3A_.out: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__3B_.out: Likewise.
+ 	* cobol.dg/group2/SOURCE_FIXED_FREE_directives.out: Likewise.
+ 	* cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out: Likewise.
+ 	* cobol.dg/group2/_-static__compilation.out: Likewise.
+ 	* cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.out: Likewise.
+ 	* cobol.dg/group2/UNSTRING_with_FUNCTION___literal.out: Likewise.
+ 
+ 2025-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120211
+ 	* gcc.dg/vect/vect-early-break_135-pr120211.c: New testcase.
+ 	* gcc.dg/torture/pr120211-1.c: Likewise.
+ 
+ 2025-05-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/120163
+ 	* gfortran.dg/interface_61.f90: New test.
+ 
+ 2025-05-11  Jiawei  <jiawei@iscas.ac.cn>
+ 
+ 	* gcc.target/riscv/arch-53.c: New test.
+ 	* gcc.target/riscv/arch-54.c: New test.
+ 
+ 2025-05-11  Jiawei  <jiawei@iscas.ac.cn>
+ 
+ 	* gcc.target/riscv/arch-49.c: New test.
+ 	* gcc.target/riscv/arch-50.c: New test.
+ 	* gcc.target/riscv/arch-51.c: New test.
+ 	* gcc.target/riscv/arch-52.c: New test.
+ 
+ 2025-05-11  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR testsuite/119909
+ 	* gcc.dg/torture/pr119131-1.c: Add -Wno-psabi.
+ 
  2025-05-10  Robert Dubner  <rdubner@symas.com>
  
  	* cobol.dg/group1/simple-if.cob: Make explicitly >>SOURCE FREE
diff -Nrcpad gcc-16-20250511/gcc/testsuite/c-c++-common/pr118868-1.c gcc-16-20250518/gcc/testsuite/c-c++-common/pr118868-1.c
*** gcc-16-20250511/gcc/testsuite/c-c++-common/pr118868-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/c-c++-common/pr118868-1.c	Sun May 18 22:32:11 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ 
+ /* PR middle-end/118868 */
+ 
+ /* __builtin_assoc_barrier should work on pointers without any ICE */
+ void *f(void *a)
+ {
+   return __builtin_assoc_barrier(a);
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group1/check_88.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group1/check_88.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group1/check_88.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group1/check_88.cob	Sun May 18 22:32:11 2025
***************
*** 3,27 ****
  *> { dg-output {\->   <\-(\n|\r\n|\r)} }
  *> { dg-output {\->"""<\-(\n|\r\n|\r)} }
  *> { dg-output {\->000<\-(\n|\r\n|\r)} }
! *> { dg-output {\->ÿÿÿ<\-(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {\-><\-(\n|\r\n|\r)} }
  *> { dg-output {\->    <\-(\n|\r\n|\r)} }
  *> { dg-output {\->""""<\-(\n|\r\n|\r)} }
  *> { dg-output {\->0000<\-(\n|\r\n|\r)} }
! *> { dg-output {\->ÿÿÿÿ<\-(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {There should be no garbage after character 32(\n|\r\n|\r)} }
  *> { dg-output {\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-(\n|\r\n|\r)} }
! *> { dg-output {üüüüüüüüüüüüüüüüüüü Bundesstraße                                (\n|\r\n|\r)} }
! *> { dg-output {üüüüüüüüüüüüüüüüüüü Bundesstraße                                (\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {There should be no spaces before the final quote(\n|\r\n|\r)} }
! *> { dg-output {"üüüüüüüüüüüüüüüüüüü Bundesstraße"(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {   IsLow   ""(\n|\r\n|\r)} }
  *> { dg-output {   IsZero  "000"(\n|\r\n|\r)} }
! *> { dg-output {   IsHi    "ÿÿÿ"(\n|\r\n|\r)} }
  *> { dg-output {   IsBob   "bob"(\n|\r\n|\r)} }
  *> { dg-output {   IsQuote """""(\n|\r\n|\r)} }
  *> { dg-output {   IsSpace "   "(\n|\r\n|\r)} }
--- 3,27 ----
  *> { dg-output {\->   <\-(\n|\r\n|\r)} }
  *> { dg-output {\->"""<\-(\n|\r\n|\r)} }
  *> { dg-output {\->000<\-(\n|\r\n|\r)} }
! *> { dg-output {\->.*<\-(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {\-><\-(\n|\r\n|\r)} }
  *> { dg-output {\->    <\-(\n|\r\n|\r)} }
  *> { dg-output {\->""""<\-(\n|\r\n|\r)} }
  *> { dg-output {\->0000<\-(\n|\r\n|\r)} }
! *> { dg-output {\->.*<\-(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {There should be no garbage after character 32(\n|\r\n|\r)} }
  *> { dg-output {\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-(\n|\r\n|\r)} }
! *> { dg-output {.* Bundesstra.e                                (\n|\r\n|\r)} }
! *> { dg-output {.* Bundesstra.e                                (\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {There should be no spaces before the final quote(\n|\r\n|\r)} }
! *> { dg-output {".* Bundesstra.e"(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {   IsLow   ""(\n|\r\n|\r)} }
  *> { dg-output {   IsZero  "000"(\n|\r\n|\r)} }
! *> { dg-output {   IsHi    ".*"(\n|\r\n|\r)} }
  *> { dg-output {   IsBob   "bob"(\n|\r\n|\r)} }
  *> { dg-output {   IsQuote """""(\n|\r\n|\r)} }
  *> { dg-output {   IsSpace "   "(\n|\r\n|\r)} }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group1/declarative_1.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group1/declarative_1.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group1/declarative_1.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group1/declarative_1.cob	Sun May 18 22:32:11 2025
***************
*** 1,14 ****
  *> { dg-do run }
  *> { dg-output {Turning EC\-ALL CHECKING OFF \-\- Expecting \+00\.00 from ACOS\(\-3\)(\n|\r\n|\r)} }
! *> { dg-output {      \+00\.00      TABL\(VSIX\) is 1(\n|\r\n|\r)} }
  *> { dg-output {Turning EC\-ARGUMENT\-FUNCTION CHECKING ON(\n|\r\n|\r)} }
  *> { dg-output {      Expecting \+0\.00 and DECLARATIVE FOR EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
  *> { dg-output {      DECLARATIVE FOR EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
! *> { dg-output {      \+00\.00      TABL\(VSIX\) is 1(\n|\r\n|\r)} }
  *> { dg-output {Turning EC\-ARGUMENT CHECKING ON(\n|\r\n|\r)} }
  *> { dg-output {      Expecting \+0\.00 and DECLARATIVE FOR EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
  *> { dg-output {      DECLARATIVE FOR EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
! *> { dg-output {      \+00\.00      TABL\(VSIX\) is 1(\n|\r\n|\r)} }
  *> { dg-output {Turning EC\-ALL CHECKING ON(\n|\r\n|\r)} }
  *> { dg-output {      Expecting \+0\.00 and DECLARATIVE EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
  *> { dg-output {      Followed by DECLARATIVE EC\-ALL for TABL\(6\) access(\n|\r\n|\r)} }
--- 1,14 ----
  *> { dg-do run }
  *> { dg-output {Turning EC\-ALL CHECKING OFF \-\- Expecting \+00\.00 from ACOS\(\-3\)(\n|\r\n|\r)} }
! *> { dg-output {      \+00\.00      TABL\(VSIX\) is 6(\n|\r\n|\r)} }
  *> { dg-output {Turning EC\-ARGUMENT\-FUNCTION CHECKING ON(\n|\r\n|\r)} }
  *> { dg-output {      Expecting \+0\.00 and DECLARATIVE FOR EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
  *> { dg-output {      DECLARATIVE FOR EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
! *> { dg-output {      \+00\.00      TABL\(VSIX\) is 6(\n|\r\n|\r)} }
  *> { dg-output {Turning EC\-ARGUMENT CHECKING ON(\n|\r\n|\r)} }
  *> { dg-output {      Expecting \+0\.00 and DECLARATIVE FOR EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
  *> { dg-output {      DECLARATIVE FOR EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
! *> { dg-output {      \+00\.00      TABL\(VSIX\) is 6(\n|\r\n|\r)} }
  *> { dg-output {Turning EC\-ALL CHECKING ON(\n|\r\n|\r)} }
  *> { dg-output {      Expecting \+0\.00 and DECLARATIVE EC\-ARGUMENT\-FUNCTION(\n|\r\n|\r)} }
  *> { dg-output {      Followed by DECLARATIVE EC\-ALL for TABL\(6\) access(\n|\r\n|\r)} }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob	Sun May 18 22:32:11 2025
***************
*** 81,92 ****
           02  based-x            pic x(24) value "I am I, Don Quixote".
           02  based-9            pic 999   value 123.
           02  based-p            pointer   value NULL.
          01   allocated-pointer  pointer.
          procedure division.
          display     "allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)"
          allocate 35 characters returning allocated-pointer
          set address of based-var to allocated-pointer
!         call        "reporter" using based-var
          free        allocated-pointer
          goback.
          end program             prog-high.
--- 81,93 ----
           02  based-x            pic x(24) value "I am I, Don Quixote".
           02  based-9            pic 999   value 123.
           02  based-p            pointer   value NULL.
+         01 pval redefines based-var pointer.
          01   allocated-pointer  pointer.
          procedure division.
          display     "allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)"
          allocate 35 characters returning allocated-pointer
          set address of based-var to allocated-pointer
!         display pval
          free        allocated-pointer
          goback.
          end program             prog-high.
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out gcc-16-20250518/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out	Sun May 18 22:32:11 2025
*************** allocate characters  (ISO 2023 Rule 8: O
*** 12,17 ****
         "                        " "   " 0x2020202020202020
  initialize high-value
  allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)
!    (1) as allocated
!        "ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ" "¿¿¿" 0xffffffffffffffff
  
--- 12,16 ----
         "                        " "   " 0x2020202020202020
  initialize high-value
  allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)
! 0xffffffffffffffff
  
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob	Sun May 18 22:32:11 2025
***************
*** 1,27 ****
         *> { dg-do run }
         *> { dg-output-file "group2/INSPECT_CONVERTING_TO_figurative_constants.out" }
- 
          identification division.
          program-id. clouseau.
          data division.
          working-storage section.
          01 item pic x(12).
          procedure division.
          move all "abcd" to item
          inspect item converting "abcd" to low-values
!         display "low-values " space """" item """"
          move all "abcd" to item
          inspect item converting "abcd" to spaces
!         display "spaces     " space """" item """"
          move all "abcd" to item
          inspect item converting "abcd" to zeros
!         display "zeros      " space """" item """"
          move all "abcd" to item
          inspect item converting "abcd" to quotes
!         display "quotes     " space """" item """"
          move all "abcd" to item
          inspect item converting "abcd" to high-values
!         display "high-values" space """" item """"
          goback.
          end program clouseau.
  
--- 1,27 ----
         *> { dg-do run }
         *> { dg-output-file "group2/INSPECT_CONVERTING_TO_figurative_constants.out" }
          identification division.
          program-id. clouseau.
          data division.
          working-storage section.
          01 item pic x(12).
+         01 pitem redefines item pointer.
          procedure division.
          move all "abcd" to item
          inspect item converting "abcd" to low-values
!         display "low-values " space """" pitem """"
          move all "abcd" to item
          inspect item converting "abcd" to spaces
!         display "spaces     " space """" pitem """"
          move all "abcd" to item
          inspect item converting "abcd" to zeros
!         display "zeros      " space """" pitem """"
          move all "abcd" to item
          inspect item converting "abcd" to quotes
!         display "quotes     " space """" pitem """"
          move all "abcd" to item
          inspect item converting "abcd" to high-values
!         display "high-values" space """" pitem """"
          goback.
          end program clouseau.
  
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out	Sun May 18 22:32:11 2025
***************
*** 1,6 ****
! low-values  ""
! spaces      "            "
! zeros       "000000000000"
! quotes      """"""""""""""
! high-values "ÿÿÿÿÿÿÿÿÿÿÿÿ"
  
--- 1,6 ----
! low-values  "0x0000000000000000"
! spaces      "0x2020202020202020"
! zeros       "0x3030303030303030"
! quotes      "0x2222222222222222"
! high-values "0xffffffffffffffff"
  
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob	Sun May 18 22:32:11 2025
***************
*** 25,31 ****
          Move ' EFABDBCGABEFGG      0301010005TUXYXVWRXYZZPZ' to row(1).
          Move ' BABABC              0200000101SXYXYZ'         to row(3).
          Move ' BBBC                0001000200SSVW'           to row(5).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 C2 C3 C4 OUTPUT'
--- 25,31 ----
          Move ' EFABDBCGABEFGG      0301010005TUXYXVWRXYZZPZ' to row(1).
          Move ' BABABC              0200000101SXYXYZ'         to row(3).
          Move ' BBBC                0001000200SSVW'           to row(5).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 C2 C3 C4 OUTPUT'
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob	Sun May 18 22:32:11 2025
***************
*** 25,31 ****
          *> the observed outputs
          Move ' BBB                 0300ZZZ' to row(1).
          Move ' ABA                 0300ZZZ' to row(3).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 OUTPUT'
--- 25,31 ----
          *> the observed outputs
          Move ' BBB                 0300ZZZ' to row(1).
          Move ' ABA                 0300ZZZ' to row(3).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 OUTPUT'
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob	Sun May 18 22:32:11 2025
***************
*** 19,25 ****
          Move ' ADDDDA              000005AZZZZZ'  to row(5).
          Move ' CDDDDC              000000CDDDDC'  to row(7).
          Move ' BDBBBDB             000300BDWWWDB' to row(9).
! `
          Display '  INPUT                C0 C1 C2 OUTPUT'
          Display '  -------------------- -- -- -- --------------------'
          Perform Example-3 with test after
--- 19,25 ----
          Move ' ADDDDA              000005AZZZZZ'  to row(5).
          Move ' CDDDDC              000000CDDDDC'  to row(7).
          Move ' BDBBBDB             000300BDWWWDB' to row(9).
! 
          Display '  INPUT                C0 C1 C2 OUTPUT'
          Display '  -------------------- -- -- -- --------------------'
          Perform Example-3 with test after
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob	Sun May 18 22:32:11 2025
***************
*** 24,30 ****
          *> Even-numbered rows are modified by the INSPECT statements and contain
          *> the observed outputs
          Move ' ABABABABC           01ABABXYABC' to row(1).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 OUTPUT'
--- 24,30 ----
          *> Even-numbered rows are modified by the INSPECT statements and contain
          *> the observed outputs
          Move ' ABABABABC           01ABABXYABC' to row(1).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 OUTPUT'
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob	Sun May 18 22:32:11 2025
***************
*** 30,36 ****
          Move ' ABABBCAB            000106ABABBCXY' to row(1).
          Move ' ABDBABC             000001AVDBABC'  to row(3).
          Move ' BCABCABD            010000BCABCAVD' to row(5).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 C2 OUTPUT'
--- 30,36 ----
          Move ' ABABBCAB            000106ABABBCXY' to row(1).
          Move ' ABDBABC             000001AVDBABC'  to row(3).
          Move ' BCABCABD            010000BCABCAVD' to row(5).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 C2 OUTPUT'
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob	Sun May 18 22:32:11 2025
***************
*** 22,28 ****
          *> Even-numbered rows are modified by the INSPECT statements and contain
          *> the observed outputs
          Move ' AC"AEBDFBCD#AB"D    AC"XEYXFYZX#AB"D' to row(1).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                OUTPUT'
--- 22,28 ----
          *> Even-numbered rows are modified by the INSPECT statements and contain
          *> the observed outputs
          Move ' AC"AEBDFBCD#AB"D    AC"XEYXFYZX#AB"D' to row(1).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                OUTPUT'
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob	Sun May 11 22:32:11 2025
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob	Sun May 18 22:32:11 2025
***************
*** 27,33 ****
          Move ' 415-245-1212        415-245-1212' to row(1).
          Move ' 415-CH5-1212        415-??5-1212' to row(3).
          Move ' 20%Numeric          20%???????' to row(5).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                OUTPUT'
--- 27,33 ----
          Move ' 415-245-1212        415-245-1212' to row(1).
          Move ' 415-CH5-1212        415-??5-1212' to row(3).
          Move ' 20%Numeric          20%???????' to row(5).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                OUTPUT'
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob gcc-16-20250518/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob	Sun May 18 22:32:11 2025
***************
*** 0 ****
--- 1,24 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Multiple_INDEXED_BY_variables_with_the_same_name.out" }
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  GROUP-1-TABLE.
+            05  TABLE-LEVEL-1 VALUE "ABCDEFGHIJKLMNO".
+                06  TABLE-ITEM PICTURE X OCCURS 15 TIMES INDEXED BY IND.
+                88  EQUALS-M   VALUE "M".
+        01  GROUP-2-TABLE.
+            05  TABLE-LEVEL-1 VALUE "abcdefghijklmno".
+                06  TABLE-ITEM PICTURE X OCCURS 15 TIMES INDEXED BY IND.
+                88  EQUALS-M   VALUE "M".
+        PROCEDURE DIVISION.
+             set IND OF GROUP-1-TABLE to 2
+             set IND OF GROUP-2-TABLE to 4
+             display "The output should be ""Db"""
+             display "The output        is " """"
+                     TABLE-ITEM of GROUP-1-TABLE(IND OF GROUP-2-TABLE)
+                     TABLE-ITEM of GROUP-2-TABLE(IND OF GROUP-1-TABLE)
+                     """"
+             goback.
+ 
diff -Nrcpad gcc-16-20250511/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out gcc-16-20250518/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out
*** gcc-16-20250511/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out	Sun May 18 22:32:11 2025
***************
*** 0 ****
--- 1,3 ----
+ The output should be "Db"
+ The output        is "Db"
+ 
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/abi/base-defaulted2.C gcc-16-20250518/gcc/testsuite/g++.dg/abi/base-defaulted2.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/abi/base-defaulted2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/abi/base-defaulted2.C	Sun May 18 22:32:11 2025
***************
*** 0 ****
--- 1,12 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options "-fabi-version=20 -Wabi" }
+ 
+ struct Base {
+ protected:
+   Base() = default;
+   ~Base() = default;
+ };
+ 
+ struct Derived : Base {
+   void* ptr;			// { dg-bogus "offset" }
+ };
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C	Sun May 11 22:32:12 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-await-syntax-09-convert.C	Sun May 18 22:32:12 2025
***************
*** 1,4 ****
! //  { dg-additional-options "-std=c++17 -w" }
  
  #include "coro.h"
  
--- 1,4 ----
! //  { dg-additional-options "-std=c++17 -fcoroutines -w" }
  
  #include "coro.h"
  
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C	Sun May 11 22:32:12 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-await-syntax-10.C	Sun May 18 22:32:12 2025
***************
*** 1,4 ****
! //  { dg-additional-options "-std=c++17 -w" }
  
  #include "coro.h"
  
--- 1,4 ----
! //  { dg-additional-options "-std=c++17 -fcoroutines -w" }
  
  #include "coro.h"
  
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C	Sun May 11 22:32:12 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-await-syntax-11.C	Sun May 18 22:32:12 2025
***************
*** 1,4 ****
! //  { dg-additional-options "-std=c++17 -w" }
  
  #include <utility>
  #include <type_traits>
--- 1,4 ----
! //  { dg-additional-options "-std=c++17 -fcoroutines -w" }
  
  #include <utility>
  #include <type_traits>
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-await-void_type.C gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-await-void_type.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-await-void_type.C	Sun May 11 22:32:12 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-await-void_type.C	Sun May 18 22:32:12 2025
***************
*** 1,4 ****
! //  { dg-additional-options "-std=c++17 -fsyntax-only -w" }
  
  #include <coroutine>
  
--- 1,4 ----
! //  { dg-additional-options "-std=c++17 -fsyntax-only -fcoroutines -w" }
  
  #include <coroutine>
  
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C	Sun May 11 22:32:12 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/co-return-warning-1.C	Sun May 18 22:32:12 2025
***************
*** 1,4 ****
! //  { dg-additional-options "-std=c++17 -w" }
  
  #include <coroutine>
  
--- 1,4 ----
! //  { dg-additional-options "-std=c++17 -fcoroutines -w" }
  
  #include <coroutine>
  
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/coroutines.exp gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/coroutines.exp
*** gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/coroutines.exp	Sun May 11 22:32:12 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/coroutines.exp	Thu Jan  1 00:00:00 1970
***************
*** 1,50 ****
- #   Copyright (C) 2018-2025 Free Software Foundation, Inc.
- 
- # Contributed by Iain Sandoe <iain@sandoe.co.uk> under contract to Facebook.
- 
- # 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/>.
- 
- # Test C++ coroutines, requires c++17; doesn't, at present, seem much 
- # point in repeating these for other versions.
- 
- # Load support procs.
- load_lib g++-dg.exp
- 
- # If a testcase doesn't have special options, use these.
- global DEFAULT_CXXFLAGS
- if ![info exists DEFAULT_CXXFLAGS] then {
-     set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
- }
- 
- set DEFAULT_COROFLAGS $DEFAULT_CXXFLAGS
- lappend DEFAULT_COROFLAGS "-std=c++20"
- 
- dg-init
- 
- # Run the tests.
- # g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \
- #        "" $DEFAULT_COROFLAGS
- 
- foreach test [lsort [find $srcdir/$subdir {*.[CH]}]] {
-     if [runtest_file_p $runtests $test] {
-         set nshort [file tail [file dirname $test]]/[file tail $test]
-         verbose "Testing $nshort $DEFAULT_COROFLAGS" 1
-         dg-test $test "" $DEFAULT_COROFLAGS
-         set testcase [string range $test [string length "$srcdir/"] end]
-     }
- }
- 
- # done.
- dg-finish
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C	Sun May 11 22:32:12 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C	Sun May 18 22:32:12 2025
***************
*** 1,5 ****
- // { dg-do compile  { target c++17 } }
- 
  #include "coro.h"
  
  // Test that we get matching types to traits and promise param
--- 1,3 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C	Sun May 11 22:32:12 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C	Sun May 18 22:32:12 2025
***************
*** 1,4 ****
! //  { dg-additional-options "-std=c++14" }
  //  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
  
  #include "ramp-return.h"
--- 1,4 ----
! //  { dg-additional-options "-std=c++14 -fcoroutines" }
  //  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
  
  #include "ramp-return.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C	Sun May 11 22:32:12 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C	Sun May 18 22:32:12 2025
***************
*** 1,4 ****
! //  { dg-additional-options "-std=c++17" }
  //  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
  #define DELETE_COPY_CTOR 1
  #include "ramp-return.h"
--- 1,4 ----
! //  { dg-additional-options "-std=c++17 -fcoroutines" }
  //  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
  #define DELETE_COPY_CTOR 1
  #include "ramp-return.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice33.C gcc-16-20250518/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice33.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice33.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice33.C	Sun May 18 22:32:12 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/120126
+ // { dg-do compile { target c++11 } }
+ 
+ template <typename... Args>
+ int sum(Args... args) {
+   return [args...] { // { dg-error "parameter packs not expanded with" }
+     typename decltype(args)::type temp;
+   };
+ }
+ int main() {
+   sum(1, 10);
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/modules/clone-4_a.C gcc-16-20250518/gcc/testsuite/g++.dg/modules/clone-4_a.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/modules/clone-4_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/modules/clone-4_a.C	Sun May 18 22:32:14 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/120125
+ // { dg-additional-options "-fmodules -fdeclone-ctor-dtor" }
+ // { dg-module-cmi M }
+ 
+ export module M;
+ 
+ void foo();
+ export template <typename _Tp> struct __shared_ptr {
+   inline __shared_ptr() { foo(); }
+ };
+ 
+ template class __shared_ptr<int>;
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/modules/clone-4_b.C gcc-16-20250518/gcc/testsuite/g++.dg/modules/clone-4_b.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/modules/clone-4_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/modules/clone-4_b.C	Sun May 18 22:32:14 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/120125
+ // { dg-additional-options "-fmodules -fdeclone-ctor-dtor" }
+ 
+ import M;
+ 
+ int main() {
+   __shared_ptr<int> s1;
+   __shared_ptr<double> s2;
+ }
+ 
+ // { dg-final { scan-assembler-not {_ZNW1M12__shared_ptrIiEC[1-4]Ev:} } }
+ // { dg-final { scan-assembler {_ZNW1M12__shared_ptrIdEC2Ev:} } }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/modules/modules.exp gcc-16-20250518/gcc/testsuite/g++.dg/modules/modules.exp
*** gcc-16-20250511/gcc/testsuite/g++.dg/modules/modules.exp	Sun May 11 22:32:14 2025
--- gcc-16-20250518/gcc/testsuite/g++.dg/modules/modules.exp	Sun May 18 22:32:14 2025
*************** if ![info exists DEFAULT_CXXFLAGS] then
*** 36,42 ****
      set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
  }
  set DEFAULT_MODFLAGS $DEFAULT_CXXFLAGS
- set MOD_STD_LIST { 17 2a 2b }
  
  dg-init
  
--- 36,41 ----
*************** proc srcdir {} {
*** 261,304 ****
      return $testdir
  }
  
! # Return set of std options to iterate over, taken from g++-dg.exp & compat.exp
  proc module-init { src } {
!     set tmp [dg-get-options $src]
!     set option_list {}
!     set have_std 0
!     set std_prefix "-std=c++"
      global extra_tool_flags
      set extra_tool_flags {}
-     global MOD_STD_LIST
  
!     foreach op $tmp {
! 	switch [lindex $op 0] {
! 	    "dg-options" {
! 		set std_prefix "-std=gnu++"
! 		if { [string match "*-std=*" [lindex $op 2]] } {
! 		    set have_std 1
! 		}
! 		eval lappend extra_tool_flags [lindex $op 2]
! 	    }
! 	    "dg-additional-options" {
! 		if { [string match "*-std=*" [lindex $op 2]] } {
! 		    set have_std 1
! 		}
! 		eval lappend extra_tool_flags [lindex $op 2]
! 	    }
! 	}
!     }
! 
!     if { $have_std } {
! 	lappend option_list ""
!     } elseif { [string match "*xtreme*" $src] } {
  	# Only run the xtreme tests once.
! 	set x [lindex $MOD_STD_LIST end]
! 	lappend option_list "${std_prefix}$x"
!     } else {
! 	foreach x $MOD_STD_LIST {
! 	    lappend option_list "${std_prefix}$x"
! 	}
      }
  
      return $option_list
--- 260,275 ----
      return $testdir
  }
  
! # Return set of std options to iterate over.
  proc module-init { src } {
!     set option_list [g++-std-flags $src]
      global extra_tool_flags
      set extra_tool_flags {}
  
!     if { [llength $option_list]
! 	 && [string match "*xtreme*" $src] } {
  	# Only run the xtreme tests once.
! 	set option_list [lrange [lsort $option_list] end end]
      }
  
      return $option_list
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/modules/openmp-1.C gcc-16-20250518/gcc/testsuite/g++.dg/modules/openmp-1.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/modules/openmp-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/modules/openmp-1.C	Sun May 18 22:32:14 2025
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/119864
+ // { dg-do assemble }
+ // { dg-additional-options "-fmodules -fopenmp" }
+ // { dg-require-effective-target "fopenmp" }
+ 
+ export module M;
+ 
+ int foo();
+ int x = foo();
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/modules/tpl-friend-19_a.C gcc-16-20250518/gcc/testsuite/g++.dg/modules/tpl-friend-19_a.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/modules/tpl-friend-19_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/modules/tpl-friend-19_a.C	Sun May 18 22:32:14 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-additional-options "-fmodules -Wno-global-module" }
+ // { dg-module-cmi M }
+ 
+ module;
+ 
+ template <typename _MemFunPtr>
+ class _Mem_fn_base {
+   template <typename> friend struct _Bind_check_arity;
+ };
+ 
+ template <typename> struct _Bind_check_arity {};
+ 
+ export module M;
+ 
+ template struct _Bind_check_arity<int>;
+ export _Mem_fn_base<int> mem_fn();
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/modules/tpl-friend-19_b.C gcc-16-20250518/gcc/testsuite/g++.dg/modules/tpl-friend-19_b.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/modules/tpl-friend-19_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/modules/tpl-friend-19_b.C	Sun May 18 22:32:14 2025
***************
*** 0 ****
--- 1,6 ----
+ // { dg-additional-options "-fmodules" }
+ 
+ import M;
+ int main() {
+   mem_fn();
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/opt/pr96780_cpp23.C gcc-16-20250518/gcc/testsuite/g++.dg/opt/pr96780_cpp23.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/opt/pr96780_cpp23.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/opt/pr96780_cpp23.C	Sun May 18 22:32:14 2025
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/96780
+ // Verify calls to std::move/forward are folded away by the frontend.
+ // { dg-do compile { target c++23 } }
+ // { dg-additional-options "-ffold-simple-inlines -fdump-tree-gimple" }
+ 
+ #include <utility>
+ 
+ enum class A : char {a};
+ 
+ extern A& x;
+ 
+ void f() {
+   auto&& x1 = std::to_underlying(x);
+ }
+ 
+ // { dg-final { scan-tree-dump-not "= std::to_underlying" "gimple" } }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/template/unify13.C gcc-16-20250518/gcc/testsuite/g++.dg/template/unify13.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/template/unify13.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/template/unify13.C	Sun May 18 22:32:15 2025
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/120161
+ 
+ template<class T, class U>
+ struct mp_list { };
+ 
+ template<class T>
+ struct Wrap { struct type { }; };
+ 
+ struct A : mp_list<Wrap<int>::type, void>
+          , mp_list<Wrap<long>::type, void> { };
+ 
+ template<class U>
+ void f(mp_list<Wrap<int>::type, U>*);
+ 
+ int main() {
+   A a;
+   f(&a);
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/tree-ssa/pr119903-1.C gcc-16-20250518/gcc/testsuite/g++.dg/tree-ssa/pr119903-1.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/tree-ssa/pr119903-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/tree-ssa/pr119903-1.C	Sun May 18 22:32:15 2025
***************
*** 0 ****
--- 1,24 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-O2 -fnon-call-exceptions -ftrapping-math -fdump-tree-optimized-eh" }
+ 
+ // PR tree-optimization/119903
+ // match and simplify would cause the internal throwable fp comparison
+ // to become only external throwable and lose the landing pad.
+ 
+ int f() noexcept;
+ int g() noexcept;
+ 
+ int m(double a)
+ {
+   try {
+     if (a < 1.0)
+       return f();
+     return g();
+   }catch(...)
+   {
+         return -1;
+   }
+ }
+ 
+ // Make sure There is a landing pad for the non-call exception from the comparison.
+ // { dg-final { scan-tree-dump "LP " "optimized" } }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/g++.dg/warn/ignore-virtual-move-assign.C gcc-16-20250518/gcc/testsuite/g++.dg/warn/ignore-virtual-move-assign.C
*** gcc-16-20250511/gcc/testsuite/g++.dg/warn/ignore-virtual-move-assign.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/g++.dg/warn/ignore-virtual-move-assign.C	Sun May 18 22:32:15 2025
***************
*** 0 ****
--- 1,45 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-Wvirtual-move-assign -Wattributes" }
+ 
+ #include <utility>
+ 
+ class A
+ {
+   int val;
+ 
+ public:
+   explicit A (int val) : val (val) {}
+ 
+   A (const A &oth) : val (0) {}
+   A &operator= (const A &oth) { return *this; }
+   A (A &&oth) : val (oth.val) { oth.val = 0; }
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wvirtual-move-assign"
+   A &operator= (A &&oth)
+   {
+     val += oth.val;
+     oth.val = 0;
+     return *this;
+   }
+ #pragma GCC diagnostic pop
+ };
+ 
+ class B : virtual A
+ {
+ public:
+   B () : A (12) {}
+   B &operator= (B &&) = default;
+ };
+ 
+ class C : virtual A
+ {
+ public:
+   C () : A (12) {}
+ };
+ 
+ void
+ test_fn ()
+ {
+   C x, y;
+   x = std::move (y);
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/builtins-1.c gcc-16-20250518/gcc/testsuite/gcc.dg/builtins-1.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/builtins-1.c	Sun May 11 22:32:17 2025
--- gcc-16-20250518/gcc/testsuite/gcc.dg/builtins-1.c	Sun May 18 22:32:23 2025
*************** _Complex long double test_##FN##l(_Compl
*** 114,129 ****
--- 114,134 ----
  /* Keep this list sorted alphabetically by function name.  */
  FPTEST1     (acos)
  FPTEST1     (acosh)
+ FPTEST1     (acospi)
  FPTEST1     (asin)
  FPTEST1     (asinh)
+ FPTEST1     (asinpi)
  FPTEST1     (atan)
  FPTEST2     (atan2)
+ FPTEST2     (atan2pi)
  FPTEST1     (atanh)
+ FPTEST1     (atanpi)
  FPTEST1     (cbrt)
  FPTEST1     (ceil)
  FPTEST2     (copysign)
  FPTEST1     (cos)
  FPTEST1     (cosh)
+ FPTEST1     (cospi)
  FPTEST2     (drem)
  FPTEST1     (erf)
  FPTEST1     (erfc)
*************** FPTEST1     (significand)
*** 178,186 ****
--- 183,193 ----
  FPTEST1     (sin)
  FPTEST3FPP23VOID (sincos)
  FPTEST1     (sinh)
+ FPTEST1     (sinpi)
  FPTEST1     (sqrt)
  FPTEST1     (tan)
  FPTEST1     (tanh)
+ FPTEST1     (tanpi)
  FPTEST1     (tgamma)
  FPTEST1     (trunc)
  FPTEST1     (y0)
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/c23-builtins-1.c gcc-16-20250518/gcc/testsuite/gcc.dg/c23-builtins-1.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/c23-builtins-1.c	Sun May 11 22:32:17 2025
--- gcc-16-20250518/gcc/testsuite/gcc.dg/c23-builtins-1.c	Sun May 18 22:32:23 2025
***************
*** 3,13 ****
--- 3,35 ----
  /* { dg-do compile } */
  /* { dg-options "-std=c23" } */
  
+ /* Keep this list sorted alphabetically by function name.  */
+ int acospi (void); /* { dg-warning "conflicting types for built-in function" } */
+ int acospif (void); /* { dg-warning "conflicting types for built-in function" } */
+ int acospil (void); /* { dg-warning "conflicting types for built-in function" } */
+ int asinpi (void); /* { dg-warning "conflicting types for built-in function" } */
+ int asinpif (void); /* { dg-warning "conflicting types for built-in function" } */
+ int asinpil (void); /* { dg-warning "conflicting types for built-in function" } */
+ int atan2pi (void); /* { dg-warning "conflicting types for built-in function" } */
+ int atan2pif (void); /* { dg-warning "conflicting types for built-in function" } */
+ int atan2pil (void); /* { dg-warning "conflicting types for built-in function" } */
+ int atanpi (void); /* { dg-warning "conflicting types for built-in function" } */
+ int atanpif (void); /* { dg-warning "conflicting types for built-in function" } */
+ int atanpil (void); /* { dg-warning "conflicting types for built-in function" } */
+ int cospi (void); /* { dg-warning "conflicting types for built-in function" } */
+ int cospif (void); /* { dg-warning "conflicting types for built-in function" } */
+ int cospil (void); /* { dg-warning "conflicting types for built-in function" } */
  int exp10 (void); /* { dg-warning "conflicting types for built-in function" } */
  int exp10f (void); /* { dg-warning "conflicting types for built-in function" } */
  int exp10l (void); /* { dg-warning "conflicting types for built-in function" } */
  int roundeven (void); /* { dg-warning "conflicting types for built-in function" } */
  int roundevenf (void); /* { dg-warning "conflicting types for built-in function" } */
  int roundevenl (void); /* { dg-warning "conflicting types for built-in function" } */
+ int sinpi (void); /* { dg-warning "conflicting types for built-in function" } */
+ int sinpif (void); /* { dg-warning "conflicting types for built-in function" } */
+ int sinpil (void); /* { dg-warning "conflicting types for built-in function" } */
  int strdup (void); /* { dg-warning "conflicting types for built-in function" } */
  int strndup (void); /* { dg-warning "conflicting types for built-in function" } */
+ int tanpi (void); /* { dg-warning "conflicting types for built-in function" } */
+ int tanpif (void); /* { dg-warning "conflicting types for built-in function" } */
+ int tanpil (void); /* { dg-warning "conflicting types for built-in function" } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/html-output/missing-semicolon.py gcc-16-20250518/gcc/testsuite/gcc.dg/html-output/missing-semicolon.py
*** gcc-16-20250511/gcc/testsuite/gcc.dg/html-output/missing-semicolon.py	Sun May 11 22:32:17 2025
--- gcc-16-20250518/gcc/testsuite/gcc.dg/html-output/missing-semicolon.py	Sun May 18 22:32:24 2025
*************** def test_basics(html_tree):
*** 60,66 ****
  
      pre = diag.find('xhtml:pre', ns)
      assert pre is not None
!     assert pre.attrib['class'] == 'gcc-annotated-source'
  
  # For reference, here's the generated HTML:
  """
--- 60,67 ----
  
      pre = diag.find('xhtml:pre', ns)
      assert pre is not None
!     assert pre.attrib['class'] == 'gcc-generated-patch'
!     assert pre.text.startswith('--- ')
  
  # For reference, here's the generated HTML:
  """
*************** def test_basics(html_tree):
*** 76,82 ****
      <div class="gcc-diagnostic-list">
        <div class="gcc-diagnostic">
          <span class="gcc-message">expected &apos;<span class="gcc-quoted-text">;</span>&apos; before &apos;<span class="gcc-quoted-text">}</span>&apos; token</span>
!         <pre class="gcc-annotated-source"></pre>
        </div>
      </div>
    </body>
--- 77,85 ----
      <div class="gcc-diagnostic-list">
        <div class="gcc-diagnostic">
          <span class="gcc-message">expected &apos;<span class="gcc-quoted-text">;</span>&apos; before &apos;<span class="gcc-quoted-text">}</span>&apos; token</span>
!         <pre class="gcc-generated-patch">
!         [...snip...]
!         </pre>
        </div>
      </div>
    </body>
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/ipa/pr120044-1.c gcc-16-20250518/gcc/testsuite/gcc.dg/ipa/pr120044-1.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/ipa/pr120044-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.dg/ipa/pr120044-1.c	Sun May 18 22:32:24 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fno-early-inlining -fno-tree-fre -fno-tree-pre -fno-code-hoisting -fno-inline" } */
+ 
+ struct a {
+   int b;
+ } const c;
+ void d(char p, struct a e) {
+   while (e.b)
+     ;
+ }
+ static unsigned short f(const struct a g) {
+   d(g.b, g);
+   return g.b;
+ }
+ int main() {
+   return f(c);
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/ipa/pr120044-2.c gcc-16-20250518/gcc/testsuite/gcc.dg/ipa/pr120044-2.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/ipa/pr120044-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.dg/ipa/pr120044-2.c	Sun May 18 22:32:24 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fno-early-inlining -fno-tree-fre -fno-tree-pre -fno-code-hoisting -fno-ipa-cp" } */
+ 
+ struct a {
+   int b;
+ } const c;
+ void d(char p, struct a e) {
+   while (e.b)
+     ;
+ }
+ static unsigned short f(const struct a g) {
+   d(g.b, g);
+   return g.b;
+ }
+ int main() {
+   return f(c);
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.c gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.c	Sun May 18 22:32:24 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fdiagnostics-set-output=experimental-html" } */
+ /* { dg-additional-options "-fdiagnostics-show-caret" } */
+ 
+ extern char *gets (char *s);
+ 
+ void test_cwe (void)
+ {
+   char buf[1024];
+   gets (buf);
+ }
+ 
+ /* Use a Python script to verify various properties about the generated
+    HTML file:
+    { dg-final { run-html-pytest diagnostic-test-metadata-html.c "diagnostic-test-metadata-html.py" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py
*** gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py	Sun May 18 22:32:24 2025
***************
*** 0 ****
--- 1,68 ----
+ # Verify that metadata works in HTML output.
+ 
+ from htmltest import *
+ 
+ import pytest
+ 
+ @pytest.fixture(scope='function', autouse=True)
+ def html_tree():
+     return html_tree_from_env()
+ 
+ XHTML = 'http://www.w3.org/1999/xhtml'
+ ns = {'xhtml': XHTML}
+ 
+ def make_tag(local_name):
+     return f'{{{XHTML}}}' + local_name
+ 
+ def test_metadata(html_tree):
+     root = html_tree.getroot ()
+     assert root.tag == make_tag('html')
+ 
+     body = root.find('xhtml:body', ns)
+     assert body is not None
+ 
+     diag_list = body.find('xhtml:div', ns)
+     assert diag_list is not None
+     assert diag_list.attrib['class'] == 'gcc-diagnostic-list'
+ 
+     diag = diag_list.find('xhtml:div', ns)
+     assert diag is not None
+     assert diag.attrib['class'] == 'gcc-diagnostic'
+ 
+     spans = diag.findall('xhtml:span', ns)
+     metadata = spans[1]
+     assert metadata.attrib['class'] == 'gcc-metadata'
+     assert metadata[0].tag == make_tag('span')
+     assert metadata[0].attrib['class'] == 'gcc-metadata-item'
+     assert metadata[0].text == '['
+     assert metadata[0][0].tag == make_tag('a')
+     assert metadata[0][0].attrib['href'] == 'https://cwe.mitre.org/data/definitions/242.html'
+     assert metadata[0][0].text == 'CWE-242'
+     assert metadata[0][0].tail == ']'
+ 
+     assert metadata[1].tag == make_tag('span')
+     assert metadata[1].attrib['class'] == 'gcc-metadata-item'
+     assert metadata[1].text == '['
+     assert metadata[1][0].tag == make_tag('a')
+     assert metadata[1][0].attrib['href'] == 'https://example.com/'
+     assert metadata[1][0].text == 'STR34-C'
+     assert metadata[1][0].tail == ']'
+ 
+     src = diag.find('xhtml:pre', ns)
+     assert src.attrib['class'] == 'gcc-annotated-source'
+     assert src.text == (
+         '   gets (buf);\n'
+         '   ^~~~~~~~~~\n')
+ 
+ # For reference, here's the generated HTML:
+ """
+   <body>
+     <div class="gcc-diagnostic-list">
+       <div class="gcc-diagnostic">
+         <span class="gcc-message">never use &apos;<span class="gcc-quoted-text">gets</span>&apos;</span> 
+         <span class="gcc-metadata"><span class="gcc-metadata-item">[<a href="https://cwe.mitre.org/data/definitions/242.html">CWE-242</a>]</span><span class="gcc-metadata-item">[<a href="https://example.com/">STR34-C</a>]</span></span>
+         ...etc...
+       </div>
+     </div>
+   </body>
+ """
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c	Sun May 11 22:32:18 2025
--- gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c	Sun May 18 22:32:24 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-fdiagnostics-show-caret -fdiagnostics-show-line-numbers -fdiagnostics-path-format=inline-events" } */
  
  #include <stddef.h>
  #include <stdlib.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-fdiagnostics-show-caret -fdiagnostics-show-line-numbers -fdiagnostics-path-format=inline-events -fdiagnostics-add-output=experimental-html" } */
  
  #include <stddef.h>
  #include <stdlib.h>
*************** make_a_list_of_random_ints_badly(PyObjec
*** 52,54 ****
--- 52,58 ----
        |     (3) when calling 'PyList_Append', passing NULL from (1) as argument 1
       { dg-end-multiline-output "" } */
  }
+ 
+ /* Use a Python script to verify various properties about the generated
+    HTML file:
+    { dg-final { run-html-pytest diagnostic-test-paths-2.c "diagnostic-test-paths-2.py" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py
*** gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py	Sun May 18 22:32:24 2025
***************
*** 0 ****
--- 1,35 ----
+ # Verify that execution paths work in HTML output.
+ 
+ from htmltest import *
+ 
+ import pytest
+ 
+ @pytest.fixture(scope='function', autouse=True)
+ def html_tree():
+     return html_tree_from_env()
+ 
+ XHTML = 'http://www.w3.org/1999/xhtml'
+ ns = {'xhtml': XHTML}
+ 
+ def make_tag(local_name):
+     return f'{{{XHTML}}}' + local_name
+ 
+ def test_paths(html_tree):
+     root = html_tree.getroot ()
+     assert root.tag == make_tag('html')
+ 
+     body = root.find('xhtml:body', ns)
+     assert body is not None
+ 
+     diag_list = body.find('xhtml:div', ns)
+     assert diag_list is not None
+     assert diag_list.attrib['class'] == 'gcc-diagnostic-list'
+ 
+     diag = diag_list.find('xhtml:div', ns)
+     assert diag is not None
+     assert diag.attrib['class'] == 'gcc-diagnostic'
+ 
+     pre = diag.findall('xhtml:pre', ns)
+     assert pre[0].attrib['class'] == 'gcc-annotated-source'
+     assert pre[1].attrib['class'] == 'gcc-execution-path'
+     assert pre[1].text.startswith("  'make_a_list_of_random_ints_badly': events 1-3")
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/plugin.exp gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/plugin.exp
*** gcc-16-20250511/gcc/testsuite/gcc.dg/plugin/plugin.exp	Sun May 11 22:32:18 2025
--- gcc-16-20250518/gcc/testsuite/gcc.dg/plugin/plugin.exp	Sun May 18 22:32:24 2025
*************** set plugin_test_list [list \
*** 105,110 ****
--- 105,111 ----
  	  diagnostic-test-inlining-4.c } \
      { diagnostic_plugin_test_metadata.cc
  	  diagnostic-test-metadata.c \
+ 	  diagnostic-test-metadata-html.c \
  	  diagnostic-test-metadata-sarif.c } \
      { diagnostic_plugin_test_nesting.cc \
  	  diagnostic-test-nesting-text-plain.c \
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/pr116546.c gcc-16-20250518/gcc/testsuite/gcc.dg/pr116546.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/pr116546.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.dg/pr116546.c	Sun May 18 22:32:24 2025
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-evrp" } */
+ 
+ extern long foo (void);
+ extern long bar (void);
+ 
+ long
+ test1 (long n)
+ {
+   n &= 7;
+   if (n == 4) {
+     if (n & 4)
+       return foo ();
+     else
+       return bar ();
+   }
+   return 0;
+ }
+ 
+ long
+ test2 (long n)
+ {
+   n &= 7;
+   if (n > 4) {
+     if (n & 4)
+       return foo ();
+     else
+       return bar ();
+   }
+   return 0;
+ }
+ 
+ long
+ test3 (long n)
+ {
+   n &= 7;
+   if (n >= 4) {
+     if (n & 4)
+       return foo ();
+     else
+       return bar ();
+   }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "bar" "evrp" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/pr120277.c gcc-16-20250518/gcc/testsuite/gcc.dg/pr120277.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/pr120277.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.dg/pr120277.c	Sun May 18 22:32:24 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ int a, b;
+ int c(int d, long e) {
+   switch (d) {
+   case 129:
+     a = 1;
+   case 128:
+     break;
+   default:
+     return 1;
+   }
+   *(int *)e = 0;
+ }
+ void f(int d, long e) { c(d, e); }
+ void g() {
+   int h = b * sizeof(int);
+   f(h + 7, h);
+ }
+ void main() {}
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/pr78408-1.c gcc-16-20250518/gcc/testsuite/gcc.dg/pr78408-1.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/pr78408-1.c	Sun May 11 22:32:18 2025
--- gcc-16-20250518/gcc/testsuite/gcc.dg/pr78408-1.c	Sun May 18 22:32:24 2025
***************
*** 1,8 ****
  /* PR c/78408 */
  /* { dg-do compile { target size32plus } } */
  /* { dg-options "-O2 -fdump-tree-ccp-details -fdump-tree-forwprop-details" } */
! /* { dg-final { scan-tree-dump-times "after previous" 1 "ccp1" } } */
! /* { dg-final { scan-tree-dump-times "after previous" 16 "forwprop1" } } */
  
  struct S { char a[33]; };
  struct T { char a[65536]; };
--- 1,7 ----
  /* PR c/78408 */
  /* { dg-do compile { target size32plus } } */
  /* { dg-options "-O2 -fdump-tree-ccp-details -fdump-tree-forwprop-details" } */
! /* { dg-final { scan-tree-dump-times "after previous" 17 "forwprop1" } } */
  
  struct S { char a[33]; };
  struct T { char a[65536]; };
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c gcc-16-20250518/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c	Sun May 11 22:32:19 2025
--- gcc-16-20250518/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c	Sun May 18 22:32:26 2025
***************
*** 9,15 ****
  
  /* unaligned store.  */
  
! int main_1 (int off)
  {
    int i;
    char ia[N+OFF];
--- 9,16 ----
  
  /* unaligned store.  */
  
! int __attribute__((noipa))
! main_1 (int off)
  {
    int i;
    char ia[N+OFF];
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/tree-ssa/pr114864.c gcc-16-20250518/gcc/testsuite/gcc.dg/tree-ssa/pr114864.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/tree-ssa/pr114864.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.dg/tree-ssa/pr114864.c	Sun May 18 22:32:26 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run } */
+ /* { dg-options "-O1 -fno-tree-dce -fno-tree-fre" } */
+ 
+ struct a {
+   int b;
+ } const c;
+ void d(const struct a f) {}
+ void e(const struct a f) {
+   f.b == 0 ? 1 : f.b;
+   d(f);
+ }
+ int main() {
+   e(c);
+   return 0;
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.dg/tree-ssa/vrp124.c gcc-16-20250518/gcc/testsuite/gcc.dg/tree-ssa/vrp124.c
*** gcc-16-20250511/gcc/testsuite/gcc.dg/tree-ssa/vrp124.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.dg/tree-ssa/vrp124.c	Sun May 18 22:32:26 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-evrp" } */
+ 
+ /* Test removal of trailing zero mask ranges from signed values. */
+ /* Mask off the lower 4 bits of an integer. */
+ #define MASK 0XF
+ 
+ void dead (int c);
+ void keep();
+ 
+ /* A signed character should have a range something like : */
+ /* int [-INF, -16][0, 0][16, 2147483632] MASK 0xfffffff0 VALUE 0x0 */
+ 
+ int
+ foo2 (int c)
+ {
+   c = c & ~MASK;
+   if (c == 0)
+     return 0;
+   if (c > -16)
+     {
+       keep ();
+       if (c < 16)
+ 	dead (c);
+     }
+   if (c > (__INT_MAX__ & ~MASK))
+     dead (c);
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "dead" "evrp" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/and-be.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/and-be.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/and-be.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/and-be.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,123 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mbig-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef char v8qi __attribute__ ((vector_size (8)));
+ typedef int v4si __attribute__ ((vector_size (16)));
+ typedef float v4sf __attribute__ ((vector_size (16)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ typedef char v16qi __attribute__ ((vector_size (16)));
+ 
+ 
+ /*
+ ** f_v4hi:
+ **	movi	v([0-9]+).2s, 0xff, msl 8
+ **	and	v0.8b, (?:v0.8b, v\1.8b|v\1.8b, v0.8b)
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 4, 1, 6, 3 });
+ }
+ 
+ /*
+ ** g_v4hi:
+ **	mvni	v([0-9]+).2s, 0xff, msl 8
+ **	and	v0.8b, (?:v0.8b, v\1.8b|v\1.8b, v0.8b)
+ **	ret
+ */
+ v4hi
+ g_v4hi (v4hi x)
+ {
+   return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 0, 5, 2, 7 });
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	...
+ **	and	v0.16b, (?:v0.16b, v[0-9]+.16b|v[0-9]+.16b, v0.16b)
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return __builtin_shuffle (x, (v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 0, 8, 2, 9, 4, 10, 12, 11 });
+ }
+ 
+ /*
+ ** f_v4si:
+ **	movi	v([0-9]+).2d, 0xffffffff00000000
+ **	and	v0.16b, (?:v0.16b, v\1.16b|v\1.16b, v0.16b)
+ **	ret
+ */
+ v4si
+ f_v4si (v4si x)
+ {
+   return __builtin_shuffle (x, (v4si){ 0, 0, 0, 0 }, (v4si){ 0, 4, 2, 5 });
+ }
+ 
+ /*
+ ** g_v4si:
+ **	movi	v([0-9]+).2d, 0xffffffff
+ **	and	v0.16b, (?:v0.16b, v\1.16b|v\1.16b, v0.16b)
+ **	ret
+ */
+ v4si
+ g_v4si (v4si x)
+ {
+   return __builtin_shuffle ((v4si){ 0, 0, 0, 0 }, x, (v4si){ 1, 5, 3, 7 });
+ }
+ 
+ /*
+ ** h_v4si:
+ **	movi	v([0-9]+).2d, 0xffffffff
+ **	and	v0.16b, (?:v0.16b, v\1.16b|v\1.16b, v0.16b)
+ **	ret
+ */
+ v4si
+ h_v4si (v4si x)
+ {
+   return __builtin_shuffle (x, (v4si){ 0, 0, 0, 0 }, (v4si){ 7, 1, 6, 3 });
+ }
+ 
+ /*
+ ** f_v4sf:
+ **	movi	v([0-9]+).2d, 0xffffffff00000000
+ **	and	v0.16b, (?:v0.16b, v\1.16b|v\1.16b, v0.16b)
+ **	ret
+ */
+ v4sf
+ f_v4sf (v4sf x)
+ {
+   return __builtin_shuffle (x, (v4sf){ 0, 0, 0, 0 }, (v4si){ 0, 6, 2, 7 });
+ }
+ 
+ /*
+ ** f_v8qi:
+ **	movi	d([0-9]+), 0xff00ff00ff000000
+ **	and	v0.8b, (?:v0.8b, v\1.8b|v\1.8b, v0.8b)
+ **	ret
+ */
+ v8qi
+ f_v8qi (v8qi x)
+ {
+   return __builtin_shuffle (x, (v8qi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8qi){ 0, 8, 2, 9, 4, 10, 12, 11 });
+ }
+ 
+ /*
+ ** f_v16qi:
+ **	...
+ **	and	v0.16b, (?:v0.16b, v[0-9]+.16b|v[0-9]+.16b, v0.16b)
+ **	ret
+ */
+ v16qi
+ f_v16qi (v16qi x)
+ {
+   return __builtin_shuffle (
+       x, (v16qi){ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+       (v16qi){ 16, 1, 17, 3, 18, 5, 19, 7, 20, 9, 21, 11, 22, 13, 23, 24 });
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/and-le.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/and-le.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/and-le.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/and-le.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,123 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlittle-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef char v8qi __attribute__ ((vector_size (8)));
+ typedef int v4si __attribute__ ((vector_size (16)));
+ typedef float v4sf __attribute__ ((vector_size (16)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ typedef char v16qi __attribute__ ((vector_size (16)));
+ 
+ 
+ /*
+ ** f_v4hi:
+ **	mvni	v([0-9]+).2s, 0xff, msl 8
+ **	and	v0.8b, (?:v0.8b, v\1.8b|v\1.8b, v0.8b)
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 4, 1, 6, 3 });
+ }
+ 
+ /*
+ ** g_v4hi:
+ **	movi	v([0-9]+).2s, 0xff, msl 8
+ **	and	v0.8b, (?:v0.8b, v\1.8b|v\1.8b, v0.8b)
+ **	ret
+ */
+ v4hi
+ g_v4hi (v4hi x)
+ {
+   return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 0, 5, 2, 7 });
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	...
+ **	and	v0.16b, (?:v0.16b, v[0-9]+.16b|v[0-9]+.16b, v0.16b)
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return __builtin_shuffle (x, (v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 0, 8, 2, 9, 4, 10, 12, 11 });
+ }
+ 
+ /*
+ ** f_v4si:
+ **	movi	v([0-9]+).2d, 0xffffffff
+ **	and	v0.16b, (?:v0.16b, v\1.16b|v\1.16b, v0.16b)
+ **	ret
+ */
+ v4si
+ f_v4si (v4si x)
+ {
+   return __builtin_shuffle (x, (v4si){ 0, 0, 0, 0 }, (v4si){ 0, 4, 2, 5 });
+ }
+ 
+ /*
+ ** g_v4si:
+ **	movi	v([0-9]+).2d, 0xffffffff00000000
+ **	and	v0.16b, (?:v0.16b, v\1.16b|v\1.16b, v0.16b)
+ **	ret
+ */
+ v4si
+ g_v4si (v4si x)
+ {
+   return __builtin_shuffle ((v4si){ 0, 0, 0, 0 }, x, (v4si){ 1, 5, 3, 7 });
+ }
+ 
+ /*
+ ** h_v4si:
+ **	movi	v([0-9]+).2d, 0xffffffff00000000
+ **	and	v0.16b, (?:v0.16b, v\1.16b|v\1.16b, v0.16b)
+ **	ret
+ */
+ v4si
+ h_v4si (v4si x)
+ {
+   return __builtin_shuffle (x, (v4si){ 0, 0, 0, 0 }, (v4si){ 7, 1, 6, 3 });
+ }
+ 
+ /*
+ ** f_v4sf:
+ **	movi	v([0-9]+).2d, 0xffffffff
+ **	and	v0.16b, (?:v0.16b, v\1.16b|v\1.16b, v0.16b)
+ **	ret
+ */
+ v4sf
+ f_v4sf (v4sf x)
+ {
+   return __builtin_shuffle (x, (v4sf){ 0, 0, 0, 0 }, (v4si){ 0, 6, 2, 7 });
+ }
+ 
+ /*
+ ** f_v8qi:
+ **	movi	d([0-9]+), 0xff00ff00ff
+ **	and	v0.8b, (?:v0.8b, v\1.8b|v\1.8b, v0.8b)
+ **	ret
+ */
+ v8qi
+ f_v8qi (v8qi x)
+ {
+   return __builtin_shuffle (x, (v8qi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8qi){ 0, 8, 2, 9, 4, 10, 12, 11 });
+ }
+ 
+ /*
+ ** f_v16qi:
+ **	...
+ **	and	v0.16b, (?:v0.16b, v[0-9]+.16b|v[0-9]+.16b, v0.16b)
+ **	ret
+ */
+ v16qi
+ f_v16qi (v16qi x)
+ {
+   return __builtin_shuffle (
+       x, (v16qi){ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+       (v16qi){ 16, 1, 17, 3, 18, 5, 19, 7, 20, 9, 21, 11, 22, 13, 23, 24 });
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-1-be.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-1-be.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-1-be.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-1-be.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,151 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mbig-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8-a")
+ 
+ typedef int v2si __attribute__ ((vector_size (8)));
+ typedef float v2sf __attribute__ ((vector_size (8)));
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef char v8qi __attribute__ ((vector_size (8)));
+ typedef long v2di __attribute__ ((vector_size (16)));
+ typedef double v2df __attribute__ ((vector_size (16)));
+ typedef int v4si __attribute__ ((vector_size (16)));
+ typedef float v4sf __attribute__ ((vector_size (16)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ typedef char v16qi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v4hi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return x & (v4hi){ 0, 0, 0xffff, 0xffff };
+ }
+ 
+ /*
+ ** g_v4hi:
+ **	movi	d([0-9]+), 0xffff00000000ffff
+ **	and	v0.8b, (?:v0.8b, v\1.8b|v\1.8b, v0.8b)
+ **	ret
+ */
+ v4hi
+ g_v4hi (v4hi x)
+ {
+   return x & (v4hi){ 0xffff, 0, 0, 0xffff };
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return x & (v8hi){ 0, 0, 0, 0, 0, 0, 0xffff, 0xffff };
+ }
+ 
+ /*
+ ** g_v8hi:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v8hi
+ g_v8hi (v8hi x)
+ {
+   return x & (v8hi){ 0, 0, 0, 0, 0xffff, 0xffff, 0xffff, 0xffff };
+ }
+ 
+ /*
+ ** f_v2si:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v2si
+ f_v2si (v2si x)
+ {
+   return x & (v2si){ 0, 0xffffffff };
+ }
+ 
+ /*
+ ** f_v2di:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v2di
+ f_v2di (v2di x)
+ {
+   return x & (v2di){ 0, 0xffffffffffffffff };
+ }
+ 
+ /*
+ ** g_v2di:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v2di
+ g_v2di (v2di x)
+ {
+   return x & (v2di){ 0, 0xffffffff };
+ }
+ 
+ /*
+ ** f_v4si:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4si
+ f_v4si (v4si x)
+ {
+   return x & (v4si){ 0, 0, 0, 0xffffffff };
+ }
+ 
+ /*
+ ** h_v4si:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v4si
+ h_v4si (v4si x)
+ {
+   return x & (v4si){ 0, 0, 0xffffffff, 0xffffffff };
+ }
+ 
+ /*
+ ** f_v8qi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8qi
+ f_v8qi (v8qi x)
+ {
+   return x & (v8qi){ 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff };
+ }
+ 
+ /*
+ ** f_v16qi:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v16qi
+ f_v16qi (v16qi x)
+ {
+   return x & (v16qi){ 0,    0,    0,    0,    0,    0,    0,    0,
+ 		      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+ }
+ 
+ /*
+ ** g_v16qi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v16qi
+ g_v16qi (v16qi x)
+ {
+   return x & (v16qi){ 0, 0, 0, 0, 0,    0,    0,    0,
+ 		      0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff };
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-1-le.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-1-le.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-1-le.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-1-le.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,151 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlittle-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8-a")
+ 
+ typedef int v2si __attribute__ ((vector_size (8)));
+ typedef float v2sf __attribute__ ((vector_size (8)));
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef char v8qi __attribute__ ((vector_size (8)));
+ typedef long v2di __attribute__ ((vector_size (16)));
+ typedef double v2df __attribute__ ((vector_size (16)));
+ typedef int v4si __attribute__ ((vector_size (16)));
+ typedef float v4sf __attribute__ ((vector_size (16)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ typedef char v16qi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v4hi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return x & (v4hi){ 0xffff, 0xffff, 0, 0 };
+ }
+ 
+ /*
+ ** g_v4hi:
+ **	movi	d([0-9]+), 0xffff00000000ffff
+ **	and	v0.8b, (?:v0.8b, v\1.8b|v\1.8b, v0.8b)
+ **	ret
+ */
+ v4hi
+ g_v4hi (v4hi x)
+ {
+   return x & (v4hi){ 0xffff, 0, 0, 0xffff };
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return x & (v8hi){ 0xffff, 0xffff, 0, 0, 0, 0, 0, 0 };
+ }
+ 
+ /*
+ ** g_v8hi:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v8hi
+ g_v8hi (v8hi x)
+ {
+   return x & (v8hi){ 0xffff, 0xffff, 0xffff, 0xffff, 0, 0, 0, 0 };
+ }
+ 
+ /*
+ ** f_v2si:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v2si
+ f_v2si (v2si x)
+ {
+   return x & (v2si){ 0xffffffff, 0 };
+ }
+ 
+ /*
+ ** f_v2di:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v2di
+ f_v2di (v2di x)
+ {
+   return x & (v2di){ 0xffffffffffffffff, 0 };
+ }
+ 
+ /*
+ ** g_v2di:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v2di
+ g_v2di (v2di x)
+ {
+   return x & (v2di){ 0xffffffff, 0 };
+ }
+ 
+ /*
+ ** f_v4si:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4si
+ f_v4si (v4si x)
+ {
+   return x & (v4si){ 0xffffffff, 0, 0, 0 };
+ }
+ 
+ /*
+ ** h_v4si:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v4si
+ h_v4si (v4si x)
+ {
+   return x & (v4si){ 0xffffffff, 0xffffffff, 0, 0 };
+ }
+ 
+ /*
+ ** f_v8qi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8qi
+ f_v8qi (v8qi x)
+ {
+   return x & (v8qi){ 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0 };
+ }
+ 
+ /*
+ ** f_v16qi:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v16qi
+ f_v16qi (v16qi x)
+ {
+   return x & (v16qi){ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 		      0,    0,    0,    0,    0,    0,    0,    0 };
+ }
+ 
+ /*
+ ** g_v16qi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v16qi
+ g_v16qi (v16qi x)
+ {
+   return x & (v16qi){ 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0,
+ 		      0,    0,    0,    0,    0, 0, 0, 0 };
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-2-be.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-2-be.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-2-be.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-2-be.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,90 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mbig-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8.2-a+fp16")
+ 
+ typedef int v2si __attribute__ ((vector_size (8)));
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef char v8qi __attribute__ ((vector_size (8)));
+ typedef long v2di __attribute__ ((vector_size (16)));
+ typedef int v4si __attribute__ ((vector_size (16)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ typedef char v16qi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v2di:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v2di
+ f_v2di (v2di x)
+ {
+   return x & (v2di){ 0, 0xffff };
+ }
+ 
+ /*
+ ** f_v4si:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4si
+ f_v4si (v4si x)
+ {
+   return x & (v4si){ 0, 0, 0, 0xffff };
+ }
+ 
+ /*
+ ** f_v2si:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v2si
+ f_v2si (v2si x)
+ {
+   return x & (v2si){ 0, 0xffff };
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return x & (v8hi){ 0, 0, 0, 0, 0, 0, 0, 0xffff };
+ }
+ 
+ /*
+ ** f_v4hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return x & (v4hi){ 0, 0, 0, 0xffff };
+ }
+ 
+ /*
+ ** f_v16qi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v16qi
+ f_v16qi (v16qi x)
+ {
+   return x & (v16qi){ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff };
+ }
+ 
+ /*
+ ** f_v8qi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8qi
+ f_v8qi (v8qi x)
+ {
+   return x & (v8qi){ 0, 0, 0, 0, 0, 0, 0xff, 0xff };
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-2-le.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-2-le.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-2-le.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-2-le.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,90 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlittle-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8.2-a+fp16")
+ 
+ typedef int v2si __attribute__ ((vector_size (8)));
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef char v8qi __attribute__ ((vector_size (8)));
+ typedef long v2di __attribute__ ((vector_size (16)));
+ typedef int v4si __attribute__ ((vector_size (16)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ typedef char v16qi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v2di:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v2di
+ f_v2di (v2di x)
+ {
+   return x & (v2di){ 0xffff, 0 };
+ }
+ 
+ /*
+ ** f_v4si:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4si
+ f_v4si (v4si x)
+ {
+   return x & (v4si){ 0xffff, 0, 0, 0 };
+ }
+ 
+ /*
+ ** f_v2si:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v2si
+ f_v2si (v2si x)
+ {
+   return x & (v2si){ 0xffff, 0 };
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return x & (v8hi){ 0xffff, 0, 0, 0, 0, 0, 0, 0 };
+ }
+ 
+ /*
+ ** f_v4hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return x & (v4hi){ 0xffff, 0, 0, 0 };
+ }
+ 
+ /*
+ ** f_v16qi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v16qi
+ f_v16qi (v16qi x)
+ {
+   return x & (v16qi){ 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+ }
+ 
+ /*
+ ** f_v8qi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8qi
+ f_v8qi (v8qi x)
+ {
+   return x & (v8qi){ 0xff, 0xff, 0, 0, 0, 0, 0, 0 };
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-3-be.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-3-be.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-3-be.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-3-be.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,77 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mbig-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8-a")
+ 
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef int v4si __attribute__ ((vector_size (16)));
+ typedef float v4sf __attribute__ ((vector_size (16)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v4hi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 4, 5, 2, 3 });
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return __builtin_shuffle (x, (v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 8, 9, 10, 11, 12, 13, 6, 7 });
+ }
+ 
+ /*
+ ** f_v4si:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v4si
+ f_v4si (v4si x)
+ {
+   return __builtin_shuffle (x, (v4si){ 0, 0, 0, 0 }, (v4si){ 6, 7, 2, 3 });
+ }
+ 
+ /*
+ ** g_v4si:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v4si
+ g_v4si (v4si x)
+ {
+   return __builtin_shuffle ((v4si){ 0, 0, 0, 0 }, x, (v4si){ 2, 3, 6, 7 });
+ }
+ 
+ /*
+ ** h_v4si:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4si
+ h_v4si (v4si x)
+ {
+   return __builtin_shuffle (x, (v4si){ 0, 0, 0, 0 }, (v4si){ 4, 5, 6, 3 });
+ }
+ 
+ /*
+ ** f_v4sf:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v4sf
+ f_v4sf (v4sf x)
+ {
+   return __builtin_shuffle (x, (v4sf){ 0, 0, 0, 0 }, (v4si){ 6, 7, 2, 3 });
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-3-le.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-3-le.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-3-le.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-3-le.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,129 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlittle-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8-a")
+ 
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef char v8qi __attribute__ ((vector_size (8)));
+ typedef int v4si __attribute__ ((vector_size (16)));
+ typedef float v4sf __attribute__ ((vector_size (16)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ typedef char v16qi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v4hi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 0, 1, 4, 5 });
+ }
+ 
+ /*
+ ** g_v4hi:
+ **	(?:(?!fmov).)*
+ **	ret
+ */
+ v4hi
+ g_v4hi (v4hi x)
+ {
+   return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 3, 1, 4, 2 });
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return __builtin_shuffle (x, (v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 0, 1, 8, 9, 10, 11, 12, 13 });
+ }
+ 
+ /*
+ ** f_v4si:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v4si
+ f_v4si (v4si x)
+ {
+   return __builtin_shuffle (x, (v4si){ 0, 0, 0, 0 }, (v4si){ 0, 1, 4, 5 });
+ }
+ 
+ /*
+ ** g_v4si:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v4si
+ g_v4si (v4si x)
+ {
+   return __builtin_shuffle ((v4si){ 0, 0, 0, 0 }, x, (v4si){ 4, 5, 2, 3 });
+ }
+ 
+ /*
+ ** h_v4si:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4si
+ h_v4si (v4si x)
+ {
+   return __builtin_shuffle (x, (v4si){ 0, 0, 0, 0 }, (v4si){ 0, 4, 5, 6 });
+ }
+ 
+ /*
+ ** f_v4sf:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v4sf
+ f_v4sf (v4sf x)
+ {
+   return __builtin_shuffle (x, (v4sf){ 0, 0, 0, 0 }, (v4si){ 0, 1, 6, 7 });
+ }
+ 
+ /*
+ ** f_v8qi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8qi
+ f_v8qi (v8qi x)
+ {
+   return __builtin_shuffle (x, (v8qi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8qi){ 0, 1, 2, 3, 10, 11, 12, 13 });
+ }
+ 
+ /*
+ ** f_v16qi:
+ **	fmov	d0, d0
+ **	ret
+ */
+ v16qi
+ f_v16qi (v16qi x)
+ {
+   return __builtin_shuffle (
+       x, (v16qi){ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+       (v16qi){ 0, 1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, 20, 21, 22, 23 });
+ }
+ 
+ /*
+ ** g_v16qi:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v16qi
+ g_v16qi (v16qi x)
+ {
+   return __builtin_shuffle (
+       x, (v16qi){ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+       (v16qi){ 0, 1, 2, 3, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 });
+ }
+ 
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-4-be.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-4-be.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-4-be.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-4-be.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mbig-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8.2-a+fp16")
+ 
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v4hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 4, 5, 6, 3 });
+ }
+ 
+ /*
+ ** g_v4hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hi
+ g_v4hi (v4hi x)
+ {
+   return __builtin_shuffle ((v4hi){ 0, 0, 0, 0 }, x, (v4hi){ 0, 1, 2, 7 });
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return __builtin_shuffle (x, (v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 8, 9, 10, 11, 12, 13, 14, 7 });
+ }
+ 
+ /*
+ ** g_v8hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hi
+ g_v8hi (v8hi x)
+ {
+   return __builtin_shuffle ((v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 }, x,
+ 			    (v8hi){ 0, 1, 2, 3, 4, 5, 6, 15 });
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-4-le.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-4-le.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-4-le.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-4-le.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,94 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlittle-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8.2-a+fp16")
+ 
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef char v8qi __attribute__ ((vector_size (8)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ typedef char v16qi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v4hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hi
+ f_v4hi (v4hi x)
+ {
+   return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 0, 4, 5, 6 });
+ }
+ 
+ /*
+ ** g_v4hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hi
+ g_v4hi (v4hi x)
+ {
+   return __builtin_shuffle ((v4hi){ 0, 0, 0, 0 }, x, (v4hi){ 4, 0, 1, 2 });
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hi
+ f_v8hi (v8hi x)
+ {
+   return __builtin_shuffle (x, (v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 0, 8, 9, 10, 11, 12, 13, 14 });
+ }
+ 
+ /*
+ ** g_v8hi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hi
+ g_v8hi (v8hi x)
+ {
+   return __builtin_shuffle ((v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 }, x,
+ 			    (v8hi){ 8, 0, 1, 2, 3, 4, 5, 6 });
+ }
+ 
+ /*
+ ** f_v8qi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8qi
+ f_v8qi (v8qi x)
+ {
+   return __builtin_shuffle (x, (v8qi){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8qi){ 0, 1, 8, 9, 10, 11, 12, 13 });
+ }
+ 
+ 
+ /*
+ ** g_v8qi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8qi
+ g_v8qi (v8qi x)
+ {
+   return __builtin_shuffle ((v8qi){ 0, 0, 0, 0, 0, 0, 0, 0 }, x,
+ 			    (v8qi){ 8, 9, 0, 1, 2, 3, 4, 5 });
+ }
+ 
+ /*
+ ** h_v16qi:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v16qi
+ h_v16qi (v16qi x)
+ {
+   return __builtin_shuffle (
+       x, (v16qi){ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+       (v16qi){ 0, 1, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 });
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-5-be.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-5-be.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-5-be.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-5-be.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,150 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mbig-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8.2-a+fp16")
+ 
+ typedef __fp16 v4hf __attribute__ ((vector_size (8)));
+ typedef __fp16 v8hf __attribute__ ((vector_size (16)));
+ typedef __bf16 v4bf __attribute__ ((vector_size (8)));
+ typedef __bf16 v8bf __attribute__ ((vector_size (16)));
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v4hf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hf
+ f_v4hf (v4hf x)
+ {
+   return __builtin_shuffle (x, (v4hf){ 0, 0, 0, 0 }, (v4hi){ 4, 5, 6, 3 });
+ }
+ 
+ /*
+ ** g_v4hf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hf
+ g_v4hf (v4hf x)
+ {
+   return __builtin_shuffle ((v4hf){ 0, 0, 0, 0 }, x, (v4hi){ 0, 1, 2, 7 });
+ }
+ 
+ /*
+ ** h_v4hf:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4hf
+ h_v4hf (v4hf x)
+ {
+   return __builtin_shuffle (x, (v4hf){ 0, 0, 0, 0 }, (v4hi){ 4, 5, 2, 3 });
+ }
+ 
+ /*
+ ** f_v8hf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hf
+ f_v8hf (v8hf x)
+ {
+   return __builtin_shuffle (x, (v8hf){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 8, 9, 10, 11, 12, 13, 14, 7 });
+ }
+ 
+ /*
+ ** g_v8hf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hf
+ g_v8hf (v8hf x)
+ {
+   return __builtin_shuffle ((v8hf){ 0, 0, 0, 0, 0, 0, 0, 0 }, x,
+ 			    (v8hi){ 0, 1, 2, 3, 4, 5, 6, 15 });
+ }
+ 
+ /*
+ ** h_v8hf:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8hf
+ h_v8hf (v8hf x)
+ {
+   return __builtin_shuffle (x, (v8hf){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 8, 9, 10, 11, 12, 13, 6, 7 });
+ }
+ 
+ /*
+ ** f_v4bf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4bf
+ f_v4bf (v4bf x)
+ {
+   return __builtin_shuffle (x, (v4bf){ 0, 0, 0, 0 }, (v4hi){ 4, 5, 6, 3 });
+ }
+ 
+ /*
+ ** g_v4bf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4bf
+ g_v4bf (v4bf x)
+ {
+   return __builtin_shuffle ((v4bf){ 0, 0, 0, 0 }, x, (v4hi){ 0, 1, 2, 7 });
+ }
+ 
+ /*
+ ** h_v4bf:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4bf
+ h_v4bf (v4bf x)
+ {
+   return __builtin_shuffle (x, (v4bf){ 0, 0, 0, 0 }, (v4hi){ 4, 5, 2, 3 });
+ }
+ 
+ /*
+ ** f_v8bf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8bf
+ f_v8bf (v8bf x)
+ {
+   return __builtin_shuffle (x, (v8bf){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 8, 9, 10, 11, 12, 13, 14, 7 });
+ }
+ 
+ /*
+ ** g_v8bf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8bf
+ g_v8bf (v8bf x)
+ {
+   return __builtin_shuffle ((v8bf){ 0, 0, 0, 0, 0, 0, 0, 0 }, x,
+ 			    (v8hi){ 0, 1, 2, 3, 4, 5, 6, 15 });
+ }
+ 
+ /*
+ ** h_v8bf:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8bf
+ h_v8bf (v8bf x)
+ {
+   return __builtin_shuffle (x, (v8bf){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 8, 9, 10, 11, 12, 13, 6, 7 });
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-5-le.c gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-5-le.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/aarch64/fmov-5-le.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/aarch64/fmov-5-le.c	Sun May 18 22:32:27 2025
***************
*** 0 ****
--- 1,150 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlittle-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #pragma GCC target ("arch=armv8.2-a+fp16")
+ 
+ typedef __fp16 v4hf __attribute__ ((vector_size (8)));
+ typedef __fp16 v8hf __attribute__ ((vector_size (16)));
+ typedef __bf16 v4bf __attribute__ ((vector_size (8)));
+ typedef __bf16 v8bf __attribute__ ((vector_size (16)));
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v4hf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hf
+ f_v4hf (v4hf x)
+ {
+   return __builtin_shuffle (x, (v4hf){ 0, 0, 0, 0 }, (v4hi){ 0, 4, 5, 6 });
+ }
+ 
+ /*
+ ** g_v4hf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4hf
+ g_v4hf (v4hf x)
+ {
+   return __builtin_shuffle ((v4hf){ 0, 0, 0, 0 }, x, (v4hi){ 4, 0, 1, 2 });
+ }
+ 
+ /*
+ ** h_v4hf:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4hf
+ h_v4hf (v4hf x)
+ {
+   return __builtin_shuffle (x, (v4hf){ 0, 0, 0, 0 }, (v4hi){ 0, 1, 4, 5 });
+ }
+ 
+ /*
+ ** f_v8hf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hf
+ f_v8hf (v8hf x)
+ {
+   return __builtin_shuffle (x, (v8hf){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 0, 8, 9, 10, 11, 12, 13, 14 });
+ }
+ 
+ /*
+ ** g_v8hf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8hf
+ g_v8hf (v8hf x)
+ {
+   return __builtin_shuffle ((v8hf){ 0, 0, 0, 0, 0, 0, 0, 0 }, x,
+ 			    (v8hi){ 8, 0, 1, 2, 3, 4, 5, 6 });
+ }
+ 
+ /*
+ ** h_v8hf:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8hf
+ h_v8hf (v8hf x)
+ {
+   return __builtin_shuffle (x, (v8hf){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 0, 1, 8, 9, 10, 11, 12, 13 });
+ }
+ 
+ /*
+ ** f_v4bf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4bf
+ f_v4bf (v4bf x)
+ {
+   return __builtin_shuffle (x, (v4bf){ 0, 0, 0, 0 }, (v4hi){ 0, 4, 5, 6 });
+ }
+ 
+ /*
+ ** g_v4bf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v4bf
+ g_v4bf (v4bf x)
+ {
+   return __builtin_shuffle ((v4bf){ 0, 0, 0, 0 }, x, (v4hi){ 4, 0, 1, 2 });
+ }
+ 
+ /*
+ ** h_v4bf:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v4bf
+ h_v4bf (v4bf x)
+ {
+   return __builtin_shuffle (x, (v4bf){ 0, 0, 0, 0 }, (v4hi){ 0, 1, 4, 5 });
+ }
+ 
+ /*
+ ** f_v8bf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8bf
+ f_v8bf (v8bf x)
+ {
+   return __builtin_shuffle (x, (v8bf){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 0, 8, 9, 10, 11, 12, 13, 14 });
+ }
+ 
+ /*
+ ** g_v8bf:
+ **	fmov	h0, h0
+ **	ret
+ */
+ v8bf
+ g_v8bf (v8bf x)
+ {
+   return __builtin_shuffle ((v8bf){ 0, 0, 0, 0, 0, 0, 0, 0 }, x,
+ 			    (v8hi){ 8, 0, 1, 2, 3, 4, 5, 6 });
+ }
+ 
+ /*
+ ** h_v8bf:
+ **	fmov	s0, s0
+ **	ret
+ */
+ v8bf
+ h_v8bf (v8bf x)
+ {
+   return __builtin_shuffle (x, (v8bf){ 0, 0, 0, 0, 0, 0, 0, 0 },
+ 			    (v8hi){ 0, 1, 8, 9, 10, 11, 12, 13 });
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/arm/ivopts.c gcc-16-20250518/gcc/testsuite/gcc.target/arm/ivopts.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/arm/ivopts.c	Sun May 11 22:32:34 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/arm/ivopts.c	Sun May 18 22:32:30 2025
*************** tr5 (short array[], int n)
*** 12,16 ****
  
  /* { dg-final { scan-tree-dump-times "PHI <" 1 "ivopts"} } */
  /* { dg-final { object-size text <= 20 { target { arm_thumb2_no_arm_v8_1m_lob } } } } */
! /* { dg-final { object-size text <= 32 { target { arm_nothumb && { ! arm_iwmmxt_ok } } } } } */
! /* { dg-final { object-size text <= 36 { target { arm_nothumb && arm_iwmmxt_ok }  } } } */
--- 12,15 ----
  
  /* { dg-final { scan-tree-dump-times "PHI <" 1 "ivopts"} } */
  /* { dg-final { object-size text <= 20 { target { arm_thumb2_no_arm_v8_1m_lob } } } } */
! /* { dg-final { object-size text <= 32 { target { arm_nothumb } } } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/arm/mmx-1.c gcc-16-20250518/gcc/testsuite/gcc.target/arm/mmx-1.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/arm/mmx-1.c	Sun May 11 22:32:34 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/arm/mmx-1.c	Thu Jan  1 00:00:00 1970
***************
*** 1,26 ****
- /* Verify that if IP is saved to ensure stack alignment, we don't load
-    it into sp.  */
- /* { dg-do compile } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
- /* { dg-options "-O -mno-apcs-frame -mcpu=iwmmxt -mabi=iwmmxt" } */
- /* { dg-require-effective-target arm32 } */
- /* { dg-require-effective-target arm_iwmmxt_ok } */
- /* { dg-final { scan-assembler "push.*ip,\[ ]*pc" } } */
- /* { dg-skip-if "r9 is reserved in FDPIC" { arm*-*-uclinuxfdpiceabi } "*" "" } */
- 
- /* This function uses all the call-saved registers, namely r4, r5, r6,
-    r7, r8, r9, sl, fp.  Since we also save lr, that leaves an odd
-    number of registers, and the compiler will push ip to align the
-    stack.  Make sure that we restore ip into ip, not into sp as is
-    done when using a frame pointer.  The -mno-apcs-frame option
-    permits the frame pointer to be used as an ordinary register.  */
- 
- void
- foo(void)
- {
-   __asm volatile ("" : : :
- 		  "r4", "r5", "r6", "r7", "r8", "r9", "sl", "fp", "lr");
- }
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/arm/mmx-2.c gcc-16-20250518/gcc/testsuite/gcc.target/arm/mmx-2.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/arm/mmx-2.c	Sun May 11 22:32:34 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/arm/mmx-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,166 ****
- /* { dg-do compile } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
- /* { dg-require-effective-target arm32 } */
- /* { dg-require-effective-target arm_iwmmxt_ok } */
- /* { dg-options "-mcpu=iwmmxt -flax-vector-conversions -std=gnu99" } */
- 
- /* Internal data types for implementing the intrinsics.  */
- typedef int __v2si __attribute__ ((vector_size (8)));
- typedef short __v4hi __attribute__ ((vector_size (8)));
- typedef signed char __v8qi __attribute__ ((vector_size (8)));
- 
- void
- foo(void)
- {
-   volatile int isink;
-   volatile long long llsink;
-   volatile __v8qi v8sink;
-   volatile __v4hi v4sink;
-   volatile __v2si v2sink;
- 
-   isink = __builtin_arm_getwcgr0 ();
-   __builtin_arm_setwcgr0 (isink);
-   isink = __builtin_arm_getwcgr1 ();
-   __builtin_arm_setwcgr1 (isink);
-   isink = __builtin_arm_getwcgr2 ();
-   __builtin_arm_setwcgr2 (isink);
-   isink = __builtin_arm_getwcgr3 ();
-   __builtin_arm_setwcgr3 (isink);
- 
-   isink = __builtin_arm_textrmsb (v8sink, 0);
-   isink = __builtin_arm_textrmsh (v4sink, 0);
-   isink = __builtin_arm_textrmsw (v2sink, 0);
-   isink = __builtin_arm_textrmub (v8sink, 0);
-   isink = __builtin_arm_textrmuh (v4sink, 0);
-   isink = __builtin_arm_textrmuw (v2sink, 0);
-   v8sink = __builtin_arm_tinsrb (v8sink, isink, 0);
-   v4sink = __builtin_arm_tinsrh (v4sink, isink, 0);
-   v2sink = __builtin_arm_tinsrw (v2sink, isink, 0);
-   llsink = __builtin_arm_tmia (llsink, isink, isink);
-   llsink = __builtin_arm_tmiabb (llsink, isink, isink);
-   llsink = __builtin_arm_tmiabt (llsink, isink, isink);
-   llsink = __builtin_arm_tmiaph (llsink, isink, isink);
-   llsink = __builtin_arm_tmiatb (llsink, isink, isink);
-   llsink = __builtin_arm_tmiatt (llsink, isink, isink);
-   isink = __builtin_arm_tmovmskb (v8sink);
-   isink = __builtin_arm_tmovmskh (v4sink);
-   isink = __builtin_arm_tmovmskw (v2sink);
-   llsink = __builtin_arm_waccb (v8sink);
-   llsink = __builtin_arm_wacch (v4sink);
-   llsink = __builtin_arm_waccw (v2sink);
-   v8sink = __builtin_arm_waddb (v8sink, v8sink);
-   v8sink = __builtin_arm_waddbss (v8sink, v8sink);
-   v8sink = __builtin_arm_waddbus (v8sink, v8sink);
-   v4sink = __builtin_arm_waddh (v4sink, v4sink);
-   v4sink = __builtin_arm_waddhss (v4sink, v4sink);
-   v4sink = __builtin_arm_waddhus (v4sink, v4sink);
-   v2sink = __builtin_arm_waddw (v2sink, v2sink);
-   v2sink = __builtin_arm_waddwss (v2sink, v2sink);
-   v2sink = __builtin_arm_waddwus (v2sink, v2sink);
-   v8sink = __builtin_arm_walign (v8sink, v8sink, 0);  /* waligni: 3-bit immediate.  */
-   v8sink = __builtin_arm_walign (v8sink, v8sink, isink); /* walignr: GP register.  */
-   llsink = __builtin_arm_wand(llsink, llsink);
-   llsink = __builtin_arm_wandn (llsink, llsink);
-   v8sink = __builtin_arm_wavg2b (v8sink, v8sink);
-   v8sink = __builtin_arm_wavg2br (v8sink, v8sink);
-   v4sink = __builtin_arm_wavg2h (v4sink, v4sink);
-   v4sink = __builtin_arm_wavg2hr (v4sink, v4sink);
-   v8sink = __builtin_arm_wcmpeqb (v8sink, v8sink);
-   v4sink = __builtin_arm_wcmpeqh (v4sink, v4sink);
-   v2sink = __builtin_arm_wcmpeqw (v2sink, v2sink);
-   v8sink = __builtin_arm_wcmpgtsb (v8sink, v8sink);
-   v4sink = __builtin_arm_wcmpgtsh (v4sink, v4sink);
-   v2sink = __builtin_arm_wcmpgtsw (v2sink, v2sink);
-   v8sink = __builtin_arm_wcmpgtub (v8sink, v8sink);
-   v4sink = __builtin_arm_wcmpgtuh (v4sink, v4sink);
-   v2sink = __builtin_arm_wcmpgtuw (v2sink, v2sink);
-   llsink = __builtin_arm_wmacs (llsink, v4sink, v4sink);
-   llsink = __builtin_arm_wmacsz (v4sink, v4sink);
-   llsink = __builtin_arm_wmacu (llsink, v4sink, v4sink);
-   llsink = __builtin_arm_wmacuz (v4sink, v4sink);
-   v4sink = __builtin_arm_wmadds (v4sink, v4sink);
-   v4sink = __builtin_arm_wmaddu (v4sink, v4sink);
-   v8sink = __builtin_arm_wmaxsb (v8sink, v8sink);
-   v4sink = __builtin_arm_wmaxsh (v4sink, v4sink);
-   v2sink = __builtin_arm_wmaxsw (v2sink, v2sink);
-   v8sink = __builtin_arm_wmaxub (v8sink, v8sink);
-   v4sink = __builtin_arm_wmaxuh (v4sink, v4sink);
-   v2sink = __builtin_arm_wmaxuw (v2sink, v2sink);
-   v8sink = __builtin_arm_wminsb (v8sink, v8sink);
-   v4sink = __builtin_arm_wminsh (v4sink, v4sink);
-   v2sink = __builtin_arm_wminsw (v2sink, v2sink);
-   v8sink = __builtin_arm_wminub (v8sink, v8sink);
-   v4sink = __builtin_arm_wminuh (v4sink, v4sink);
-   v2sink = __builtin_arm_wminuw (v2sink, v2sink);
-   v4sink = __builtin_arm_wmulsm (v4sink, v4sink);
-   v4sink = __builtin_arm_wmulul (v4sink, v4sink);
-   v4sink = __builtin_arm_wmulum (v4sink, v4sink);
-   llsink = __builtin_arm_wor (llsink, llsink);
-   v2sink = __builtin_arm_wpackdss (llsink, llsink);
-   v2sink = __builtin_arm_wpackdus (llsink, llsink);
-   v8sink = __builtin_arm_wpackhss (v4sink, v4sink);
-   v8sink = __builtin_arm_wpackhus (v4sink, v4sink);
-   v4sink = __builtin_arm_wpackwss (v2sink, v2sink);
-   v4sink = __builtin_arm_wpackwus (v2sink, v2sink);
-   llsink = __builtin_arm_wrord (llsink, llsink);
-   llsink = __builtin_arm_wrordi (llsink, isink);
-   v4sink = __builtin_arm_wrorh (v4sink, llsink);
-   v4sink = __builtin_arm_wrorhi (v4sink, isink);
-   v2sink = __builtin_arm_wrorw (v2sink, llsink);
-   v2sink = __builtin_arm_wrorwi (v2sink, isink);
-   v2sink = __builtin_arm_wsadb (v2sink, v8sink, v8sink);
-   v2sink = __builtin_arm_wsadbz (v8sink, v8sink);
-   v2sink = __builtin_arm_wsadh (v2sink, v4sink, v4sink);
-   v2sink = __builtin_arm_wsadhz (v4sink, v4sink);
-   v4sink = __builtin_arm_wshufh (v4sink, 0);
-   llsink = __builtin_arm_wslld (llsink, llsink);
-   llsink = __builtin_arm_wslldi (llsink, 0);
-   v4sink = __builtin_arm_wsllh (v4sink, llsink);
-   v4sink = __builtin_arm_wsllhi (v4sink, isink);
-   v2sink = __builtin_arm_wsllw (v2sink, llsink);
-   v2sink = __builtin_arm_wsllwi (v2sink, isink);
-   llsink = __builtin_arm_wsrad (llsink, llsink);
-   llsink = __builtin_arm_wsradi (llsink, isink);
-   v4sink = __builtin_arm_wsrah (v4sink, llsink);
-   v4sink = __builtin_arm_wsrahi (v4sink, isink);
-   v2sink = __builtin_arm_wsraw (v2sink, llsink);
-   v2sink = __builtin_arm_wsrawi (v2sink, isink);
-   llsink = __builtin_arm_wsrld (llsink, llsink);
-   llsink = __builtin_arm_wsrldi (llsink, isink);
-   v4sink = __builtin_arm_wsrlh (v4sink, llsink);
-   v4sink = __builtin_arm_wsrlhi (v4sink, isink);
-   v2sink = __builtin_arm_wsrlw (v2sink, llsink);
-   v2sink = __builtin_arm_wsrlwi (v2sink, isink);
-   v8sink = __builtin_arm_wsubb (v8sink, v8sink);
-   v8sink = __builtin_arm_wsubbss (v8sink, v8sink);
-   v8sink = __builtin_arm_wsubbus (v8sink, v8sink);
-   v4sink = __builtin_arm_wsubh (v4sink, v4sink);
-   v4sink = __builtin_arm_wsubhss (v4sink, v4sink);
-   v4sink = __builtin_arm_wsubhus (v4sink, v4sink);
-   v2sink = __builtin_arm_wsubw (v2sink, v2sink);
-   v2sink = __builtin_arm_wsubwss (v2sink, v2sink);
-   v2sink = __builtin_arm_wsubwus (v2sink, v2sink);
-   v4sink = __builtin_arm_wunpckehsb (v8sink);
-   v2sink = __builtin_arm_wunpckehsh (v4sink);
-   llsink = __builtin_arm_wunpckehsw (v2sink);
-   v4sink = __builtin_arm_wunpckehub (v8sink);
-   v2sink = __builtin_arm_wunpckehuh (v4sink);
-   llsink = __builtin_arm_wunpckehuw (v2sink);
-   v4sink = __builtin_arm_wunpckelsb (v8sink);
-   v2sink = __builtin_arm_wunpckelsh (v4sink);
-   llsink = __builtin_arm_wunpckelsw (v2sink);
-   v4sink = __builtin_arm_wunpckelub (v8sink);
-   v2sink = __builtin_arm_wunpckeluh (v4sink);
-   llsink = __builtin_arm_wunpckeluw (v2sink);
-   v8sink = __builtin_arm_wunpckihb (v8sink, v8sink);
-   v4sink = __builtin_arm_wunpckihh (v4sink, v4sink);
-   v2sink = __builtin_arm_wunpckihw (v2sink, v2sink);
-   v8sink = __builtin_arm_wunpckilb (v8sink, v8sink);
-   v4sink = __builtin_arm_wunpckilh (v4sink, v4sink);
-   v2sink = __builtin_arm_wunpckilw (v2sink, v2sink);
-   llsink = __builtin_arm_wxor (llsink, llsink);
-   llsink = __builtin_arm_wzero ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/arm/pr64208.c gcc-16-20250518/gcc/testsuite/gcc.target/arm/pr64208.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/arm/pr64208.c	Sun May 11 22:32:34 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/arm/pr64208.c	Thu Jan  1 00:00:00 1970
***************
*** 1,25 ****
- /* { dg-do compile } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
- /* { dg-require-effective-target arm32 } */
- /* { dg-require-effective-target arm_iwmmxt_ok } */
- /* { dg-options "-O1 -mcpu=iwmmxt" } */
- 
- long long x6(void);
- void x7(long long, long long);
- void x8(long long);
- 
- int x0;
- long long *x1;
- 
- void x2(void) {
-   long long *x3 = x1;
-   while (x1) {
-     long long x4 = x0, x5 = x6();
-     x7(x4, x5);
-     x8(x5);
-     *x3 = 0;
-   }
- }
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/arm/pr79145.c gcc-16-20250518/gcc/testsuite/gcc.target/arm/pr79145.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/arm/pr79145.c	Sun May 11 22:32:34 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/arm/pr79145.c	Thu Jan  1 00:00:00 1970
***************
*** 1,16 ****
- /* { dg-do compile } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
- /* { dg-require-effective-target arm32 } */
- /* { dg-require-effective-target arm_iwmmxt_ok } */
- /* { dg-options "-mcpu=iwmmxt" } */
- 
- int
- main (void)
- {
-   volatile long long t1;
-   t1 ^= 0x55;
-   return 0;
- }
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/arm/pr99724.c gcc-16-20250518/gcc/testsuite/gcc.target/arm/pr99724.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/arm/pr99724.c	Sun May 11 22:32:34 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/arm/pr99724.c	Thu Jan  1 00:00:00 1970
***************
*** 1,31 ****
- /* PR target/99724 */
- /* { dg-do compile } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
- /* { dg-require-effective-target arm32 } */
- /* { dg-require-effective-target arm_iwmmxt_ok } */
- /* { dg-options "-O1 -mcpu=iwmmxt" } */
- 
- typedef int V __attribute__((vector_size (8)));
- struct __attribute__((packed)) S { char a; V b; char c[7]; };
- 
- void
- foo (V *x)
- {
-   *x = ~*x;
- }
- 
- void
- bar (V *x)
- {
-   *x = -*x;
- }
- 
- void
- baz (V *x, struct S *p)
- {
-   V y = p->b;
-   *x = y;
- }
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/arm/pr99786.c gcc-16-20250518/gcc/testsuite/gcc.target/arm/pr99786.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/arm/pr99786.c	Sun May 11 22:32:34 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/arm/pr99786.c	Thu Jan  1 00:00:00 1970
***************
*** 1,30 ****
- /* { dg-do compile } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
- /* { dg-require-effective-target arm32 } */
- /* { dg-require-effective-target arm_iwmmxt_ok } */
- /* { dg-options "-O3 -mcpu=iwmmxt" } */
- 
- typedef signed char V __attribute__((vector_size (8))); 
- 
- void
- foo (V *a) 
- { 
-   *a = *a * 3; 
- }
- 
- typedef signed short Vshort __attribute__((vector_size (8))); 
- void
- foo_short (Vshort *a) 
- { 
-   *a = *a * 3; 
- }
- 
- typedef signed int Vint __attribute__((vector_size (8))); 
- void
- foo_int (Vint *a) 
- { 
-   *a = *a * 3; 
- }
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c gcc-16-20250518/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c	Sun May 11 22:32:34 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c	Sun May 18 22:32:30 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
! /* { dg-require-effective-target arm_thumb2_ok_no_arm_v8_1m_lob } */
! /* { dg-options "-O" } */
  
  unsigned short foo (unsigned short x, unsigned short c)
  {
--- 1,31 ----
  /* { 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}
! ** )
! */
  
  unsigned short foo (unsigned short x, unsigned short c)
  {
*************** unsigned short foo (unsigned short x, un
*** 12,18 ****
      }
    return x;
  }
- 
- /* { dg-final { scan-assembler "ands" } } */
- /* { dg-final { scan-assembler-not "uxtb" } } */
- /* { dg-final { scan-assembler-not "cmp" } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/i386/pr103771-4.c gcc-16-20250518/gcc/testsuite/gcc.target/i386/pr103771-4.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/i386/pr103771-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/i386/pr103771-4.c	Sun May 18 22:32:32 2025
***************
*** 0 ****
--- 1,82 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=x86-64-v4 -Ofast -fdump-tree-vect-details" } */
+ /* { dg-final { scan-assembler-not "kshift" { target { ! ia32 } } } } */
+ /* { dg-final { scan-tree-dump-times "loop vectorized using 64 byte vectors" 6 "vect" { target { ! ia32 } } } } */
+ 
+ void
+ foo (float* a, float* b, int* c, int* d, long long* __restrict e, int n)
+ {
+   for (int i = 0 ; i != n; i++)
+     {
+       long long tmp = c[i];
+       long long tmp2 = d[i];
+       if (a[i] < b[i])
+ 	tmp = tmp2;
+       e[i] = tmp;
+     }
+ }
+ 
+ void
+ foo1 (double* a, double* b, long long* c, long long* d, int* __restrict e, int n)
+ {
+   for (int i = 0 ; i != n; i++)
+     {
+       int tmp = (int)c[i];
+       int tmp2 = (int)d[i];
+       if (a[i] < b[i])
+ 	tmp = tmp2;
+       e[i] = tmp;
+     }
+ }
+ 
+ void
+ foo2 (float* a, float* b, int* c, int* d, double* __restrict e, int n)
+ {
+   for (int i = 0 ; i != n; i++)
+     {
+       double tmp = c[i];
+       double tmp2 = d[i];
+       if (a[i] < b[i])
+ 	tmp = tmp2;
+       e[i] = tmp;
+     }
+ }
+ 
+ void
+ foo3 (double* a, double* b, long long* c, long long* d, float* __restrict e, int n)
+ {
+   for (int i = 0 ; i != n; i++)
+     {
+       float tmp = c[i];
+       float tmp2 = d[i];
+       if (a[i] < b[i])
+ 	tmp = tmp2;
+       e[i] = tmp;
+     }
+ }
+ 
+ void
+ foo4 (int* a, int* b, int* c, int* d, double* __restrict e, int n)
+ {
+   for (int i = 0 ; i != n; i++)
+     {
+       double tmp = c[i];
+       double tmp2 = d[i];
+       if (a[i] < b[i])
+ 	tmp = tmp2;
+       e[i] = tmp;
+     }
+ }
+ 
+ void
+ foo5 (long long* a, long long* b, long long* c, long long* d, float* __restrict e, int n)
+ {
+   for (int i = 0 ; i != n; i++)
+     {
+       float tmp = c[i];
+       float tmp2 = d[i];
+       if (a[i] < b[i])
+ 	tmp = tmp2;
+       e[i] = tmp;
+     }
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/i386/pr110310.c gcc-16-20250518/gcc/testsuite/gcc.target/i386/pr110310.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/i386/pr110310.c	Sun May 11 22:32:36 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/i386/pr110310.c	Sun May 18 22:32:32 2025
*************** void foo (int * __restrict a, int *b)
*** 9,13 ****
  
  /* We should vectorize the main loop with AVX512 and the epilog with SSE.  */
  
! /* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte vectors" "vect" } } */
! /* { dg-final { scan-tree-dump "optimized: loop vectorized using 16 byte vectors" "vect" } } */
--- 9,13 ----
  
  /* We should vectorize the main loop with AVX512 and the epilog with SSE.  */
  
! /* { dg-final { scan-tree-dump "loop vectorized using 64 byte vectors" "vect" } } */
! /* { dg-final { scan-tree-dump "loop vectorized using 16 byte vectors" "vect" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-1.c gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-1.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-1.c	Sun May 18 22:32:33 2025
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx2 -mno-avx512f -mtune=generic -fdump-tree-vect-optimized" } */
+ 
+ int test (signed char *data, int n)
+ {
+   int sum = 0;
+   for (int i = 0; i < n; ++i)
+     sum += data[i];
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "loop vectorized using 32 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 16 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 8 byte vectors" "vect" { target { ! ia32 } } } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-2.c gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-2.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-2.c	Sun May 18 22:32:33 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx512bw -mtune=generic -fdump-tree-vect-optimized" } */
+ 
+ int test (signed char *data, int n)
+ {
+   int sum = 0;
+   for (int i = 0; i < n; ++i)
+     sum += data[i];
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "loop vectorized using 64 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 32 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "loop vectorized using 16 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "loop vectorized using 8 byte vectors" "vect" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-3.c gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-3.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-3.c	Sun May 18 22:32:33 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx512bw -mtune=znver4 -fdump-tree-vect-optimized" } */
+ 
+ int test (signed char *data, int n)
+ {
+   int sum = 0;
+   for (int i = 0; i < n; ++i)
+     sum += data[i];
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "loop vectorized using 64 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 32 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 16 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 8 byte vectors" "vect" { target { ! ia32 } } } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-4.c gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-4.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-4.c	Sun May 18 22:32:33 2025
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx512bw -mtune=generic --param vect-partial-vector-usage=1 -fdump-tree-vect-optimized" } */
+ 
+ int test (signed char *data, int n)
+ {
+   int sum = 0;
+   for (int i = 0; i < n; ++i)
+     sum += data[i];
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop vectorized using 64 byte vectors" 2 "vect" } } */
+ /* { dg-final { scan-tree-dump-not "loop vectorized using 32 byte vectors" "vect" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-5.c gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-5.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/i386/vect-epilogues-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/i386/vect-epilogues-5.c	Sun May 18 22:32:33 2025
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx512bw -mtune=znver4 --param vect-partial-vector-usage=1 -fdump-tree-vect-optimized" } */
+ 
+ int test (signed char *data, int n)
+ {
+   int sum = 0;
+   for (int i = 0; i < n; ++i)
+     sum += data[i];
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop vectorized using 64 byte vectors" 2 "vect" } } */
+ /* { dg-final { scan-tree-dump-not "loop vectorized using 32 byte vectors" "vect" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/mips/pr54240.c gcc-16-20250518/gcc/testsuite/gcc.target/mips/pr54240.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/mips/pr54240.c	Sun May 11 22:32:36 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/mips/pr54240.c	Sun May 18 22:32:33 2025
*************** NOMIPS16 int foo(S *s)
*** 27,30 ****
    return next->v;
  }
  
! /* { dg-final { scan-tree-dump "Hoisting adjacent loads" "phiopt1" } } */
--- 27,30 ----
    return next->v;
  }
  
! /* { dg-final { scan-tree-dump "Hoisting adjacent loads" "phiopt2" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c gcc-16-20250518/gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c	Sun May 11 22:32:36 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c	Sun May 18 22:32:33 2025
***************
*** 2,8 ****
  /* { dg-options {-march-map=sm_61 -mptx=_} } */
  /* { dg-additional-options -save-temps } */
  /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
! /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_53$} 1 } } */
  
  #if __PTX_ISA_VERSION_MAJOR__ != 7
  #error wrong value for __PTX_ISA_VERSION_MAJOR__
--- 2,8 ----
  /* { dg-options {-march-map=sm_61 -mptx=_} } */
  /* { dg-additional-options -save-temps } */
  /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
! /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_61$} 1 } } */
  
  #if __PTX_ISA_VERSION_MAJOR__ != 7
  #error wrong value for __PTX_ISA_VERSION_MAJOR__
***************
*** 12,18 ****
  #error wrong value for __PTX_ISA_VERSION_MINOR__
  #endif
  
! #if __PTX_SM__ != 530
  #error wrong value for __PTX_SM__
  #endif
  
--- 12,18 ----
  #error wrong value for __PTX_ISA_VERSION_MINOR__
  #endif
  
! #if __PTX_SM__ != 610
  #error wrong value for __PTX_SM__
  #endif
  
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c gcc-16-20250518/gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c	Sun May 11 22:32:36 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c	Sun May 18 22:32:33 2025
***************
*** 2,8 ****
  /* { dg-options {-march-map=sm_62 -mptx=_} } */
  /* { dg-additional-options -save-temps } */
  /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
! /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_53$} 1 } } */
  
  #if __PTX_ISA_VERSION_MAJOR__ != 7
  #error wrong value for __PTX_ISA_VERSION_MAJOR__
--- 2,8 ----
  /* { dg-options {-march-map=sm_62 -mptx=_} } */
  /* { dg-additional-options -save-temps } */
  /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
! /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_61$} 1 } } */
  
  #if __PTX_ISA_VERSION_MAJOR__ != 7
  #error wrong value for __PTX_ISA_VERSION_MAJOR__
***************
*** 12,18 ****
  #error wrong value for __PTX_ISA_VERSION_MINOR__
  #endif
  
! #if __PTX_SM__ != 530
  #error wrong value for __PTX_SM__
  #endif
  
--- 12,18 ----
  #error wrong value for __PTX_ISA_VERSION_MINOR__
  #endif
  
! #if __PTX_SM__ != 610
  #error wrong value for __PTX_SM__
  #endif
  
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/nvptx/march=sm_61.c gcc-16-20250518/gcc/testsuite/gcc.target/nvptx/march=sm_61.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/nvptx/march=sm_61.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/nvptx/march=sm_61.c	Sun May 18 22:32:33 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble } */
+ /* { dg-options {-march=sm_61 -mptx=_} } */
+ /* { dg-additional-options -save-temps } */
+ /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
+ /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_61$} 1 } } */
+ 
+ #if __PTX_ISA_VERSION_MAJOR__ != 7
+ #error wrong value for __PTX_ISA_VERSION_MAJOR__
+ #endif
+ 
+ #if __PTX_ISA_VERSION_MINOR__ != 3
+ #error wrong value for __PTX_ISA_VERSION_MINOR__
+ #endif
+ 
+ #if __PTX_SM__ != 610
+ #error wrong value for __PTX_SM__
+ #endif
+ 
+ int dummy;
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/nvptx/mptx=5.0.c gcc-16-20250518/gcc/testsuite/gcc.target/nvptx/mptx=5.0.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/nvptx/mptx=5.0.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/nvptx/mptx=5.0.c	Sun May 18 22:32:33 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble } */
+ /* { dg-options {-march=sm_30 -mptx=5.0} } */
+ /* { dg-additional-options -save-temps } */
+ /* { dg-final { scan-assembler-times {(?n)^	\.version	5\.0$} 1 } } */
+ /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_30$} 1 } } */
+ 
+ #if __PTX_ISA_VERSION_MAJOR__ != 5
+ #error wrong value for __PTX_ISA_VERSION_MAJOR__
+ #endif
+ 
+ #if __PTX_ISA_VERSION_MINOR__ != 0
+ #error wrong value for __PTX_ISA_VERSION_MINOR__
+ #endif
+ 
+ #if __PTX_SM__ != 300
+ #error wrong value for __PTX_SM__
+ #endif
+ 
+ int dummy;
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-52.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-52.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-52.c	Sun May 11 22:32:36 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-52.c	Sun May 18 22:32:35 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rva22u64v -mabi=lp64" } */
! /* { dg-warning "*Should use \"_\" to contact Profiles with other extensions" } */
  int
  foo ()
  {}
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rva22u64v -mabi=lp64" } */
! /* { dg-warning "Should use \"_\" to contact Profiles with other extensions" "" { target *-*-* } 0 } */
  int
  foo ()
  {}
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-55.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-55.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-55.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-55.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64g_sha -mabi=lp64d" } */
+ 
+ void foo(){}
+ 
+ /* { dg-final { scan-assembler ".attribute arch, \"rv64i2p1_m2p0_a2p1_f2p2"
+ "_d2p2_h1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_sha1p0"
+ "_shcounterenw1p0_shgatpa1p0_shtvala1p0_shvsatpa1p0_shvstvala1p0_shvstvecd1p0"
+ "_ssstateen1p0\"" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-ss-1.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-ss-1.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-ss-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-ss-1.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc_ssnpm_smnpm_smmpm_sspm_supm -mabi=lp64" } */
+ int foo()
+ {
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-ss-2.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-ss-2.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-ss-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-ss-2.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm -mabi=ilp32d" } */
+ 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 } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-zilsd-1.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-zilsd-1.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-zilsd-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-zilsd-1.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc_zilsd_zclsd -mabi=ilp32d" } */
+ int foo()
+ {
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc_zilsd -mabi=ilp32d" } */
+ 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 } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc_zclsd -mabi=ilp32d" } */
+ 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 } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/pr120223.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/pr120223.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/pr120223.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/pr120223.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,4 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=thead-c906" }  */
+ long foo(long x) { return x ^ 0x80000000; }
+ 
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_arith.h gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_arith.h
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_arith.h	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_arith.h	Sun May 18 22:32:35 2025
*************** vec_sat_u_add_##T##_fmt_8 (T *out, T *op
*** 123,128 ****
--- 123,144 ----
      }                                                                \
  }
  
+ #define DEF_VEC_SAT_U_ADD_FMT_9(WT, T)                                      \
+ void __attribute__((noinline))                                              \
+ vec_sat_u_add_##WT##_##T##_fmt_9 (T *out, T *op_1, T *op_2, unsigned limit) \
+ {                                                                           \
+   unsigned i;                                                               \
+   T max = -1;                                                               \
+   for (i = 0; i < limit; i++)                                               \
+     {                                                                       \
+       T x = op_1[i];                                                        \
+       T y = op_2[i];                                                        \
+       WT val = (WT)x + (WT)y;                                               \
+       out[i] = val > max ? max : (T)val;                                    \
+     }                                                                       \
+ }
+ #define DEF_VEC_SAT_U_ADD_FMT_9_WRAP(WT, T) DEF_VEC_SAT_U_ADD_FMT_9(WT, T)
+ 
  #define RUN_VEC_SAT_U_ADD_FMT_1(T, out, op_1, op_2, N) \
    vec_sat_u_add_##T##_fmt_1(out, op_1, op_2, N)
  
*************** vec_sat_u_add_##T##_fmt_8 (T *out, T *op
*** 147,152 ****
--- 163,183 ----
  #define RUN_VEC_SAT_U_ADD_FMT_8(T, out, op_1, op_2, N) \
    vec_sat_u_add_##T##_fmt_8(out, op_1, op_2, N)
  
+ #define RUN_VEC_SAT_U_ADD_FMT_9_FROM_U16(T, out, op_1, op_2, N) \
+   vec_sat_u_add_uint16_t_##T##_fmt_9(out, op_1, op_2, N)
+ #define RUN_VEC_SAT_U_ADD_FMT_9_FROM_U16_WRAP(T, out, op_1, op_2, N) \
+   RUN_VEC_SAT_U_ADD_FMT_9_FROM_U16(T, out, op_1, op_2, N)
+ 
+ #define RUN_VEC_SAT_U_ADD_FMT_9_FROM_U32(T, out, op_1, op_2, N) \
+   vec_sat_u_add_uint32_t_##T##_fmt_9(out, op_1, op_2, N)
+ #define RUN_VEC_SAT_U_ADD_FMT_9_FROM_U32_WRAP(T, out, op_1, op_2, N) \
+   RUN_VEC_SAT_U_ADD_FMT_9_FROM_U32(T, out, op_1, op_2, N)
+ 
+ #define RUN_VEC_SAT_U_ADD_FMT_9_FROM_U64(T, out, op_1, op_2, N) \
+   vec_sat_u_add_uint64_t_##T##_fmt_9(out, op_1, op_2, N)
+ #define RUN_VEC_SAT_U_ADD_FMT_9_FROM_U64_WRAP(T, out, op_1, op_2, N) \
+   RUN_VEC_SAT_U_ADD_FMT_9_FROM_U64(T, out, op_1, op_2, N)
+ 
  #define DEF_VEC_SAT_U_ADD_IMM_FMT_1(T, IMM)                          \
  T __attribute__((noinline))                                          \
  vec_sat_u_add_imm##IMM##_##T##_fmt_1 (T *out, T *in, unsigned limit) \
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u32.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -ftree-vectorize -fdump-tree-optimized" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9(uint32_t, uint16_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vsaddu\.vv} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u16-from-u64.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -ftree-vectorize -fdump-tree-optimized" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9(uint64_t, uint16_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vsaddu\.vv} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u32-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u32-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u32-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u32-from-u64.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -ftree-vectorize -fdump-tree-optimized" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9(uint64_t, uint32_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vsaddu\.vv} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u16.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -ftree-vectorize -fdump-tree-optimized" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9(uint16_t, uint8_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vsaddu\.vv} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u32.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -ftree-vectorize -fdump-tree-optimized" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9(uint32_t, uint8_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vsaddu\.vv} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-9-u8-from-u64.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -ftree-vectorize -fdump-tree-optimized" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9(uint64_t, uint8_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vsaddu\.vv} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u32.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,76 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ #define T                  uint16_t
+ #define WT                 uint32_t
+ #define N                  16
+ #define RUN_VEC_SAT_BINARY RUN_VEC_SAT_U_ADD_FMT_9_FROM_U32_WRAP
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9_WRAP(WT, T)
+ 
+ T test_data[][3][N] = {
+   {
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_0 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_1 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* expect */
+   },
+   {
+     {
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+     },
+     {
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+     },
+     {
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+     },
+   },
+   {
+     {
+ 	  0,     0,     1,     0,
+ 	  1,     2,     3,     0,
+ 	  1,     2,     3,     4,
+ 	  5, 65534, 65535,     9,
+     },
+     {
+ 	  0,     1,     1, 65534,
+       65534, 65534, 65534, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535,     9,
+     },
+     {
+ 	  0,     1,     2, 65534,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535,    18,
+     },
+   },
+ };
+ 
+ #include "vec_sat_binary_vvv_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u16-from-u64.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,76 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ #define T                  uint16_t
+ #define WT                 uint64_t
+ #define N                  16
+ #define RUN_VEC_SAT_BINARY RUN_VEC_SAT_U_ADD_FMT_9_FROM_U64_WRAP
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9_WRAP(WT, T)
+ 
+ T test_data[][3][N] = {
+   {
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_0 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_1 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* expect */
+   },
+   {
+     {
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+     },
+     {
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+     },
+     {
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+     },
+   },
+   {
+     {
+ 	  0,     0,     1,     0,
+ 	  1,     2,     3,     0,
+ 	  1,     2,     3,     4,
+ 	  5, 65534, 65535,     9,
+     },
+     {
+ 	  0,     1,     1, 65534,
+       65534, 65534, 65534, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535,     9,
+     },
+     {
+ 	  0,     1,     2, 65534,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535, 65535,
+       65535, 65535, 65535,    18,
+     },
+   },
+ };
+ 
+ #include "vec_sat_binary_vvv_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u32-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u32-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u32-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u32-from-u64.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,76 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ #define T                  uint32_t
+ #define WT                 uint64_t
+ #define N                  16
+ #define RUN_VEC_SAT_BINARY RUN_VEC_SAT_U_ADD_FMT_9_FROM_U64_WRAP
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9_WRAP(WT, T)
+ 
+ T test_data[][3][N] = {
+   {
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_0 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_1 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* expect */
+   },
+   {
+     {
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+     },
+     {
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+     },
+     {
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+     },
+   },
+   {
+     {
+ 	       0,          0,          1,          0,
+ 	       1,          2,          3,          0,
+ 	       1,          2,          3,          4,
+ 	       5, 4294967294, 4294967295,          9,
+     },
+     {
+ 	       0,          1,          1, 4294967294,
+       4294967294, 4294967294, 4294967294, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295,          9,
+     },
+     {
+ 	       0,          1,          2, 4294967294,
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295, 4294967295,
+       4294967295, 4294967295, 4294967295,         18,
+     },
+   },
+ };
+ 
+ #include "vec_sat_binary_vvv_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u16.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,76 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ #define T                  uint8_t
+ #define WT                 uint16_t
+ #define N                  16
+ #define RUN_VEC_SAT_BINARY RUN_VEC_SAT_U_ADD_FMT_9_FROM_U16_WRAP
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9_WRAP(WT, T)
+ 
+ T test_data[][3][N] = {
+   {
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_0 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_1 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* expect */
+   },
+   {
+     {
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+     },
+     {
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+     },
+     {
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+     },
+   },
+   {
+     {
+ 	0,   0,   1,   0,
+ 	1,   2,   3,   0,
+ 	1,   2,   3,   4,
+ 	5, 254, 255,   9,
+     },
+     {
+ 	0,   1,   1, 254,
+       254, 254, 254, 255,
+       255, 255, 255, 255,
+       255, 255, 255,   9,
+     },
+     {
+ 	0,   1,   2, 254,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255,  18,
+     },
+   },
+ };
+ 
+ #include "vec_sat_binary_vvv_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u32.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,76 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ #define T                  uint8_t
+ #define WT                 uint32_t
+ #define N                  16
+ #define RUN_VEC_SAT_BINARY RUN_VEC_SAT_U_ADD_FMT_9_FROM_U32_WRAP
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9_WRAP(WT, T)
+ 
+ T test_data[][3][N] = {
+   {
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_0 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_1 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* expect */
+   },
+   {
+     {
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+     },
+     {
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+     },
+     {
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+     },
+   },
+   {
+     {
+ 	0,   0,   1,   0,
+ 	1,   2,   3,   0,
+ 	1,   2,   3,   4,
+ 	5, 254, 255,   9,
+     },
+     {
+ 	0,   1,   1, 254,
+       254, 254, 254, 255,
+       255, 255, 255, 255,
+       255, 255, 255,   9,
+     },
+     {
+ 	0,   1,   2, 254,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255,  18,
+     },
+   },
+ };
+ 
+ #include "vec_sat_binary_vvv_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_add-run-9-u8-from-u64.c	Sun May 18 22:32:35 2025
***************
*** 0 ****
--- 1,76 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "vec_sat_arith.h"
+ 
+ #define T                  uint8_t
+ #define WT                 uint16_t
+ #define N                  16
+ #define RUN_VEC_SAT_BINARY RUN_VEC_SAT_U_ADD_FMT_9_FROM_U16_WRAP
+ 
+ DEF_VEC_SAT_U_ADD_FMT_9_WRAP(WT, T)
+ 
+ T test_data[][3][N] = {
+   {
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_0 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* arg_1 */
+     {
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+     }, /* expect */
+   },
+   {
+     {
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+     },
+     {
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+     },
+     {
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+     },
+   },
+   {
+     {
+ 	0,   0,   1,   0,
+ 	1,   2,   3,   0,
+ 	1,   2,   3,   4,
+ 	5, 254, 255,   9,
+     },
+     {
+ 	0,   1,   1, 254,
+       254, 254, 254, 255,
+       255, 255, 255, 255,
+       255, 255, 255,   9,
+     },
+     {
+ 	0,   1,   2, 254,
+       255, 255, 255, 255,
+       255, 255, 255, 255,
+       255, 255, 255,  18,
+     },
+   },
+ };
+ 
+ #include "vec_sat_binary_vvv_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int16_t, +, add)
+ DEF_VX_BINARY_CASE_0(int16_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int32_t, +, add)
+ DEF_VX_BINARY_CASE_0(int32_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int64_t, +, add)
+ DEF_VX_BINARY_CASE_0(int64_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int8_t, +, add)
+ DEF_VX_BINARY_CASE_0(int8_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint16_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint16_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint32_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint32_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint64_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint64_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint8_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint8_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int16_t, +, add)
+ DEF_VX_BINARY_CASE_0(int16_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int32_t, +, add)
+ DEF_VX_BINARY_CASE_0(int32_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int64_t, +, add)
+ DEF_VX_BINARY_CASE_0(int64_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int8_t, +, add)
+ DEF_VX_BINARY_CASE_0(int8_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint16_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint16_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint32_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint32_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint64_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint64_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint8_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint8_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int16_t, +, add)
+ DEF_VX_BINARY_CASE_0(int16_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int32_t, +, add)
+ DEF_VX_BINARY_CASE_0(int32_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int64_t, +, add)
+ DEF_VX_BINARY_CASE_0(int64_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(int8_t, +, add)
+ DEF_VX_BINARY_CASE_0(int8_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint16_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint16_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint32_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint32_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint64_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint64_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_0(uint8_t, +, add)
+ DEF_VX_BINARY_CASE_0(uint8_t, -, sub)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int16_t, +, add, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1(int16_t, -, sub, VX_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int32_t, +, add, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1(int32_t, -, sub, VX_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int64_t, +, add, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1(int64_t, -, sub, VX_BINARY_BODY)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int8_t, +, add, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1(int8_t, -, sub, VX_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint16_t, +, add, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1(uint16_t, -, sub, VX_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint32_t, +, add, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1(uint32_t, -, sub, VX_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint64_t, +, add, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1(uint64_t, -, sub, VX_BINARY_BODY)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint8_t, +, add, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1(uint8_t, -, sub, VX_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int16_t, +, add, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1(int16_t, -, sub, VX_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int32_t, +, add, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1(int32_t, -, sub, VX_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int64_t, +, add, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1(int64_t, -, sub, VX_BINARY_BODY)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int8_t, +, add, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1(int8_t, -, sub, VX_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint16_t, +, add, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1(uint16_t, -, sub, VX_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint32_t, +, add, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1(uint32_t, -, sub, VX_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint64_t, +, add, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1(uint64_t, -, sub, VX_BINARY_BODY)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint8_t, +, add, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1(uint8_t, -, sub, VX_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int16_t, +, add, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1(int16_t, -, sub, VX_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int32_t, +, add, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1(int32_t, -, sub, VX_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int64_t, +, add, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1(int64_t, -, sub, VX_BINARY_BODY)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(int8_t, +, add, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1(int8_t, -, sub, VX_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,11 ----
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint16_t, +, add, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1(uint16_t, -, sub, VX_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint32_t, +, add, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1(uint32_t, -, sub, VX_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint64_t, +, add, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1(uint64_t, -, sub, VX_BINARY_BODY)
+ 
+ /* { dg-final { scan-assembler-not {vadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
+ 
+ #include "vx_binary.h"
+ 
+ DEF_VX_BINARY_CASE_1(uint8_t, +, add, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1(uint8_t, -, sub, VX_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler {vadd.vx} } } */
+ /* { dg-final { scan-assembler {vsub.vx} } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun May 18 22:32:36 2025
***************
*** 3,18 ****
  
  #include <stdint.h>
  
! #define DEF_VX_BINARY_CASE_0(T, OP)                                        \
! void                                                                       \
! test_vx_binary_case_0 (T * restrict out, T * restrict in, T x, unsigned n) \
! {                                                                          \
!   for (unsigned i = 0; i < n; i++)                                         \
!     out[i] = in[i] OP x;                                                   \
  }
! #define DEF_VX_BINARY_CASE_0_WRAP(T, OP)         DEF_VX_BINARY_CASE_0(T, OP)
! #define RUN_VX_BINARY_CASE_0(out, in, x, n)      test_vx_binary_case_0(out, in, x, n)
! #define RUN_VX_BINARY_CASE_0_WRAP(out, in, x, n) RUN_VX_BINARY_CASE_0(out, in, x, n)
  
  #define VX_BINARY_BODY(op)       \
    out[k + 0] = in[k + 0] op tmp; \
--- 3,22 ----
  
  #include <stdint.h>
  
! #define DEF_VX_BINARY_CASE_0(T, OP, NAME)                                \
! void                                                                     \
! test_vx_binary_##NAME##_##T##_case_0 (T * restrict out, T * restrict in, \
!                                       T x, unsigned n)                   \
! {                                                                        \
!   for (unsigned i = 0; i < n; i++)                                       \
!     out[i] = in[i] OP x;                                                 \
  }
! #define DEF_VX_BINARY_CASE_0_WRAP(T, OP, NAME) \
!   DEF_VX_BINARY_CASE_0(T, OP, NAME)
! #define RUN_VX_BINARY_CASE_0(T, NAME, out, in, x, n) \
!   test_vx_binary_##NAME##_##T##_case_0(out, in, x, n)
! #define RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n) \
!   RUN_VX_BINARY_CASE_0(T, NAME, out, in, x, n)
  
  #define VX_BINARY_BODY(op)       \
    out[k + 0] = in[k + 0] op tmp; \
*************** test_vx_binary_case_0 (T * restrict out,
*** 43,61 ****
    VX_BINARY_BODY_X64(op)        \
    VX_BINARY_BODY_X64(op)
  
! #define DEF_VX_BINARY_CASE_1(T, OP, BODY)                                  \
! void                                                                       \
! test_vx_binary_case_1 (T * restrict out, T * restrict in, T x, unsigned n) \
! {                                                                          \
!   unsigned k = 0;                                                          \
!   T tmp = x + 3;                                                           \
!                                                                            \
!   while (k < n)                                                            \
!     {                                                                      \
!       tmp = tmp ^ 0x3f;                                                    \
!       BODY(OP)                                                             \
!     }                                                                      \
  }
! #define DEF_VX_BINARY_CASE_1_WRAP(T, OP, BODY) DEF_VX_BINARY_CASE_1(T, OP, BODY)
  
  #endif
--- 47,67 ----
    VX_BINARY_BODY_X64(op)        \
    VX_BINARY_BODY_X64(op)
  
! #define DEF_VX_BINARY_CASE_1(T, OP, NAME, BODY)                          \
! void                                                                     \
! test_vx_binary_##NAME##_##T##_case_1 (T * restrict out, T * restrict in, \
!                                       T x, unsigned n)                   \
! {                                                                        \
!   unsigned k = 0;                                                        \
!   T tmp = x + 3;                                                         \
!                                                                          \
!   while (k < n)                                                          \
!     {                                                                    \
!       tmp = tmp ^ 0x3f;                                                  \
!       BODY(OP)                                                           \
!     }                                                                    \
  }
! #define DEF_VX_BINARY_CASE_1_WRAP(T, OP, NAME, BODY) \
!   DEF_VX_BINARY_CASE_1(T, OP, NAME, BODY)
  
  #endif
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun May 18 22:32:36 2025
***************
*** 6,12 ****
  #define TEST_BINARY_DATA(T, NAME)      test_##T##_##NAME##_data
  #define TEST_BINARY_DATA_WRAP(T, NAME) TEST_BINARY_DATA(T, NAME)
  
! int8_t TEST_BINARY_DATA(int8_t, vadd)[][3][N] =
  {
    {
      { 1 },
--- 6,12 ----
  #define TEST_BINARY_DATA(T, NAME)      test_##T##_##NAME##_data
  #define TEST_BINARY_DATA_WRAP(T, NAME) TEST_BINARY_DATA(T, NAME)
  
! int8_t TEST_BINARY_DATA(int8_t, add)[][3][N] =
  {
    {
      { 1 },
*************** int8_t TEST_BINARY_DATA(int8_t, vadd)[][
*** 55,61 ****
    },
  };
  
! int16_t TEST_BINARY_DATA(int16_t, vadd)[][3][N] =
  {
    {
      { 1 },
--- 55,61 ----
    },
  };
  
! int16_t TEST_BINARY_DATA(int16_t, add)[][3][N] =
  {
    {
      { 1 },
*************** int16_t TEST_BINARY_DATA(int16_t, vadd)[
*** 104,110 ****
    },
  };
  
! int32_t TEST_BINARY_DATA(int32_t, vadd)[][3][N] =
  {
    {
      { 1 },
--- 104,110 ----
    },
  };
  
! int32_t TEST_BINARY_DATA(int32_t, add)[][3][N] =
  {
    {
      { 1 },
*************** int32_t TEST_BINARY_DATA(int32_t, vadd)[
*** 153,159 ****
    },
  };
  
! int64_t TEST_BINARY_DATA(int64_t, vadd)[][3][N] =
  {
    {
      { 1 },
--- 153,159 ----
    },
  };
  
! int64_t TEST_BINARY_DATA(int64_t, add)[][3][N] =
  {
    {
      { 1 },
*************** int64_t TEST_BINARY_DATA(int64_t, vadd)[
*** 202,208 ****
    },
  };
  
! uint8_t TEST_BINARY_DATA(uint8_t, vadd)[][3][N] =
  {
    {
      { 1 },
--- 202,208 ----
    },
  };
  
! uint8_t TEST_BINARY_DATA(uint8_t, add)[][3][N] =
  {
    {
      { 1 },
*************** uint8_t TEST_BINARY_DATA(uint8_t, vadd)[
*** 251,257 ****
    },
  };
  
! uint16_t TEST_BINARY_DATA(uint16_t, vadd)[][3][N] =
  {
    {
      { 1 },
--- 251,257 ----
    },
  };
  
! uint16_t TEST_BINARY_DATA(uint16_t, add)[][3][N] =
  {
    {
      { 1 },
*************** uint16_t TEST_BINARY_DATA(uint16_t, vadd
*** 300,306 ****
    },
  };
  
! uint32_t TEST_BINARY_DATA(uint32_t, vadd)[][3][N] =
  {
    {
      { 1 },
--- 300,306 ----
    },
  };
  
! uint32_t TEST_BINARY_DATA(uint32_t, add)[][3][N] =
  {
    {
      { 1 },
*************** uint32_t TEST_BINARY_DATA(uint32_t, vadd
*** 349,355 ****
    },
  };
  
! uint64_t TEST_BINARY_DATA(uint64_t, vadd)[][3][N] =
  {
    {
      { 1 },
--- 349,355 ----
    },
  };
  
! uint64_t TEST_BINARY_DATA(uint64_t, add)[][3][N] =
  {
    {
      { 1 },
*************** uint64_t TEST_BINARY_DATA(uint64_t, vadd
*** 397,401 ****
--- 397,793 ----
      },
    },
  };
+ 
+ int8_t TEST_BINARY_DATA(int8_t, sub)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+   },
+   {
+     { 127 },
+     {
+        127,  127,  127,  127,
+        126,  126,  126,  126,
+         -1,   -1,   -1,   -1,
+        125,  125,  125,  125,
+     },
+     {
+          0,    0,    0,    0,
+         -1,   -1,   -1,   -1,
+       -128, -128, -128, -128,
+         -2,   -2,   -2,   -2,
+     },
+   },
+   {
+     { -128 },
+     {
+       -128, -128, -128, -128,
+       -127, -127, -127, -127,
+         -1,   -1,   -1,   -1,
+       -126, -126, -126, -126,
+     },
+     {
+          0,    0,    0,    0,
+          1,    1,    1,    1,
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+     },
+   },
+ };
+ 
+ int16_t TEST_BINARY_DATA(int16_t, sub)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+   },
+   {
+     { 32767 },
+     {
+        32767,  32767,  32767,  32767,
+        32766,  32766,  32766,  32766,
+           -1,     -1,     -1,     -1,
+        32765,  32765,  32765,  32765,
+     },
+     {
+            0,      0,      0,      0,
+           -1,     -1,     -1,     -1,
+       -32768, -32768, -32768, -32768,
+           -2,     -2,     -2,     -2,
+     },
+   },
+   {
+     { -32768 },
+     {
+       -32768, -32768, -32768, -32768,
+       -32767, -32767, -32767, -32767,
+           -1,     -1,     -1,     -1,
+       -32766, -32766, -32766, -32766,
+     },
+     {
+            0,      0,      0,      0,
+            1,      1,      1,      1,
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+     },
+   },
+ };
+ 
+ int32_t TEST_BINARY_DATA(int32_t, sub)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+   },
+   {
+     { 2147483647 },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+        2147483646,  2147483646,  2147483646,  2147483646,
+                -1,          -1,          -1,          -1,
+        2147483645,  2147483645,  2147483645,  2147483645,
+     },
+     {
+                 0,           0,           0,           0,
+                -1,          -1,          -1,          -1,
+       -2147483648, -2147483648, -2147483648, -2147483648,
+                -2,          -2,          -2,          -2,
+     },
+   },
+   {
+     { -2147483648 },
+     {
+       -2147483648, -2147483648, -2147483648, -2147483648,
+       -2147483647, -2147483647, -2147483647, -2147483647,
+                -1,          -1,          -1,          -1,
+       -2147483646, -2147483646, -2147483646, -2147483646,
+     },
+     {
+                 0,           0,           0,           0,
+                 1,           1,           1,           1,
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+     },
+   },
+ };
+ 
+ int64_t TEST_BINARY_DATA(int64_t, sub)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+   },
+   {
+     { 9223372036854775807ll },
+     {
+        9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,
+        9223372036854775806ll,  9223372036854775806ll,  9223372036854775806ll,  9223372036854775806ll,
+                           -1,                     -1,                     -1,                     -1,
+        9223372036854775805ll,  9223372036854775805ll,  9223372036854775805ll,  9223372036854775805ll,
+     },
+     {
+                             0,                       0,                       0,                       0,
+                            -1,                      -1,                      -1,                      -1,
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+                            -2,                      -2,                      -2,                      -2,
+     },
+   },
+   {
+     { -9223372036854775808ull },
+     {
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+        -9223372036854775807ll,  -9223372036854775807ll,  -9223372036854775807ll,  -9223372036854775807ll,
+                            -1,                      -1,                      -1,                      -1,
+        -9223372036854775806ll,  -9223372036854775806ll,  -9223372036854775806ll,  -9223372036854775806ll,
+     },
+     {
+                            0,                      0,                      0,                      0,
+                            1,                      1,                      1,                      1,
+        9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,
+                            2,                      2,                      2,                      2,
+     },
+   },
+ };
+ 
+ uint8_t TEST_BINARY_DATA(uint8_t, sub)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+       12, 12, 12, 12,
+       10, 10, 10, 10,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       11, 11, 11, 11,
+        9,  9,  9,  9,
+     },
+   },
+   {
+     { 127 },
+     {
+       127, 127, 127, 127,
+       128, 128, 128, 128,
+       254, 254, 254, 254,
+       255, 255, 255, 255,
+     },
+     {
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+       127, 127, 127, 127,
+       128, 128, 128, 128,
+     },
+   },
+   {
+     { 253 },
+     {
+        253, 253, 253, 253,
+        254, 254, 254, 254,
+        255, 255, 255, 255,
+        252, 252, 252, 252,
+     },
+     {
+          0,   0,   0,   0,
+          1,   1,   1,   1,
+          2,   2,   2,   2,
+        255, 255, 255, 255,
+     },
+   },
+ };
+ 
+ uint16_t TEST_BINARY_DATA(uint16_t, sub)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+       12, 12, 12, 12,
+       10, 10, 10, 10,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       11, 11, 11, 11,
+        9,  9,  9,  9,
+     },
+   },
+   {
+     { 32767 },
+     {
+       32767, 32767, 32767, 32767,
+       32768, 32768, 32768, 32768,
+       65534, 65534, 65534, 65534,
+       65535, 65535, 65535, 65535,
+     },
+     {
+           0,     0,     0,     0,
+           1,     1,     1,     1,
+       32767, 32767, 32767, 32767,
+       32768, 32768, 32768, 32768,
+     },
+   },
+   {
+     { 65533 },
+     {
+        65533, 65533, 65533, 65533,
+        65534, 65534, 65534, 65534,
+        65535, 65535, 65535, 65535,
+        65532, 65532, 65532, 65532,
+     },
+     {
+            0,     0,     0,     0,
+            1,     1,     1,     1,
+            2,     2,     2,     2,
+        65535, 65535, 65535, 65535,
+     },
+   },
+ };
+ 
+ uint32_t TEST_BINARY_DATA(uint32_t, sub)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+       12, 12, 12, 12,
+       10, 10, 10, 10,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       11, 11, 11, 11,
+        9,  9,  9,  9,
+     },
+   },
+   {
+     { 2147483647 },
+     {
+       2147483647, 2147483647, 2147483647, 2147483647,
+       2147483648, 2147483648, 2147483648, 2147483648,
+       4294967294, 4294967294, 4294967294, 4294967294,
+       4294967295, 4294967295, 4294967295, 4294967295,
+     },
+     {
+                0,          0,          0,          0,
+                1,          1,          1,          1,
+       2147483647, 2147483647, 2147483647, 2147483647,
+       2147483648, 2147483648, 2147483648, 2147483648,
+     },
+   },
+   {
+     { 4294967293 },
+     {
+        4294967293, 4294967293, 4294967293, 4294967293,
+        4294967294, 4294967294, 4294967294, 4294967294,
+        4294967295, 4294967295, 4294967295, 4294967295,
+        4294967292, 4294967292, 4294967292, 4294967292,
+     },
+     {
+                 0,          0,          0,          0,
+                 1,          1,          1,          1,
+                 2,          2,          2,          2,
+        4294967295, 4294967295, 4294967295, 4294967295,
+     },
+   },
+ };
+ 
+ uint64_t TEST_BINARY_DATA(uint64_t, sub)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+       12, 12, 12, 12,
+       10, 10, 10, 10,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       11, 11, 11, 11,
+        9,  9,  9,  9,
+     },
+   },
+   {
+     { 9223372036854775807ull },
+     {
+       9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull,
+       9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull,
+       18446744073709551614ull, 18446744073709551614ull, 18446744073709551614ull, 18446744073709551614ull,
+       18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+     },
+     {
+                            0,                      0,                      0,                      0,
+                            1,                      1,                      1,                      1,
+       9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull,
+       9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull,
+     },
+   },
+   {
+     { 18446744073709551613ull },
+     {
+        18446744073709551613ull, 18446744073709551613ull, 18446744073709551613ull, 18446744073709551613ull,
+        18446744073709551614ull, 18446744073709551614ull, 18446744073709551614ull, 18446744073709551614ull,
+        18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+        18446744073709551612ull, 18446744073709551612ull, 18446744073709551612ull, 18446744073709551612ull,
+     },
+     {
+                              0,                       0,                       0,                       0,
+                              1,                       1,                       1,                       1,
+                              2,                       2,                       2,                       2,
+        18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+     },
+   },
+ };
  
  #endif
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h	Sun May 18 22:32:36 2025
*************** main ()
*** 13,19 ****
        T *in = TEST_DATA[i][1];
        T *expect = TEST_DATA[i][2];
  
!       TEST_RUN (out, in, x, N);
  
        for (k = 0; k < N; k++)
  	if (out[k] != expect[k])
--- 13,19 ----
        T *in = TEST_DATA[i][1];
        T *expect = TEST_DATA[i][2];
  
!       TEST_RUN (T, NAME, out, in, x, N);
  
        for (k = 0; k < N; k++)
  	if (out[k] != expect[k])
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int16_t, +)
- 
- /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int32_t, +)
- 
- /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int64_t, +)
- 
- /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-i8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int8_t, +)
- 
- /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint16_t, +)
- 
- /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint32_t, +)
- 
- /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint64_t, +)
- 
- /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-1-u8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint8_t, +)
- 
- /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int16_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int32_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int64_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-i8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int8_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint16_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint32_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint64_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-2-u8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint8_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int16_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int32_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int64_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-i8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(int8_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint16_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint32_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint64_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-3-u8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_0(uint8_t, +)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int16_t, +, VX_BINARY_BODY_X16)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int32_t, +, VX_BINARY_BODY_X4)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int64_t, +, VX_BINARY_BODY)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-i8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int8_t, +, VX_BINARY_BODY_X16)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint16_t, +, VX_BINARY_BODY_X16)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint32_t, +, VX_BINARY_BODY_X4)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint64_t, +, VX_BINARY_BODY)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-4-u8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=0" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint8_t, +, VX_BINARY_BODY_X16)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int16_t, +, VX_BINARY_BODY_X8)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int32_t, +, VX_BINARY_BODY_X4)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int64_t, +, VX_BINARY_BODY)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-i8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int8_t, +, VX_BINARY_BODY_X16)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint16_t, +, VX_BINARY_BODY_X8)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint32_t, +, VX_BINARY_BODY_X4)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint64_t, +, VX_BINARY_BODY)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-5-u8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=1" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint8_t, +, VX_BINARY_BODY_X16)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int16_t, +, VX_BINARY_BODY_X8)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int32_t, +, VX_BINARY_BODY_X4)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int64_t, +, VX_BINARY_BODY)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-i8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(int8_t, +, VX_BINARY_BODY_X16)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,9 ****
- 
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint16_t, +, VX_BINARY_BODY_X8)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u32.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint32_t, +, VX_BINARY_BODY_X4)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint64_t, +, VX_BINARY_BODY)
- 
- /* { dg-final { scan-assembler-not {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-6-u8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- /* { dg-do compile } */
- /* { dg-options "-march=rv64gcv_zvl128b -mabi=lp64d --param=gpr2vr-cost=2" } */
- 
- #include "vx_binary.h"
- 
- DEF_VX_BINARY_CASE_1(uint8_t, +, VX_BINARY_BODY_X16)
- 
- /* { dg-final { scan-assembler {vadd.vx} } } */
--- 0 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c	Sun May 18 22:32:36 2025
***************
*** 4,14 ****
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T int16_t
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +)
  
! #define TEST_DATA               TEST_BINARY_DATA_WRAP(T, vadd)
! #define TEST_RUN(out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(out, in, x, n)
  
  #include "vx_binary_run.h"
--- 4,15 ----
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T    int16_t
! #define NAME add
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +, NAME)
  
! #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
! #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
  
  #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c	Sun May 18 22:32:36 2025
***************
*** 4,14 ****
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T int32_t
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +)
  
! #define TEST_DATA               TEST_BINARY_DATA_WRAP(T, vadd)
! #define TEST_RUN(out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(out, in, x, n)
  
  #include "vx_binary_run.h"
--- 4,15 ----
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T    int32_t
! #define NAME add
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +, NAME)
  
! #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
! #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
  
  #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i64.c	Sun May 18 22:32:36 2025
***************
*** 4,14 ****
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T int64_t
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +)
  
! #define TEST_DATA               TEST_BINARY_DATA_WRAP(T, vadd)
! #define TEST_RUN(out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(out, in, x, n)
  
  #include "vx_binary_run.h"
--- 4,15 ----
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T    int64_t
! #define NAME add
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +, NAME)
  
! #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
! #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
  
  #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i8.c	Sun May 18 22:32:36 2025
***************
*** 4,14 ****
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T int8_t
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +)
  
! #define TEST_DATA               TEST_BINARY_DATA_WRAP(T, vadd)
! #define TEST_RUN(out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(out, in, x, n)
  
  #include "vx_binary_run.h"
--- 4,15 ----
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T    int8_t
! #define NAME add
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +, NAME)
  
! #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
! #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
  
  #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u16.c	Sun May 18 22:32:36 2025
***************
*** 4,14 ****
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T uint16_t
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +)
  
! #define TEST_DATA               TEST_BINARY_DATA_WRAP(T, vadd)
! #define TEST_RUN(out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(out, in, x, n)
  
  #include "vx_binary_run.h"
--- 4,15 ----
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T    uint16_t
! #define NAME add
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +, NAME)
  
! #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
! #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
  
  #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u32.c	Sun May 18 22:32:36 2025
***************
*** 4,14 ****
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T uint32_t
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +)
  
! #define TEST_DATA               TEST_BINARY_DATA_WRAP(T, vadd)
! #define TEST_RUN(out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(out, in, x, n)
  
  #include "vx_binary_run.h"
--- 4,15 ----
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T    uint32_t
! #define NAME add
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +, NAME)
  
! #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
! #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
  
  #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u64.c	Sun May 18 22:32:36 2025
***************
*** 4,14 ****
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T uint64_t
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +)
  
! #define TEST_DATA               TEST_BINARY_DATA_WRAP(T, vadd)
! #define TEST_RUN(out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(out, in, x, n)
  
  #include "vx_binary_run.h"
--- 4,15 ----
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T    uint64_t
! #define NAME add
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +, NAME)
  
! #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
! #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
  
  #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-u8.c	Sun May 18 22:32:36 2025
***************
*** 4,14 ****
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T uint8_t
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +)
  
! #define TEST_DATA               TEST_BINARY_DATA_WRAP(T, vadd)
! #define TEST_RUN(out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(out, in, x, n)
  
  #include "vx_binary_run.h"
--- 4,15 ----
  #include "vx_binary.h"
  #include "vx_binary_data.h"
  
! #define T    uint8_t
! #define NAME add
  
! DEF_VX_BINARY_CASE_0_WRAP(T, +, NAME)
  
! #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
! #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
  
  #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int16_t
+ #define NAME sub
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int32_t
+ #define NAME sub
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int64_t
+ #define NAME sub
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-i8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int8_t
+ #define NAME sub
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint16_t
+ #define NAME sub
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint32_t
+ #define NAME sub
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint64_t
+ #define NAME sub
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vsub-run-1-u8.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint8_t
+ #define NAME sub
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h	Sun May 18 22:32:36 2025
*************** sat_u_add_##T##_fmt_1 (T x, T y)
*** 13,18 ****
--- 13,19 ----
  {                                          \
    return (x + y) | (-(T)((T)(x + y) < x)); \
  }
+ #define DEF_SAT_U_ADD_FMT_1_WRAP(T) DEF_SAT_U_ADD_FMT_1(T)
  
  #define DEF_SAT_U_ADD_FMT_2(T)           \
  T __attribute__((noinline))              \
*************** sat_u_add_##T##_fmt_2 (T x, T y)
*** 20,25 ****
--- 21,27 ----
  {                                        \
    return (T)(x + y) >= x ? (x + y) : -1; \
  }
+ #define DEF_SAT_U_ADD_FMT_2_WRAP(T) DEF_SAT_U_ADD_FMT_2(T)
  
  #define DEF_SAT_U_ADD_FMT_3(T)                      \
  T __attribute__((noinline))                         \
*************** sat_u_add_##T##_fmt_3 (T x, T y)
*** 29,34 ****
--- 31,37 ----
    T overflow = __builtin_add_overflow (x, y, &ret); \
    return (T)(-overflow) | ret;                      \
  }
+ #define DEF_SAT_U_ADD_FMT_3_WRAP(T) DEF_SAT_U_ADD_FMT_3(T)
  
  #define DEF_SAT_U_ADD_FMT_4(T)                           \
  T __attribute__((noinline))                              \
*************** sat_u_add_##T##_fmt_4 (T x, T y)
*** 37,42 ****
--- 40,46 ----
    T ret;                                                 \
    return __builtin_add_overflow (x, y, &ret) ? -1 : ret; \
  }
+ #define DEF_SAT_U_ADD_FMT_4_WRAP(T) DEF_SAT_U_ADD_FMT_4(T)
  
  #define DEF_SAT_U_ADD_FMT_5(T)                                \
  T __attribute__((noinline))                                   \
*************** sat_u_add_##T##_fmt_5 (T x, T y)
*** 45,50 ****
--- 49,55 ----
    T ret;                                                      \
    return __builtin_add_overflow (x, y, &ret) == 0 ? ret : -1; \
  }
+ #define DEF_SAT_U_ADD_FMT_5_WRAP(T) DEF_SAT_U_ADD_FMT_5(T)
  
  #define DEF_SAT_U_ADD_FMT_6(T)          \
  T __attribute__((noinline))             \
*************** sat_u_add_##T##_fmt_6 (T x, T y)
*** 52,64 ****
--- 57,98 ----
  {                                       \
    return (T)(x + y) < x ? -1 : (x + y); \
  }
+ #define DEF_SAT_U_ADD_FMT_6_WRAP(T) DEF_SAT_U_ADD_FMT_6(T)
+ 
+ #define DEF_SAT_U_ADD_FMT_7(WT, T)     \
+ T __attribute__((noinline))            \
+ sat_u_add_##WT##_##T##_fmt_7(T x, T y) \
+ {                                      \
+   T max = -1;                          \
+   WT val = (WT)x + (WT)y;              \
+   return val > max ? max : (T)val;     \
+ }
+ #define DEF_SAT_U_ADD_FMT_7_WRAP(WT, T) DEF_SAT_U_ADD_FMT_7(WT, T)
  
  #define RUN_SAT_U_ADD_FMT_1(T, x, y) sat_u_add_##T##_fmt_1(x, y)
+ #define RUN_SAT_U_ADD_FMT_1_WRAP(T, x, y) RUN_SAT_U_ADD_FMT_1(T, x, y)
  #define RUN_SAT_U_ADD_FMT_2(T, x, y) sat_u_add_##T##_fmt_2(x, y)
+ #define RUN_SAT_U_ADD_FMT_2_WRAP(T, x, y) RUN_SAT_U_ADD_FMT_2(T, x, y)
  #define RUN_SAT_U_ADD_FMT_3(T, x, y) sat_u_add_##T##_fmt_3(x, y)
+ #define RUN_SAT_U_ADD_FMT_3_WRAP(T, x, y) RUN_SAT_U_ADD_FMT_3(T, x, y)
  #define RUN_SAT_U_ADD_FMT_4(T, x, y) sat_u_add_##T##_fmt_4(x, y)
+ #define RUN_SAT_U_ADD_FMT_4_WRAP(T, x, y) RUN_SAT_U_ADD_FMT_4(T, x, y)
  #define RUN_SAT_U_ADD_FMT_5(T, x, y) sat_u_add_##T##_fmt_5(x, y)
+ #define RUN_SAT_U_ADD_FMT_5_WRAP(T, x, y) RUN_SAT_U_ADD_FMT_5(T, x, y)
  #define RUN_SAT_U_ADD_FMT_6(T, x, y) sat_u_add_##T##_fmt_6(x, y)
+ #define RUN_SAT_U_ADD_FMT_6_WRAP(T, x, y) RUN_SAT_U_ADD_FMT_6(T, x, y)
+ #define RUN_SAT_U_ADD_FMT_7_FROM_U16(T, x, y) \
+   sat_u_add_uint16_t_##T##_fmt_7(x, y)
+ #define RUN_SAT_U_ADD_FMT_7_FROM_U16_WRAP(T, x, y) \
+   RUN_SAT_U_ADD_FMT_7_FROM_U16(T, x, y)
+ #define RUN_SAT_U_ADD_FMT_7_FROM_U32(T, x, y) \
+   sat_u_add_uint32_t_##T##_fmt_7(x, y)
+ #define RUN_SAT_U_ADD_FMT_7_FROM_U32_WRAP(T, x, y) \
+   RUN_SAT_U_ADD_FMT_7_FROM_U32(T, x, y)
+ #define RUN_SAT_U_ADD_FMT_7_FROM_U64(T, x, y) \
+   sat_u_add_uint64_t_##T##_fmt_7(x, y)
+ #define RUN_SAT_U_ADD_FMT_7_FROM_U64_WRAP(T, x, y) \
+   RUN_SAT_U_ADD_FMT_7_FROM_U64(T, x, y)
  
  #define DEF_SAT_U_ADD_IMM_FMT_1(T, IMM)      \
  T __attribute__((noinline))                  \
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h	Sun May 18 22:32:36 2025
*************** TEST_UNARY_STRUCT (uint16_t, uint32_t)
*** 32,37 ****
--- 32,42 ----
  TEST_UNARY_STRUCT (uint16_t, uint64_t)
  TEST_UNARY_STRUCT (uint32_t, uint64_t)
  
+ TEST_BINARY_STRUCT (uint8_t, usadd)
+ TEST_BINARY_STRUCT (uint16_t, usadd)
+ TEST_BINARY_STRUCT (uint32_t, usadd)
+ TEST_BINARY_STRUCT (uint64_t, usadd)
+ 
  TEST_BINARY_STRUCT (int8_t,  ssadd)
  TEST_BINARY_STRUCT (int16_t, ssadd)
  TEST_BINARY_STRUCT (int32_t, ssadd)
*************** TEST_UNARY_STRUCT_DECL(int32_t, int64_t)
*** 236,241 ****
--- 241,302 ----
    {-2147483648, -9223372036854775808ull},
  };
  
+ TEST_BINARY_STRUCT_DECL(uint8_t, usadd) TEST_BINARY_DATA(uint8_t, usadd)[] =
+ {
+   {      0,     0,      0, },
+   {      0,     1,      1, },
+   {      1,     1,      2, },
+   {      0,   254,    254, },
+   {      1,   254,    255, },
+   {      2,   254,    255, },
+   {      0,   255,    255, },
+   {      1,   255,    255, },
+   {      2,   255,    255, },
+   {    255,   255,    255, },
+ };
+ 
+ TEST_BINARY_STRUCT_DECL(uint16_t, usadd) TEST_BINARY_DATA(uint16_t, usadd)[] =
+ {
+   {      0,     0,      0, },
+   {      0,     1,      1, },
+   {      1,     1,      2, },
+   {      0, 65534,  65534, },
+   {      1, 65534,  65535, },
+   {      2, 65534,  65535, },
+   {      0, 65535,  65535, },
+   {      1, 65535,  65535, },
+   {      2, 65535,  65535, },
+   {  65535, 65535,  65535, },
+ };
+ 
+ TEST_BINARY_STRUCT_DECL(uint32_t, usadd) TEST_BINARY_DATA(uint32_t, usadd)[] =
+ {
+   {          0,          0,           0, },
+   {          0,          1,           1, },
+   {          1,          1,           2, },
+   {          0, 4294967294,  4294967294, },
+   {          1, 4294967294,  4294967295, },
+   {          2, 4294967294,  4294967295, },
+   {          0, 4294967295,  4294967295, },
+   {          1, 4294967295,  4294967295, },
+   {          2, 4294967295,  4294967295, },
+   { 4294967295, 4294967295,  4294967295, },
+ };
+ 
+ TEST_BINARY_STRUCT_DECL(uint64_t, usadd) TEST_BINARY_DATA(uint64_t, usadd)[] =
+ {
+   {                     0,                     0,                      0, },
+   {                     0,                     1,                      1, },
+   {                     1,                     1,                      2, },
+   {                     0, 18446744073709551614u,  18446744073709551614u, },
+   {                     1, 18446744073709551614u,  18446744073709551615u, },
+   {                     2, 18446744073709551614u,  18446744073709551615u, },
+   {                     0, 18446744073709551615u,  18446744073709551615u, },
+   {                     1, 18446744073709551615u,  18446744073709551615u, },
+   {                     2, 18446744073709551615u,  18446744073709551615u, },
+   { 18446744073709551615u, 18446744073709551615u,  18446744073709551615u, },
+ };
+ 
  TEST_BINARY_STRUCT_DECL(int8_t, ssadd) TEST_BINARY_DATA(int8_t, ssadd)[] =
  {
    {   0,    0,    0},
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized -fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "sat_arith.h"
+ 
+ /*
+ ** sat_u_add_uint32_t_uint16_t_fmt_7:
+ ** add\s+[atx][0-9]+,\s*a0,\s*a1
+ ** slli\s+[atx][0-9]+,\s*[atx][0-9]+,\s*48
+ ** srli\s+[atx][0-9]+,\s*[atx][0-9]+,\s*48
+ ** sltu\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** neg\s+[atx][0-9]+,\s*[atx][0-9]+
+ ** or\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** slli\s+a0,\s*a0,\s*48
+ ** srli\s+a0,\s*a0,\s*48
+ ** ret
+ */
+ DEF_SAT_U_ADD_FMT_7(uint32_t, uint16_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u16-from-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized -fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "sat_arith.h"
+ 
+ /*
+ ** sat_u_add_uint64_t_uint16_t_fmt_7:
+ ** add\s+[atx][0-9]+,\s*a0,\s*a1
+ ** slli\s+[atx][0-9]+,\s*[atx][0-9]+,\s*48
+ ** srli\s+[atx][0-9]+,\s*[atx][0-9]+,\s*48
+ ** sltu\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** neg\s+[atx][0-9]+,\s*[atx][0-9]+
+ ** or\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** slli\s+a0,\s*a0,\s*48
+ ** srli\s+a0,\s*a0,\s*48
+ ** ret
+ */
+ DEF_SAT_U_ADD_FMT_7(uint64_t, uint16_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u32-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u32-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u32-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u32-from-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized -fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "sat_arith.h"
+ 
+ /*
+ ** sat_u_add_uint64_t_uint32_t_fmt_7:
+ ** slli\s+[atx][0-9]+,\s*a0,\s*32
+ ** srli\s+[atx][0-9]+,\s*[atx][0-9]+,\s*32
+ ** add\s+[atx][0-9]+,\s*a[01],\s*a[01]
+ ** slli\s+[atx][0-9]+,\s*[atx][0-9],\s*32
+ ** srli\s+[atx][0-9]+,\s*[atx][0-9]+,\s*32
+ ** sltu\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** neg\s+[atx][0-9]+,\s*[atx][0-9]+
+ ** or\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** sext.w\s+a0,\s*a0
+ ** ret
+ */
+ DEF_SAT_U_ADD_FMT_7(uint64_t, uint32_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized -fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "sat_arith.h"
+ 
+ /*
+ ** sat_u_add_uint16_t_uint8_t_fmt_7:
+ ** add\s+[atx][0-9]+,\s*a0,\s*a1
+ ** andi\s+[atx][0-9]+,\s*[atx][0-9]+,\s*0xff
+ ** sltu\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** neg\s+[atx][0-9]+,\s*[atx][0-9]+
+ ** or\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** andi\s+a0,\s*a0,\s*0xff
+ ** ret
+ */
+ DEF_SAT_U_ADD_FMT_7(uint16_t, uint8_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized -fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "sat_arith.h"
+ 
+ /*
+ ** sat_u_add_uint32_t_uint8_t_fmt_7:
+ ** add\s+[atx][0-9]+,\s*a0,\s*a1
+ ** andi\s+[atx][0-9]+,\s*[atx][0-9]+,\s*0xff
+ ** sltu\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** neg\s+[atx][0-9]+,\s*[atx][0-9]+
+ ** or\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** andi\s+a0,\s*a0,\s*0xff
+ ** ret
+ */
+ DEF_SAT_U_ADD_FMT_7(uint32_t, uint8_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-7-u8-from-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized -fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "sat_arith.h"
+ 
+ /*
+ ** sat_u_add_uint64_t_uint8_t_fmt_7:
+ ** add\s+[atx][0-9]+,\s*a0,\s*a1
+ ** andi\s+[atx][0-9]+,\s*[atx][0-9]+,\s*0xff
+ ** sltu\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** neg\s+[atx][0-9]+,\s*[atx][0-9]+
+ ** or\s+[atx][0-9]+,\s*[atx][0-9]+,\s*[atx][0-9]+
+ ** andi\s+a0,\s*a0,\s*0xff
+ ** ret
+ */
+ DEF_SAT_U_ADD_FMT_7(uint64_t, uint8_t)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" } } */
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u16.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint16_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_1
  
! DEF_SAT_U_ADD_FMT_1(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0, 65534,  65534, },
!   {      1, 65534,  65535, },
!   {      2, 65534,  65535, },
!   {      0, 65535,  65535, },
!   {      1, 65535,  65535, },
!   {      2, 65535,  65535, },
!   {  65535, 65535,  65535, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint16_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_1_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_1_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u32.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint32_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_1
  
! DEF_SAT_U_ADD_FMT_1(T)
  
! T test_data[][3] = {
!   /*     arg_0,      arg_1,      expect */
!   {          0,          0,           0, },
!   {          0,          1,           1, },
!   {          1,          1,           2, },
!   {          0, 4294967294,  4294967294, },
!   {          1, 4294967294,  4294967295, },
!   {          2, 4294967294,  4294967295, },
!   {          0, 4294967295,  4294967295, },
!   {          1, 4294967295,  4294967295, },
!   {          2, 4294967295,  4294967295, },
!   { 4294967295, 4294967295,  4294967295, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint32_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_1_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_1_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u64.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint64_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_1
  
! DEF_SAT_U_ADD_FMT_1(T)
  
! T test_data[][3] = {
!   /*                arg_0,                 arg_1,                 expect */
!   {                     0,                     0,                      0, },
!   {                     0,                     1,                      1, },
!   {                     1,                     1,                      2, },
!   {                     0, 18446744073709551614u,  18446744073709551614u, },
!   {                     1, 18446744073709551614u,  18446744073709551615u, },
!   {                     2, 18446744073709551614u,  18446744073709551615u, },
!   {                     0, 18446744073709551615u,  18446744073709551615u, },
!   {                     1, 18446744073709551615u,  18446744073709551615u, },
!   {                     2, 18446744073709551615u,  18446744073709551615u, },
!   { 18446744073709551615u, 18446744073709551615u,  18446744073709551615u, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint64_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_1_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_1_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u8.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint8_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_1
  
! DEF_SAT_U_ADD_FMT_1(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0,   254,    254, },
!   {      1,   254,    255, },
!   {      2,   254,    255, },
!   {      0,   255,    255, },
!   {      1,   255,    255, },
!   {      2,   255,    255, },
!   {    255,   255,    255, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint8_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_1_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_1_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u16.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint16_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_2
  
! DEF_SAT_U_ADD_FMT_2(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0, 65534,  65534, },
!   {      1, 65534,  65535, },
!   {      2, 65534,  65535, },
!   {      0, 65535,  65535, },
!   {      1, 65535,  65535, },
!   {      2, 65535,  65535, },
!   {  65535, 65535,  65535, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint16_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_2_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_2_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u32.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint32_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_2
  
! DEF_SAT_U_ADD_FMT_2(T)
  
! T test_data[][3] = {
!   /*     arg_0,      arg_1,      expect */
!   {          0,          0,           0, },
!   {          0,          1,           1, },
!   {          1,          1,           2, },
!   {          0, 4294967294,  4294967294, },
!   {          1, 4294967294,  4294967295, },
!   {          2, 4294967294,  4294967295, },
!   {          0, 4294967295,  4294967295, },
!   {          1, 4294967295,  4294967295, },
!   {          2, 4294967295,  4294967295, },
!   { 4294967295, 4294967295,  4294967295, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint32_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_2_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_2_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u64.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint64_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_2
  
! DEF_SAT_U_ADD_FMT_2(T)
  
! T test_data[][3] = {
!   /*                arg_0,                 arg_1,                 expect */
!   {                     0,                     0,                      0, },
!   {                     0,                     1,                      1, },
!   {                     1,                     1,                      2, },
!   {                     0, 18446744073709551614u,  18446744073709551614u, },
!   {                     1, 18446744073709551614u,  18446744073709551615u, },
!   {                     2, 18446744073709551614u,  18446744073709551615u, },
!   {                     0, 18446744073709551615u,  18446744073709551615u, },
!   {                     1, 18446744073709551615u,  18446744073709551615u, },
!   {                     2, 18446744073709551615u,  18446744073709551615u, },
!   { 18446744073709551615u, 18446744073709551615u,  18446744073709551615u, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint64_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_2_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_2_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u8.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint8_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_2
  
! DEF_SAT_U_ADD_FMT_2(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0,   254,    254, },
!   {      1,   254,    255, },
!   {      2,   254,    255, },
!   {      0,   255,    255, },
!   {      1,   255,    255, },
!   {      2,   255,    255, },
!   {    255,   255,    255, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint8_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_2_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_2_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u16.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint16_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_3
  
! DEF_SAT_U_ADD_FMT_3(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0, 65534,  65534, },
!   {      1, 65534,  65535, },
!   {      2, 65534,  65535, },
!   {      0, 65535,  65535, },
!   {      1, 65535,  65535, },
!   {      2, 65535,  65535, },
!   {  65535, 65535,  65535, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint16_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_3_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_3_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u32.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint32_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_3
  
! DEF_SAT_U_ADD_FMT_3(T)
  
! T test_data[][3] = {
!   /*     arg_0,      arg_1,      expect */
!   {          0,          0,           0, },
!   {          0,          1,           1, },
!   {          1,          1,           2, },
!   {          0, 4294967294,  4294967294, },
!   {          1, 4294967294,  4294967295, },
!   {          2, 4294967294,  4294967295, },
!   {          0, 4294967295,  4294967295, },
!   {          1, 4294967295,  4294967295, },
!   {          2, 4294967295,  4294967295, },
!   { 4294967295, 4294967295,  4294967295, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint32_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_3_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_3_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u64.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint64_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_3
  
! DEF_SAT_U_ADD_FMT_3(T)
  
! T test_data[][3] = {
!   /*                arg_0,                 arg_1,                 expect */
!   {                     0,                     0,                      0, },
!   {                     0,                     1,                      1, },
!   {                     1,                     1,                      2, },
!   {                     0, 18446744073709551614u,  18446744073709551614u, },
!   {                     1, 18446744073709551614u,  18446744073709551615u, },
!   {                     2, 18446744073709551614u,  18446744073709551615u, },
!   {                     0, 18446744073709551615u,  18446744073709551615u, },
!   {                     1, 18446744073709551615u,  18446744073709551615u, },
!   {                     2, 18446744073709551615u,  18446744073709551615u, },
!   { 18446744073709551615u, 18446744073709551615u,  18446744073709551615u, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint64_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_3_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_3_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u8.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint8_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_3
  
! DEF_SAT_U_ADD_FMT_3(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0,   254,    254, },
!   {      1,   254,    255, },
!   {      2,   254,    255, },
!   {      0,   255,    255, },
!   {      1,   255,    255, },
!   {      2,   255,    255, },
!   {    255,   255,    255, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint8_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_3_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_3_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u16.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint16_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_4
  
! DEF_SAT_U_ADD_FMT_4(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0, 65534,  65534, },
!   {      1, 65534,  65535, },
!   {      2, 65534,  65535, },
!   {      0, 65535,  65535, },
!   {      1, 65535,  65535, },
!   {      2, 65535,  65535, },
!   {  65535, 65535,  65535, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint16_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_4_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_4_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u32.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint32_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_4
  
! DEF_SAT_U_ADD_FMT_4(T)
  
! T test_data[][3] = {
!   /*     arg_0,      arg_1,      expect */
!   {          0,          0,           0, },
!   {          0,          1,           1, },
!   {          1,          1,           2, },
!   {          0, 4294967294,  4294967294, },
!   {          1, 4294967294,  4294967295, },
!   {          2, 4294967294,  4294967295, },
!   {          0, 4294967295,  4294967295, },
!   {          1, 4294967295,  4294967295, },
!   {          2, 4294967295,  4294967295, },
!   { 4294967295, 4294967295,  4294967295, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint32_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_4_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_4_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u64.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint64_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_4
  
! DEF_SAT_U_ADD_FMT_4(T)
  
! T test_data[][3] = {
!   /*                arg_0,                 arg_1,                 expect */
!   {                     0,                     0,                      0, },
!   {                     0,                     1,                      1, },
!   {                     1,                     1,                      2, },
!   {                     0, 18446744073709551614u,  18446744073709551614u, },
!   {                     1, 18446744073709551614u,  18446744073709551615u, },
!   {                     2, 18446744073709551614u,  18446744073709551615u, },
!   {                     0, 18446744073709551615u,  18446744073709551615u, },
!   {                     1, 18446744073709551615u,  18446744073709551615u, },
!   {                     2, 18446744073709551615u,  18446744073709551615u, },
!   { 18446744073709551615u, 18446744073709551615u,  18446744073709551615u, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint64_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_4_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_4_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u8.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint8_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_4
  
! DEF_SAT_U_ADD_FMT_4(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0,   254,    254, },
!   {      1,   254,    255, },
!   {      2,   254,    255, },
!   {      0,   255,    255, },
!   {      1,   255,    255, },
!   {      2,   255,    255, },
!   {    255,   255,    255, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint8_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_4_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_4_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u16.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint16_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_5
  
! DEF_SAT_U_ADD_FMT_5(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0, 65534,  65534, },
!   {      1, 65534,  65535, },
!   {      2, 65534,  65535, },
!   {      0, 65535,  65535, },
!   {      1, 65535,  65535, },
!   {      2, 65535,  65535, },
!   {  65535, 65535,  65535, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint16_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_5_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_5_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u32.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint32_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_5
  
! DEF_SAT_U_ADD_FMT_5(T)
  
! T test_data[][3] = {
!   /*     arg_0,      arg_1,      expect */
!   {          0,          0,           0, },
!   {          0,          1,           1, },
!   {          1,          1,           2, },
!   {          0, 4294967294,  4294967294, },
!   {          1, 4294967294,  4294967295, },
!   {          2, 4294967294,  4294967295, },
!   {          0, 4294967295,  4294967295, },
!   {          1, 4294967295,  4294967295, },
!   {          2, 4294967295,  4294967295, },
!   { 4294967295, 4294967295,  4294967295, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint32_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_5_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_5_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u64.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint64_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_5
  
! DEF_SAT_U_ADD_FMT_5(T)
  
! T test_data[][3] = {
!   /*                arg_0,                 arg_1,                 expect */
!   {                     0,                     0,                      0, },
!   {                     0,                     1,                      1, },
!   {                     1,                     1,                      2, },
!   {                     0, 18446744073709551614u,  18446744073709551614u, },
!   {                     1, 18446744073709551614u,  18446744073709551615u, },
!   {                     2, 18446744073709551614u,  18446744073709551615u, },
!   {                     0, 18446744073709551615u,  18446744073709551615u, },
!   {                     1, 18446744073709551615u,  18446744073709551615u, },
!   {                     2, 18446744073709551615u,  18446744073709551615u, },
!   { 18446744073709551615u, 18446744073709551615u,  18446744073709551615u, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint64_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_5_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_5_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u8.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint8_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_5
  
! DEF_SAT_U_ADD_FMT_5(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0,   254,    254, },
!   {      1,   254,    255, },
!   {      2,   254,    255, },
!   {      0,   255,    255, },
!   {      1,   255,    255, },
!   {      2,   255,    255, },
!   {    255,   255,    255, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint8_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_5_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_5_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u16.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u16.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint16_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_6
  
! DEF_SAT_U_ADD_FMT_6(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0, 65534,  65534, },
!   {      1, 65534,  65535, },
!   {      2, 65534,  65535, },
!   {      0, 65535,  65535, },
!   {      1, 65535,  65535, },
!   {      2, 65535,  65535, },
!   {  65535, 65535,  65535, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint16_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_6_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_6_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u32.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u32.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint32_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_6
  
! DEF_SAT_U_ADD_FMT_6(T)
  
! T test_data[][3] = {
!   /*     arg_0,      arg_1,      expect */
!   {          0,          0,           0, },
!   {          0,          1,           1, },
!   {          1,          1,           2, },
!   {          0, 4294967294,  4294967294, },
!   {          1, 4294967294,  4294967295, },
!   {          2, 4294967294,  4294967295, },
!   {          0, 4294967295,  4294967295, },
!   {          1, 4294967295,  4294967295, },
!   {          2, 4294967295,  4294967295, },
!   { 4294967295, 4294967295,  4294967295, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint32_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_6_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_6_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u64.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u64.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint64_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_6
  
! DEF_SAT_U_ADD_FMT_6(T)
  
! T test_data[][3] = {
!   /*                arg_0,                 arg_1,                 expect */
!   {                     0,                     0,                      0, },
!   {                     0,                     1,                      1, },
!   {                     1,                     1,                      2, },
!   {                     0, 18446744073709551614u,  18446744073709551614u, },
!   {                     1, 18446744073709551614u,  18446744073709551615u, },
!   {                     2, 18446744073709551614u,  18446744073709551615u, },
!   {                     0, 18446744073709551615u,  18446744073709551615u, },
!   {                     1, 18446744073709551615u,  18446744073709551615u, },
!   {                     2, 18446744073709551615u,  18446744073709551615u, },
!   { 18446744073709551615u, 18446744073709551615u,  18446744073709551615u, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint64_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_6_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_6_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u8.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u8.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u8.c	Sun May 11 22:32:37 2025
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u8.c	Sun May 18 22:32:36 2025
***************
*** 2,25 ****
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
  
! #define T              uint8_t
! #define RUN_SAT_BINARY RUN_SAT_U_ADD_FMT_6
  
! DEF_SAT_U_ADD_FMT_6(T)
  
! T test_data[][3] = {
!   /* arg_0, arg_1, expect */
!   {      0,     0,      0, },
!   {      0,     1,      1, },
!   {      1,     1,      2, },
!   {      0,   254,    254, },
!   {      1,   254,    255, },
!   {      2,   254,    255, },
!   {      0,   255,    255, },
!   {      1,   255,    255, },
!   {      2,   255,    255, },
!   {    255,   255,    255, },
! };
  
! #include "scalar_sat_binary.h"
--- 2,15 ----
  /* { dg-additional-options "-std=c99" } */
  
  #include "sat_arith.h"
+ #include "sat_arith_data.h"
  
! #define T1               uint8_t
! #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
! #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
  
! DEF_SAT_U_ADD_FMT_6_WRAP(T1)
  
! #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_6_WRAP(T1, x, y)
  
! #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define T1               uint16_t
+ #define T2               uint32_t
+ #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
+ #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
+ 
+ DEF_SAT_U_ADD_FMT_7_WRAP(T2, T1)
+ 
+ #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_7_FROM_U32_WRAP(T1, x, y)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u16-from-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define T1               uint16_t
+ #define T2               uint64_t
+ #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
+ #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
+ 
+ DEF_SAT_U_ADD_FMT_7_WRAP(T2, T1)
+ 
+ #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_7_FROM_U64_WRAP(T1, x, y)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u32-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u32-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u32-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u32-from-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define T1               uint32_t
+ #define T2               uint64_t
+ #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
+ #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
+ 
+ DEF_SAT_U_ADD_FMT_7_WRAP(T2, T1)
+ 
+ #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_7_FROM_U64_WRAP(T1, x, y)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u16.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u16.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u16.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define T1               uint8_t
+ #define T2               uint16_t
+ #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
+ #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
+ 
+ DEF_SAT_U_ADD_FMT_7_WRAP(T2, T1)
+ 
+ #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_7_FROM_U16_WRAP(T1, x, y)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u32.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u32.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u32.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define T1               uint8_t
+ #define T2               uint32_t
+ #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
+ #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
+ 
+ DEF_SAT_U_ADD_FMT_7_WRAP(T2, T1)
+ 
+ #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_7_FROM_U32_WRAP(T1, x, y)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u64.c gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u64.c
*** gcc-16-20250511/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-7-u8-from-u64.c	Sun May 18 22:32:36 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define T1               uint8_t
+ #define T2               uint64_t
+ #define DATA             TEST_BINARY_DATA_WRAP(T1, usadd)
+ #define T                TEST_BINARY_STRUCT_DECL(T1, usadd)
+ 
+ DEF_SAT_U_ADD_FMT_7_WRAP(T2, T1)
+ 
+ #define RUN_BINARY(x, y) RUN_SAT_U_ADD_FMT_7_FROM_U64_WRAP(T1, x, y)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90 gcc-16-20250518/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90	Sun May 11 22:32:38 2025
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_3.f90	Sun May 18 22:32:38 2025
*************** contains
*** 25,30 ****
      allocate (array(1)%bigarr)
    end function
  end
! ! { dg-final { scan-tree-dump-times "builtin_malloc" 3 "original" } }
  ! { dg-final { scan-tree-dump-times "builtin_free" 3 "original" } }
! ! { dg-final { scan-tree-dump-times "while \\(1\\)" 4 "original" } }
--- 25,30 ----
      allocate (array(1)%bigarr)
    end function
  end
! ! { dg-final { scan-tree-dump-times "builtin_malloc" 4 "original" } }
  ! { dg-final { scan-tree-dump-times "builtin_free" 3 "original" } }
! ! { dg-final { scan-tree-dump-times "while \\(1\\)" 5 "original" } }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03 gcc-16-20250518/gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03	Sun May 11 22:32:38 2025
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/alloc_comp_class_3.f03	Sun May 18 22:32:38 2025
*************** contains
*** 45,55 ****
      type(c), value :: d
    end subroutine
  
!   type(c) function c_init()  ! { dg-warning "not set" }
    end function
  
    subroutine sub(d)
      type(u), value :: d
    end subroutine
  end program test_pr58586
- 
--- 45,54 ----
      type(c), value :: d
    end subroutine
  
!   type(c) function c_init()
    end function
  
    subroutine sub(d)
      type(u), value :: d
    end subroutine
  end program test_pr58586
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03 gcc-16-20250518/gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03	Sun May 11 22:32:38 2025
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/alloc_comp_class_4.f03	Sun May 18 22:32:38 2025
*************** contains
*** 51,64 ****
      type(t), value :: d
    end subroutine
  
!   type(c) function c_init() ! { dg-warning "not set" }
    end function
  
    class(c) function c_init2() ! { dg-warning "not set" }
      allocatable :: c_init2
    end function
  
!   type(c) function d_init(this) ! { dg-warning "not set" }
      class(d) :: this
    end function
  
--- 51,64 ----
      type(t), value :: d
    end subroutine
  
!   type(c) function c_init()
    end function
  
    class(c) function c_init2() ! { dg-warning "not set" }
      allocatable :: c_init2
    end function
  
!   type(c) function d_init(this)
      class(d) :: this
    end function
  
*************** program test_pr58586
*** 102,105 ****
    call add_c(oe%init())
    deallocate(oe)
  end program
- 
--- 102,104 ----
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03 gcc-16-20250518/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03	Sun May 11 22:32:38 2025
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/allocate_with_source_14.f03	Sun May 18 22:32:38 2025
*************** program main
*** 210,214 ****
    call v%free()
    deallocate(av)
  end program
! ! { dg-final { scan-tree-dump-times "__builtin_malloc" 22 "original" } }
  ! { dg-final { scan-tree-dump-times "__builtin_free" 29 "original" } }
--- 210,214 ----
    call v%free()
    deallocate(av)
  end program
! ! { dg-final { scan-tree-dump-times "__builtin_malloc" 23 "original" } }
  ! { dg-final { scan-tree-dump-times "__builtin_free" 29 "original" } }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/dec_math.f90 gcc-16-20250518/gcc/testsuite/gfortran.dg/dec_math.f90
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/dec_math.f90	Sun May 11 22:32:38 2025
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/dec_math.f90	Sun May 18 22:32:39 2025
***************
*** 5,10 ****
--- 5,16 ----
  ! Test extra math intrinsics formerly offered by -fdec-math,
  ! now included with -std=gnu or -std=legacy.
  !
+ ! Since Fortran 2023, the degree trigonometric functions (sind, cosd, ...)
+ ! are part of the standard; additionally, Fortran 2023 added a two-argument
+ ! version of atand as alias for atan2d.
+ !
+ ! Note that cotan and cotand are not part of Fortran 2023; hence, this file
+ ! still requires -std=gnu and cannot be compiled with -std=f2023.
  
  module dec_math
  
*************** q_ox = atand (xq * q_i1)
*** 505,510 ****
--- 511,579 ----
  #endif
  
  call cmpf(f_i1, f_oe,  f_oa, f_tol, "( ) fatand")
+ call cmpf(f_i1, f_oe,  f_oc, f_tol, "(c) fatand")
+ call cmpf(f_i1, f_oxe, f_ox, f_tol, "(x) fatand")
+ call cmpd(d_i1, d_oe,  d_oa, d_tol, "( ) datand")
+ call cmpd(d_i1, d_oe,  d_oc, d_tol, "(c) datand")
+ call cmpd(d_i1, d_oxe, d_ox, d_tol, "(x) atand")
+ #ifdef __GFC_REAL_10__
+ call cmpl(l_i1, l_oe,  l_oa, l_tol, "( ) latand")
+ call cmpl(l_i1, l_oe,  l_oc, l_tol, "(c) latand")
+ call cmpl(l_i1, l_oxe, l_ox, l_tol, "(x) latand")
+ #endif
+ #ifdef __GFC_REAL_16__
+ call cmpq(q_i1, q_oe,  q_oa, q_tol, "( ) qatand")
+ call cmpq(q_i1, q_oe,  q_oc, q_tol, "(c) qatand")
+ call cmpq(q_i1, q_oxe, q_ox, q_tol, "(x) qatand")
+ #endif
+ 
+ ! Input
+ f_i1 = 1.0_4
+ f_i2 = 2.0_4
+ d_i1 = 1.0_8
+ d_i2 = 2.0_8
+ #ifdef __GFC_REAL_10__
+ l_i1 = 1.0_10
+ l_i2 = 2.0_10
+ #endif
+ #ifdef __GFC_REAL_16__
+ q_i1 = 1.0_16
+ q_i2 = 2.0_16
+ #endif
+ 
+ ! Expected
+ f_oe  = r2d_f * atan2 (f_i1, f_i2)
+ f_oxe = r2d_f * atan2 (xf * f_i1, f_i2)
+ d_oe  = r2d_d * atan2 (d_i1, d_i2)
+ d_oxe = r2d_d * atan2 (xd * d_i1, d_i2)
+ #ifdef __GFC_REAL_10__
+ l_oe  = r2d_l * atan2 (l_i1, l_i2)
+ l_oxe = r2d_l * atan2 (xl * l_i1, l_i2)
+ #endif
+ #ifdef __GFC_REAL_16__
+ q_oe  = r2d_q * atan2 (q_i1, q_i2)
+ q_oxe = r2d_q * atan2 (xq * q_i1, q_i2)
+ #endif
+ 
+ ! Actual
+ f_oa = atand (f_i1, f_i2)
+ f_oc = atand (1.0_4, 2.0_4)
+ f_ox = atand (xf * f_i1, f_i2)
+ d_oa = atand (d_i1, d_i2)
+ d_oc = atand (1.0_8, 2.0_8)
+ d_ox = atand (xd * d_i1, d_i2)
+ #ifdef __GFC_REAL_10__
+ l_oa = atand (l_i1, l_i2)
+ l_oc = atand (1.0_10, 2.0_10)
+ l_ox = atand (xl * l_i1, l_i2)
+ #endif
+ #ifdef __GFC_REAL_16__
+ q_oa = atand (q_i1, q_i2)
+ q_oc = atand (1.0_16, 2.0_16)
+ q_ox = atand (xq * q_i1, q_i2)
+ #endif
+ 
+ call cmpf(f_i1, f_oe,  f_oa, f_tol, "( ) fatand")
  call cmpf(f_i1, f_oe,  f_oc, f_tol, "(c) fatand")
  call cmpf(f_i1, f_oxe, f_ox, f_tol, "(x) fatand")
  call cmpd(d_i1, d_oe,  d_oa, d_tol, "( ) datand")
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90 gcc-16-20250518/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90	Sun May 11 22:32:38 2025
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90	Sun May 18 22:32:39 2025
*************** contains
*** 129,133 ****
      prt_spec = name
    end function new_prt_spec3
  end program main
! ! { dg-final { scan-tree-dump-times "__builtin_malloc" 15 "original" } }
  ! { dg-final { scan-tree-dump-times "__builtin_free" 33 "original" } }
--- 129,133 ----
      prt_spec = name
    end function new_prt_spec3
  end program main
! ! { dg-final { scan-tree-dump-times "__builtin_malloc" 16 "original" } }
  ! { dg-final { scan-tree-dump-times "__builtin_free" 33 "original" } }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/derived_result_5.f90 gcc-16-20250518/gcc/testsuite/gfortran.dg/derived_result_5.f90
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/derived_result_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/derived_result_5.f90	Sun May 18 22:32:39 2025
***************
*** 0 ****
--- 1,123 ----
+ ! { dg-do run }
+ ! { dg-additional-options "-O2 -Wreturn-type" }
+ !
+ ! PR fortran/85750 - default-initialization and functions returning derived type
+ 
+ module bar
+   implicit none
+   type ilist
+     integer          :: count = 42
+     integer, pointer :: ptr(:) => null()
+   end type ilist
+ 
+   type jlist
+     real, allocatable :: a(:)
+     integer           :: count = 23
+   end type jlist
+ 
+ contains
+ 
+   function make_list(i)
+     integer,     intent(in)   :: i
+     type(ilist), dimension(2) :: make_list
+     make_list(i)%count = i
+   end function make_list
+ 
+   function make_list_res(i) result(list)
+     integer,     intent(in)   :: i
+     type(ilist), dimension(2) :: list
+     list(i)%count = i
+   end function make_list_res
+ 
+   function make_jlist(i)
+     integer,     intent(in)   :: i
+     type(jlist), dimension(2) :: make_jlist
+     make_jlist(i)%count = i
+   end function make_jlist
+ 
+   function make_jlist_res(i) result(list)
+     integer,     intent(in)   :: i
+     type(jlist), dimension(2) :: list
+     list(i)%count = i
+   end function make_jlist_res
+ 
+   function empty_ilist()
+     type(ilist), dimension(2) :: empty_ilist
+   end function
+ 
+   function empty_jlist()
+     type(jlist), dimension(2) :: empty_jlist
+   end function
+ 
+   function empty_ilist_res() result (res)
+     type(ilist), dimension(2) :: res
+   end function
+ 
+   function empty_jlist_res() result (res)
+     type(jlist), dimension(2) :: res
+   end function
+ 
+ end module bar
+ 
+ program foo
+   use bar
+   implicit none
+   type(ilist)              :: mylist(2) = ilist(count=-2)
+   type(jlist), allocatable :: yourlist(:)
+ 
+   mylist = ilist(count=-1)
+   if (any (mylist%count /= [-1,-1])) stop 1
+   mylist = empty_ilist()
+   if (any (mylist%count /= [42,42])) stop 2
+   mylist = ilist(count=-1)
+   mylist = empty_ilist_res()
+   if (any (mylist%count /= [42,42])) stop 3
+ 
+   allocate(yourlist(1:2))
+   if (any (yourlist%count /= [23,23])) stop 4
+   yourlist = jlist(count=-1)
+   if (any (yourlist%count /= [-1,-1])) stop 5
+   yourlist = empty_jlist()
+   if (any (yourlist%count /= [23,23])) stop 6
+   yourlist = jlist(count=-1)
+   yourlist = empty_jlist_res()
+   if (any (yourlist%count /= [23,23])) stop 7
+ 
+   mylist = make_list(1)
+   if (any (mylist%count /= [1,42])) stop 11
+   mylist = make_list(2)
+   if (any (mylist%count /= [42,2])) stop 12
+   mylist = (make_list(1))
+   if (any (mylist%count /= [1,42])) stop 13
+   mylist = [make_list(2)]
+   if (any (mylist%count /= [42,2])) stop 14
+ 
+   mylist = make_list_res(1)
+   if (any (mylist%count /= [1,42])) stop 21
+   mylist = make_list_res(2)
+   if (any (mylist%count /= [42,2])) stop 22
+   mylist = (make_list_res(1))
+   if (any (mylist%count /= [1,42])) stop 23
+   mylist = [make_list_res(2)]
+   if (any (mylist%count /= [42,2])) stop 24
+ 
+   yourlist = make_jlist(1)
+   if (any (yourlist%count /= [1,23])) stop 31
+   yourlist = make_jlist(2)
+   if (any (yourlist%count /= [23,2])) stop 32
+   yourlist = (make_jlist(1))
+   if (any (yourlist%count /= [1,23])) stop 33
+   yourlist = [make_jlist(2)]
+   if (any (yourlist%count /= [23,2])) stop 34
+ 
+   yourlist = make_jlist_res(1)
+   if (any (yourlist%count /= [1,23])) stop 41
+   yourlist = make_jlist_res(2)
+   if (any (yourlist%count /= [23,2])) stop 42
+   yourlist = (make_jlist_res(1))
+   if (any (yourlist%count /= [1,23])) stop 43
+   yourlist = [make_jlist_res(2)]
+   if (any (yourlist%count /= [23,2])) stop 44
+ 
+   deallocate (yourlist)
+ end program foo
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/pr120191_1.f90 gcc-16-20250518/gcc/testsuite/gfortran.dg/pr120191_1.f90
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/pr120191_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/pr120191_1.f90	Sun May 18 22:32:41 2025
***************
*** 0 ****
--- 1,614 ----
+ ! PR fortran/120191
+ ! { dg-do run }
+ 
+   integer(kind=1) :: a1(10, 10, 10), b1(10)
+   integer(kind=2) :: a2(10, 10, 10), b2(10)
+   integer(kind=4) :: a4(10, 10, 10), b4(10)
+   integer(kind=8) :: a8(10, 10, 10), b8(10)
+   real(kind=4) :: r4(10, 10, 10), s4(10)
+   real(kind=8) :: r8(10, 10, 10), s8(10)
+   logical :: l1(10, 10, 10), l2(10), l3
+   l1 = .true.
+   l2 = .true.
+   l3 = .true.
+   a1 = 0
+   if (any (maxloc (a1) .ne. 1)) stop 1
+   if (any (maxloc (a1, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (a1, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (a1, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (a1, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (a1, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (maxloc (a1, 1) .ne. 1)) stop 7
+   if (any (maxloc (a1, 1, back=.false.) .ne. 1)) stop 8
+   if (any (maxloc (a1, 1, back=.true.) .ne. 10)) stop 9
+   if (any (maxloc (a1, 1, kind=1) .ne. 1)) stop 10
+   if (any (maxloc (a1, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (maxloc (a1, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (maxloc (a1, 1, l1) .ne. 1)) stop 13
+   if (any (maxloc (a1, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (maxloc (a1, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (maxloc (a1, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (maxloc (a1, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (maxloc (a1, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (maxloc (a1, 1, l3) .ne. 1)) stop 19
+   if (any (maxloc (a1, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (maxloc (a1, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (maxloc (a1, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (maxloc (a1, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (maxloc (a1, 1, l3, 2, .true.) .ne. 10)) stop 24
+   b1 = 0
+   if (any (maxloc (b1) .ne. 1)) stop 1
+   if (any (maxloc (b1, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (b1, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (b1, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (b1, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (b1, kind=8, back=.true.) .ne. 10)) stop 6
+   if (maxloc (b1, 1) .ne. 1) stop 7
+   if (maxloc (b1, 1, back=.false.) .ne. 1) stop 8
+   if (maxloc (b1, 1, back=.true.) .ne. 10) stop 9
+   if (maxloc (b1, 1, kind=1) .ne. 1) stop 10
+   if (maxloc (b1, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (maxloc (b1, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (maxloc (b1, 1, l2) .ne. 1) stop 13
+   if (maxloc (b1, 1, l2, back=.false.) .ne. 1) stop 14
+   if (maxloc (b1, 1, l2, back=.true.) .ne. 10) stop 15
+   if (maxloc (b1, 1, l2, kind=8) .ne. 1) stop 16
+   if (maxloc (b1, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (maxloc (b1, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (maxloc (b1, 1, l3) .ne. 1) stop 19
+   if (maxloc (b1, 1, l3, back=.false.) .ne. 1) stop 20
+   if (maxloc (b1, 1, l3, back=.true.) .ne. 10) stop 21
+   if (maxloc (b1, 1, l3, kind=8) .ne. 1) stop 22
+   if (maxloc (b1, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (maxloc (b1, 1, l3, 2, .true.) .ne. 10) stop 24
+   a2 = 0
+   if (any (maxloc (a2) .ne. 1)) stop 1
+   if (any (maxloc (a2, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (a2, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (a2, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (a2, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (a2, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (maxloc (a2, 1) .ne. 1)) stop 7
+   if (any (maxloc (a2, 1, back=.false.) .ne. 1)) stop 8
+   if (any (maxloc (a2, 1, back=.true.) .ne. 10)) stop 9
+   if (any (maxloc (a2, 1, kind=1) .ne. 1)) stop 10
+   if (any (maxloc (a2, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (maxloc (a2, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (maxloc (a2, 1, l1) .ne. 1)) stop 13
+   if (any (maxloc (a2, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (maxloc (a2, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (maxloc (a2, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (maxloc (a2, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (maxloc (a2, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (maxloc (a2, 1, l3) .ne. 1)) stop 19
+   if (any (maxloc (a2, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (maxloc (a2, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (maxloc (a2, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (maxloc (a2, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (maxloc (a2, 1, l3, 2, .true.) .ne. 10)) stop 24
+   b2 = 0
+   if (any (maxloc (b2) .ne. 1)) stop 1
+   if (any (maxloc (b2, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (b2, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (b2, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (b2, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (b2, kind=8, back=.true.) .ne. 10)) stop 6
+   if (maxloc (b2, 1) .ne. 1) stop 7
+   if (maxloc (b2, 1, back=.false.) .ne. 1) stop 8
+   if (maxloc (b2, 1, back=.true.) .ne. 10) stop 9
+   if (maxloc (b2, 1, kind=1) .ne. 1) stop 10
+   if (maxloc (b2, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (maxloc (b2, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (maxloc (b2, 1, l2) .ne. 1) stop 13
+   if (maxloc (b2, 1, l2, back=.false.) .ne. 1) stop 14
+   if (maxloc (b2, 1, l2, back=.true.) .ne. 10) stop 15
+   if (maxloc (b2, 1, l2, kind=8) .ne. 1) stop 16
+   if (maxloc (b2, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (maxloc (b2, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (maxloc (b2, 1, l3) .ne. 1) stop 19
+   if (maxloc (b2, 1, l3, back=.false.) .ne. 1) stop 20
+   if (maxloc (b2, 1, l3, back=.true.) .ne. 10) stop 21
+   if (maxloc (b2, 1, l3, kind=8) .ne. 1) stop 22
+   if (maxloc (b2, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (maxloc (b2, 1, l3, 2, .true.) .ne. 10) stop 24
+   a4 = 0
+   if (any (maxloc (a4) .ne. 1)) stop 1
+   if (any (maxloc (a4, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (a4, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (a4, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (a4, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (a4, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (maxloc (a4, 1) .ne. 1)) stop 7
+   if (any (maxloc (a4, 1, back=.false.) .ne. 1)) stop 8
+   if (any (maxloc (a4, 1, back=.true.) .ne. 10)) stop 9
+   if (any (maxloc (a4, 1, kind=1) .ne. 1)) stop 10
+   if (any (maxloc (a4, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (maxloc (a4, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (maxloc (a4, 1, l1) .ne. 1)) stop 13
+   if (any (maxloc (a4, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (maxloc (a4, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (maxloc (a4, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (maxloc (a4, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (maxloc (a4, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (maxloc (a4, 1, l3) .ne. 1)) stop 19
+   if (any (maxloc (a4, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (maxloc (a4, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (maxloc (a4, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (maxloc (a4, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (maxloc (a4, 1, l3, 2, .true.) .ne. 10)) stop 24
+   b4 = 0
+   if (any (maxloc (b4) .ne. 1)) stop 1
+   if (any (maxloc (b4, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (b4, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (b4, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (b4, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (b4, kind=8, back=.true.) .ne. 10)) stop 6
+   if (maxloc (b4, 1) .ne. 1) stop 7
+   if (maxloc (b4, 1, back=.false.) .ne. 1) stop 8
+   if (maxloc (b4, 1, back=.true.) .ne. 10) stop 9
+   if (maxloc (b4, 1, kind=1) .ne. 1) stop 10
+   if (maxloc (b4, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (maxloc (b4, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (maxloc (b4, 1, l2) .ne. 1) stop 13
+   if (maxloc (b4, 1, l2, back=.false.) .ne. 1) stop 14
+   if (maxloc (b4, 1, l2, back=.true.) .ne. 10) stop 15
+   if (maxloc (b4, 1, l2, kind=8) .ne. 1) stop 16
+   if (maxloc (b4, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (maxloc (b4, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (maxloc (b4, 1, l3) .ne. 1) stop 19
+   if (maxloc (b4, 1, l3, back=.false.) .ne. 1) stop 20
+   if (maxloc (b4, 1, l3, back=.true.) .ne. 10) stop 21
+   if (maxloc (b4, 1, l3, kind=8) .ne. 1) stop 22
+   if (maxloc (b4, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (maxloc (b4, 1, l3, 2, .true.) .ne. 10) stop 24
+   a8 = 0
+   if (any (maxloc (a8) .ne. 1)) stop 1
+   if (any (maxloc (a8, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (a8, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (a8, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (a8, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (a8, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (maxloc (a8, 1) .ne. 1)) stop 7
+   if (any (maxloc (a8, 1, back=.false.) .ne. 1)) stop 8
+   if (any (maxloc (a8, 1, back=.true.) .ne. 10)) stop 9
+   if (any (maxloc (a8, 1, kind=1) .ne. 1)) stop 10
+   if (any (maxloc (a8, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (maxloc (a8, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (maxloc (a8, 1, l1) .ne. 1)) stop 13
+   if (any (maxloc (a8, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (maxloc (a8, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (maxloc (a8, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (maxloc (a8, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (maxloc (a8, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (maxloc (a8, 1, l3) .ne. 1)) stop 19
+   if (any (maxloc (a8, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (maxloc (a8, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (maxloc (a8, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (maxloc (a8, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (maxloc (a8, 1, l3, 2, .true.) .ne. 10)) stop 24
+   b8 = 0
+   if (any (maxloc (b8) .ne. 1)) stop 1
+   if (any (maxloc (b8, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (b8, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (b8, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (b8, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (b8, kind=8, back=.true.) .ne. 10)) stop 6
+   if (maxloc (b8, 1) .ne. 1) stop 7
+   if (maxloc (b8, 1, back=.false.) .ne. 1) stop 8
+   if (maxloc (b8, 1, back=.true.) .ne. 10) stop 9
+   if (maxloc (b8, 1, kind=1) .ne. 1) stop 10
+   if (maxloc (b8, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (maxloc (b8, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (maxloc (b8, 1, l2) .ne. 1) stop 13
+   if (maxloc (b8, 1, l2, back=.false.) .ne. 1) stop 14
+   if (maxloc (b8, 1, l2, back=.true.) .ne. 10) stop 15
+   if (maxloc (b8, 1, l2, kind=8) .ne. 1) stop 16
+   if (maxloc (b8, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (maxloc (b8, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (maxloc (b8, 1, l3) .ne. 1) stop 19
+   if (maxloc (b8, 1, l3, back=.false.) .ne. 1) stop 20
+   if (maxloc (b8, 1, l3, back=.true.) .ne. 10) stop 21
+   if (maxloc (b8, 1, l3, kind=8) .ne. 1) stop 22
+   if (maxloc (b8, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (maxloc (b8, 1, l3, 2, .true.) .ne. 10) stop 24
+   r4 = 0.0
+   if (any (maxloc (r4) .ne. 1)) stop 1
+   if (any (maxloc (r4, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (r4, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (r4, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (r4, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (r4, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (maxloc (r4, 1) .ne. 1)) stop 7
+   if (any (maxloc (r4, 1, back=.false.) .ne. 1)) stop 8
+   if (any (maxloc (r4, 1, back=.true.) .ne. 10)) stop 9
+   if (any (maxloc (r4, 1, kind=1) .ne. 1)) stop 10
+   if (any (maxloc (r4, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (maxloc (r4, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (maxloc (r4, 1, l1) .ne. 1)) stop 13
+   if (any (maxloc (r4, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (maxloc (r4, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (maxloc (r4, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (maxloc (r4, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (maxloc (r4, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (maxloc (r4, 1, l3) .ne. 1)) stop 19
+   if (any (maxloc (r4, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (maxloc (r4, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (maxloc (r4, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (maxloc (r4, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (maxloc (r4, 1, l3, 2, .true.) .ne. 10)) stop 24
+   s4 = 0.0
+   if (any (maxloc (s4) .ne. 1)) stop 1
+   if (any (maxloc (s4, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (s4, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (s4, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (s4, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (s4, kind=8, back=.true.) .ne. 10)) stop 6
+   if (maxloc (s4, 1) .ne. 1) stop 7
+   if (maxloc (s4, 1, back=.false.) .ne. 1) stop 8
+   if (maxloc (s4, 1, back=.true.) .ne. 10) stop 9
+   if (maxloc (s4, 1, kind=1) .ne. 1) stop 10
+   if (maxloc (s4, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (maxloc (s4, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (maxloc (s4, 1, l2) .ne. 1) stop 13
+   if (maxloc (s4, 1, l2, back=.false.) .ne. 1) stop 14
+   if (maxloc (s4, 1, l2, back=.true.) .ne. 10) stop 15
+   if (maxloc (s4, 1, l2, kind=8) .ne. 1) stop 16
+   if (maxloc (s4, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (maxloc (s4, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (maxloc (s4, 1, l3) .ne. 1) stop 19
+   if (maxloc (s4, 1, l3, back=.false.) .ne. 1) stop 20
+   if (maxloc (s4, 1, l3, back=.true.) .ne. 10) stop 21
+   if (maxloc (s4, 1, l3, kind=8) .ne. 1) stop 22
+   if (maxloc (s4, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (maxloc (s4, 1, l3, 2, .true.) .ne. 10) stop 24
+   r8 = 0.0
+   if (any (maxloc (r8) .ne. 1)) stop 1
+   if (any (maxloc (r8, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (r8, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (r8, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (r8, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (r8, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (maxloc (r8, 1) .ne. 1)) stop 7
+   if (any (maxloc (r8, 1, back=.false.) .ne. 1)) stop 8
+   if (any (maxloc (r8, 1, back=.true.) .ne. 10)) stop 9
+   if (any (maxloc (r8, 1, kind=1) .ne. 1)) stop 10
+   if (any (maxloc (r8, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (maxloc (r8, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (maxloc (r8, 1, l1) .ne. 1)) stop 13
+   if (any (maxloc (r8, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (maxloc (r8, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (maxloc (r8, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (maxloc (r8, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (maxloc (r8, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (maxloc (r8, 1, l3) .ne. 1)) stop 19
+   if (any (maxloc (r8, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (maxloc (r8, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (maxloc (r8, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (maxloc (r8, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (maxloc (r8, 1, l3, 2, .true.) .ne. 10)) stop 24
+   s8 = 0.0
+   if (any (maxloc (s8) .ne. 1)) stop 1
+   if (any (maxloc (s8, back=.false.) .ne. 1)) stop 2
+   if (any (maxloc (s8, back=.true.) .ne. 10)) stop 3
+   if (any (maxloc (s8, kind=2) .ne. 1)) stop 4
+   if (any (maxloc (s8, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (maxloc (s8, kind=8, back=.true.) .ne. 10)) stop 6
+   if (maxloc (s8, 1) .ne. 1) stop 7
+   if (maxloc (s8, 1, back=.false.) .ne. 1) stop 8
+   if (maxloc (s8, 1, back=.true.) .ne. 10) stop 9
+   if (maxloc (s8, 1, kind=1) .ne. 1) stop 10
+   if (maxloc (s8, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (maxloc (s8, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (maxloc (s8, 1, l2) .ne. 1) stop 13
+   if (maxloc (s8, 1, l2, back=.false.) .ne. 1) stop 14
+   if (maxloc (s8, 1, l2, back=.true.) .ne. 10) stop 15
+   if (maxloc (s8, 1, l2, kind=8) .ne. 1) stop 16
+   if (maxloc (s8, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (maxloc (s8, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (maxloc (s8, 1, l3) .ne. 1) stop 19
+   if (maxloc (s8, 1, l3, back=.false.) .ne. 1) stop 20
+   if (maxloc (s8, 1, l3, back=.true.) .ne. 10) stop 21
+   if (maxloc (s8, 1, l3, kind=8) .ne. 1) stop 22
+   if (maxloc (s8, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (maxloc (s8, 1, l3, 2, .true.) .ne. 10) stop 24
+   a1 = 0
+   if (any (minloc (a1) .ne. 1)) stop 1
+   if (any (minloc (a1, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (a1, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (a1, kind=2) .ne. 1)) stop 4
+   if (any (minloc (a1, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (a1, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (minloc (a1, 1) .ne. 1)) stop 7
+   if (any (minloc (a1, 1, back=.false.) .ne. 1)) stop 8
+   if (any (minloc (a1, 1, back=.true.) .ne. 10)) stop 9
+   if (any (minloc (a1, 1, kind=1) .ne. 1)) stop 10
+   if (any (minloc (a1, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (minloc (a1, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (minloc (a1, 1, l1) .ne. 1)) stop 13
+   if (any (minloc (a1, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (minloc (a1, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (minloc (a1, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (minloc (a1, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (minloc (a1, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (minloc (a1, 1, l3) .ne. 1)) stop 19
+   if (any (minloc (a1, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (minloc (a1, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (minloc (a1, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (minloc (a1, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (minloc (a1, 1, l3, 2, .true.) .ne. 10)) stop 24
+   b1 = 0
+   if (any (minloc (b1) .ne. 1)) stop 1
+   if (any (minloc (b1, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (b1, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (b1, kind=2) .ne. 1)) stop 4
+   if (any (minloc (b1, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (b1, kind=8, back=.true.) .ne. 10)) stop 6
+   if (minloc (b1, 1) .ne. 1) stop 7
+   if (minloc (b1, 1, back=.false.) .ne. 1) stop 8
+   if (minloc (b1, 1, back=.true.) .ne. 10) stop 9
+   if (minloc (b1, 1, kind=1) .ne. 1) stop 10
+   if (minloc (b1, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (minloc (b1, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (minloc (b1, 1, l2) .ne. 1) stop 13
+   if (minloc (b1, 1, l2, back=.false.) .ne. 1) stop 14
+   if (minloc (b1, 1, l2, back=.true.) .ne. 10) stop 15
+   if (minloc (b1, 1, l2, kind=8) .ne. 1) stop 16
+   if (minloc (b1, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (minloc (b1, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (minloc (b1, 1, l3) .ne. 1) stop 19
+   if (minloc (b1, 1, l3, back=.false.) .ne. 1) stop 20
+   if (minloc (b1, 1, l3, back=.true.) .ne. 10) stop 21
+   if (minloc (b1, 1, l3, kind=8) .ne. 1) stop 22
+   if (minloc (b1, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (minloc (b1, 1, l3, 2, .true.) .ne. 10) stop 24
+   a2 = 0
+   if (any (minloc (a2) .ne. 1)) stop 1
+   if (any (minloc (a2, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (a2, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (a2, kind=2) .ne. 1)) stop 4
+   if (any (minloc (a2, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (a2, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (minloc (a2, 1) .ne. 1)) stop 7
+   if (any (minloc (a2, 1, back=.false.) .ne. 1)) stop 8
+   if (any (minloc (a2, 1, back=.true.) .ne. 10)) stop 9
+   if (any (minloc (a2, 1, kind=1) .ne. 1)) stop 10
+   if (any (minloc (a2, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (minloc (a2, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (minloc (a2, 1, l1) .ne. 1)) stop 13
+   if (any (minloc (a2, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (minloc (a2, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (minloc (a2, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (minloc (a2, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (minloc (a2, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (minloc (a2, 1, l3) .ne. 1)) stop 19
+   if (any (minloc (a2, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (minloc (a2, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (minloc (a2, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (minloc (a2, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (minloc (a2, 1, l3, 2, .true.) .ne. 10)) stop 24
+   b2 = 0
+   if (any (minloc (b2) .ne. 1)) stop 1
+   if (any (minloc (b2, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (b2, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (b2, kind=2) .ne. 1)) stop 4
+   if (any (minloc (b2, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (b2, kind=8, back=.true.) .ne. 10)) stop 6
+   if (minloc (b2, 1) .ne. 1) stop 7
+   if (minloc (b2, 1, back=.false.) .ne. 1) stop 8
+   if (minloc (b2, 1, back=.true.) .ne. 10) stop 9
+   if (minloc (b2, 1, kind=1) .ne. 1) stop 10
+   if (minloc (b2, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (minloc (b2, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (minloc (b2, 1, l2) .ne. 1) stop 13
+   if (minloc (b2, 1, l2, back=.false.) .ne. 1) stop 14
+   if (minloc (b2, 1, l2, back=.true.) .ne. 10) stop 15
+   if (minloc (b2, 1, l2, kind=8) .ne. 1) stop 16
+   if (minloc (b2, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (minloc (b2, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (minloc (b2, 1, l3) .ne. 1) stop 19
+   if (minloc (b2, 1, l3, back=.false.) .ne. 1) stop 20
+   if (minloc (b2, 1, l3, back=.true.) .ne. 10) stop 21
+   if (minloc (b2, 1, l3, kind=8) .ne. 1) stop 22
+   if (minloc (b2, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (minloc (b2, 1, l3, 2, .true.) .ne. 10) stop 24
+   a4 = 0
+   if (any (minloc (a4) .ne. 1)) stop 1
+   if (any (minloc (a4, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (a4, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (a4, kind=2) .ne. 1)) stop 4
+   if (any (minloc (a4, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (a4, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (minloc (a4, 1) .ne. 1)) stop 7
+   if (any (minloc (a4, 1, back=.false.) .ne. 1)) stop 8
+   if (any (minloc (a4, 1, back=.true.) .ne. 10)) stop 9
+   if (any (minloc (a4, 1, kind=1) .ne. 1)) stop 10
+   if (any (minloc (a4, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (minloc (a4, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (minloc (a4, 1, l1) .ne. 1)) stop 13
+   if (any (minloc (a4, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (minloc (a4, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (minloc (a4, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (minloc (a4, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (minloc (a4, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (minloc (a4, 1, l3) .ne. 1)) stop 19
+   if (any (minloc (a4, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (minloc (a4, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (minloc (a4, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (minloc (a4, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (minloc (a4, 1, l3, 2, .true.) .ne. 10)) stop 24
+   b4 = 0
+   if (any (minloc (b4) .ne. 1)) stop 1
+   if (any (minloc (b4, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (b4, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (b4, kind=2) .ne. 1)) stop 4
+   if (any (minloc (b4, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (b4, kind=8, back=.true.) .ne. 10)) stop 6
+   if (minloc (b4, 1) .ne. 1) stop 7
+   if (minloc (b4, 1, back=.false.) .ne. 1) stop 8
+   if (minloc (b4, 1, back=.true.) .ne. 10) stop 9
+   if (minloc (b4, 1, kind=1) .ne. 1) stop 10
+   if (minloc (b4, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (minloc (b4, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (minloc (b4, 1, l2) .ne. 1) stop 13
+   if (minloc (b4, 1, l2, back=.false.) .ne. 1) stop 14
+   if (minloc (b4, 1, l2, back=.true.) .ne. 10) stop 15
+   if (minloc (b4, 1, l2, kind=8) .ne. 1) stop 16
+   if (minloc (b4, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (minloc (b4, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (minloc (b4, 1, l3) .ne. 1) stop 19
+   if (minloc (b4, 1, l3, back=.false.) .ne. 1) stop 20
+   if (minloc (b4, 1, l3, back=.true.) .ne. 10) stop 21
+   if (minloc (b4, 1, l3, kind=8) .ne. 1) stop 22
+   if (minloc (b4, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (minloc (b4, 1, l3, 2, .true.) .ne. 10) stop 24
+   a8 = 0
+   if (any (minloc (a8) .ne. 1)) stop 1
+   if (any (minloc (a8, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (a8, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (a8, kind=2) .ne. 1)) stop 4
+   if (any (minloc (a8, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (a8, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (minloc (a8, 1) .ne. 1)) stop 7
+   if (any (minloc (a8, 1, back=.false.) .ne. 1)) stop 8
+   if (any (minloc (a8, 1, back=.true.) .ne. 10)) stop 9
+   if (any (minloc (a8, 1, kind=1) .ne. 1)) stop 10
+   if (any (minloc (a8, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (minloc (a8, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (minloc (a8, 1, l1) .ne. 1)) stop 13
+   if (any (minloc (a8, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (minloc (a8, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (minloc (a8, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (minloc (a8, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (minloc (a8, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (minloc (a8, 1, l3) .ne. 1)) stop 19
+   if (any (minloc (a8, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (minloc (a8, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (minloc (a8, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (minloc (a8, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (minloc (a8, 1, l3, 2, .true.) .ne. 10)) stop 24
+   b8 = 0
+   if (any (minloc (b8) .ne. 1)) stop 1
+   if (any (minloc (b8, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (b8, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (b8, kind=2) .ne. 1)) stop 4
+   if (any (minloc (b8, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (b8, kind=8, back=.true.) .ne. 10)) stop 6
+   if (minloc (b8, 1) .ne. 1) stop 7
+   if (minloc (b8, 1, back=.false.) .ne. 1) stop 8
+   if (minloc (b8, 1, back=.true.) .ne. 10) stop 9
+   if (minloc (b8, 1, kind=1) .ne. 1) stop 10
+   if (minloc (b8, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (minloc (b8, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (minloc (b8, 1, l2) .ne. 1) stop 13
+   if (minloc (b8, 1, l2, back=.false.) .ne. 1) stop 14
+   if (minloc (b8, 1, l2, back=.true.) .ne. 10) stop 15
+   if (minloc (b8, 1, l2, kind=8) .ne. 1) stop 16
+   if (minloc (b8, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (minloc (b8, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (minloc (b8, 1, l3) .ne. 1) stop 19
+   if (minloc (b8, 1, l3, back=.false.) .ne. 1) stop 20
+   if (minloc (b8, 1, l3, back=.true.) .ne. 10) stop 21
+   if (minloc (b8, 1, l3, kind=8) .ne. 1) stop 22
+   if (minloc (b8, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (minloc (b8, 1, l3, 2, .true.) .ne. 10) stop 24
+   r4 = 0.0
+   if (any (minloc (r4) .ne. 1)) stop 1
+   if (any (minloc (r4, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (r4, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (r4, kind=2) .ne. 1)) stop 4
+   if (any (minloc (r4, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (r4, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (minloc (r4, 1) .ne. 1)) stop 7
+   if (any (minloc (r4, 1, back=.false.) .ne. 1)) stop 8
+   if (any (minloc (r4, 1, back=.true.) .ne. 10)) stop 9
+   if (any (minloc (r4, 1, kind=1) .ne. 1)) stop 10
+   if (any (minloc (r4, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (minloc (r4, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (minloc (r4, 1, l1) .ne. 1)) stop 13
+   if (any (minloc (r4, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (minloc (r4, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (minloc (r4, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (minloc (r4, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (minloc (r4, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (minloc (r4, 1, l3) .ne. 1)) stop 19
+   if (any (minloc (r4, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (minloc (r4, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (minloc (r4, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (minloc (r4, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (minloc (r4, 1, l3, 2, .true.) .ne. 10)) stop 24
+   s4 = 0.0
+   if (any (minloc (s4) .ne. 1)) stop 1
+   if (any (minloc (s4, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (s4, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (s4, kind=2) .ne. 1)) stop 4
+   if (any (minloc (s4, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (s4, kind=8, back=.true.) .ne. 10)) stop 6
+   if (minloc (s4, 1) .ne. 1) stop 7
+   if (minloc (s4, 1, back=.false.) .ne. 1) stop 8
+   if (minloc (s4, 1, back=.true.) .ne. 10) stop 9
+   if (minloc (s4, 1, kind=1) .ne. 1) stop 10
+   if (minloc (s4, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (minloc (s4, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (minloc (s4, 1, l2) .ne. 1) stop 13
+   if (minloc (s4, 1, l2, back=.false.) .ne. 1) stop 14
+   if (minloc (s4, 1, l2, back=.true.) .ne. 10) stop 15
+   if (minloc (s4, 1, l2, kind=8) .ne. 1) stop 16
+   if (minloc (s4, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (minloc (s4, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (minloc (s4, 1, l3) .ne. 1) stop 19
+   if (minloc (s4, 1, l3, back=.false.) .ne. 1) stop 20
+   if (minloc (s4, 1, l3, back=.true.) .ne. 10) stop 21
+   if (minloc (s4, 1, l3, kind=8) .ne. 1) stop 22
+   if (minloc (s4, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (minloc (s4, 1, l3, 2, .true.) .ne. 10) stop 24
+   r8 = 0.0
+   if (any (minloc (r8) .ne. 1)) stop 1
+   if (any (minloc (r8, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (r8, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (r8, kind=2) .ne. 1)) stop 4
+   if (any (minloc (r8, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (r8, kind=8, back=.true.) .ne. 10)) stop 6
+   if (any (minloc (r8, 1) .ne. 1)) stop 7
+   if (any (minloc (r8, 1, back=.false.) .ne. 1)) stop 8
+   if (any (minloc (r8, 1, back=.true.) .ne. 10)) stop 9
+   if (any (minloc (r8, 1, kind=1) .ne. 1)) stop 10
+   if (any (minloc (r8, 1, kind=2, back=.false.) .ne. 1)) stop 11
+   if (any (minloc (r8, 1, kind=4, back=.true.) .ne. 10)) stop 12
+   if (any (minloc (r8, 1, l1) .ne. 1)) stop 13
+   if (any (minloc (r8, 1, l1, back=.false.) .ne. 1)) stop 14
+   if (any (minloc (r8, 1, l1, back=.true.) .ne. 10)) stop 15
+   if (any (minloc (r8, 1, l1, kind=8) .ne. 1)) stop 16
+   if (any (minloc (r8, 1, l1, 4, .false.) .ne. 1)) stop 17
+   if (any (minloc (r8, 1, l1, 2, .true.) .ne. 10)) stop 18
+   if (any (minloc (r8, 1, l3) .ne. 1)) stop 19
+   if (any (minloc (r8, 1, l3, back=.false.) .ne. 1)) stop 20
+   if (any (minloc (r8, 1, l3, back=.true.) .ne. 10)) stop 21
+   if (any (minloc (r8, 1, l3, kind=8) .ne. 1)) stop 22
+   if (any (minloc (r8, 1, l3, 4, .false.) .ne. 1)) stop 23
+   if (any (minloc (r8, 1, l3, 2, .true.) .ne. 10)) stop 24
+   s8 = 0.0
+   if (any (minloc (s8) .ne. 1)) stop 1
+   if (any (minloc (s8, back=.false.) .ne. 1)) stop 2
+   if (any (minloc (s8, back=.true.) .ne. 10)) stop 3
+   if (any (minloc (s8, kind=2) .ne. 1)) stop 4
+   if (any (minloc (s8, kind=4, back=.false.) .ne. 1)) stop 5
+   if (any (minloc (s8, kind=8, back=.true.) .ne. 10)) stop 6
+   if (minloc (s8, 1) .ne. 1) stop 7
+   if (minloc (s8, 1, back=.false.) .ne. 1) stop 8
+   if (minloc (s8, 1, back=.true.) .ne. 10) stop 9
+   if (minloc (s8, 1, kind=1) .ne. 1) stop 10
+   if (minloc (s8, 1, kind=2, back=.false.) .ne. 1) stop 11
+   if (minloc (s8, 1, kind=4, back=.true.) .ne. 10) stop 12
+   if (minloc (s8, 1, l2) .ne. 1) stop 13
+   if (minloc (s8, 1, l2, back=.false.) .ne. 1) stop 14
+   if (minloc (s8, 1, l2, back=.true.) .ne. 10) stop 15
+   if (minloc (s8, 1, l2, kind=8) .ne. 1) stop 16
+   if (minloc (s8, 1, l2, 4, .false.) .ne. 1) stop 17
+   if (minloc (s8, 1, l2, 2, .true.) .ne. 10) stop 18
+   if (minloc (s8, 1, l3) .ne. 1) stop 19
+   if (minloc (s8, 1, l3, back=.false.) .ne. 1) stop 20
+   if (minloc (s8, 1, l3, back=.true.) .ne. 10) stop 21
+   if (minloc (s8, 1, l3, kind=8) .ne. 1) stop 22
+   if (minloc (s8, 1, l3, 4, .false.) .ne. 1) stop 23
+   if (minloc (s8, 1, l3, 2, .true.) .ne. 10) stop 24
+ end
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/pr120191_2.f90 gcc-16-20250518/gcc/testsuite/gfortran.dg/pr120191_2.f90
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/pr120191_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/pr120191_2.f90	Sun May 18 22:32:41 2025
***************
*** 0 ****
--- 1,84 ----
+ ! PR fortran/120191
+ ! { dg-do run }
+ 
+   character(kind=1, len=2) :: a(4, 4, 4), b(4)
+   logical :: l(4, 4, 4), m, n(4)
+   a = 'aa'
+   b = 'aa'
+   l = .true.
+   m = .true.
+   n = .true.
+   if (any (maxloc (a) .ne. 1)) stop 1
+   if (any (maxloc (a, dim=1) .ne. 1)) stop 2
+   if (any (maxloc (a, 1) .ne. 1)) stop 3
+   if (any (maxloc (a, dim=1, mask=l, kind=4, back=.false.) .ne. 1)) stop 4
+   if (any (maxloc (a, 1, l, 4, .false.) .ne. 1)) stop 5
+   if (any (maxloc (a, dim=1, mask=m, kind=4, back=.false.) .ne. 1)) stop 6
+   if (any (maxloc (a, 1, m, 4, .false.) .ne. 1)) stop 7
+   if (any (maxloc (a, dim=1, mask=l, kind=4, back=.true.) .ne. 4)) stop 8
+   if (any (maxloc (a, 1, l, 4, .true.) .ne. 4)) stop 9
+   if (any (maxloc (a, dim=1, mask=m, kind=4, back=.true.) .ne. 4)) stop 10
+   if (any (maxloc (a, 1, m, 4, .true.) .ne. 4)) stop 11
+   if (any (maxloc (b) .ne. 1)) stop 12
+   if (maxloc (b, dim=1) .ne. 1) stop 13
+   if (maxloc (b, 1) .ne. 1) stop 14
+   if (maxloc (b, dim=1, mask=n, kind=4, back=.false.) .ne. 1) stop 15
+   if (maxloc (b, 1, n, 4, .false.) .ne. 1) stop 16
+   if (maxloc (b, dim=1, mask=m, kind=4, back=.false.) .ne. 1) stop 17
+   if (maxloc (b, 1, m, 4, .false.) .ne. 1) stop 18
+   if (maxloc (b, dim=1, mask=n, kind=4, back=.true.) .ne. 4) stop 19
+   if (maxloc (b, 1, n, 4, .true.) .ne. 4) stop 20
+   if (maxloc (b, dim=1, mask=m, kind=4, back=.true.) .ne. 4) stop 21
+   if (maxloc (b, 1, m, 4, .true.) .ne. 4) stop 22
+   l = .false.
+   m = .false.
+   n = .false.
+   if (any (maxloc (a, dim=1, mask=l, kind=4, back=.false.) .ne. 0)) stop 23
+   if (any (maxloc (a, 1, l, 4, .false.) .ne. 0)) stop 24
+   if (maxloc (b, dim=1, mask=n, kind=4, back=.false.) .ne. 0) stop 25
+   if (maxloc (b, 1, n, 4, .false.) .ne. 0) stop 26
+   if (maxloc (b, dim=1, mask=m, kind=4, back=.false.) .ne. 0) stop 27
+   if (maxloc (b, 1, m, 4, .false.) .ne. 0) stop 28
+   if (maxloc (b, dim=1, mask=n, kind=4, back=.true.) .ne. 0) stop 29
+   if (maxloc (b, 1, n, 4, .true.) .ne. 0) stop 30
+   if (maxloc (b, dim=1, mask=m, kind=4, back=.true.) .ne. 0) stop 31
+   if (maxloc (b, 1, m, 4, .true.) .ne. 0) stop 32
+   l = .true.
+   m = .true.
+   n = .true.
+   if (any (minloc (a) .ne. 1)) stop 1
+   if (any (minloc (a, dim=1) .ne. 1)) stop 2
+   if (any (minloc (a, 1) .ne. 1)) stop 3
+   if (any (minloc (a, dim=1, mask=l, kind=4, back=.false.) .ne. 1)) stop 4
+   if (any (minloc (a, 1, l, 4, .false.) .ne. 1)) stop 5
+   if (any (minloc (a, dim=1, mask=m, kind=4, back=.false.) .ne. 1)) stop 6
+   if (any (minloc (a, 1, m, 4, .false.) .ne. 1)) stop 7
+   if (any (minloc (a, dim=1, mask=l, kind=4, back=.true.) .ne. 4)) stop 8
+   if (any (minloc (a, 1, l, 4, .true.) .ne. 4)) stop 9
+   if (any (minloc (a, dim=1, mask=m, kind=4, back=.true.) .ne. 4)) stop 10
+   if (any (minloc (a, 1, m, 4, .true.) .ne. 4)) stop 11
+   if (any (minloc (b) .ne. 1)) stop 12
+   if (minloc (b, dim=1) .ne. 1) stop 13
+   if (minloc (b, 1) .ne. 1) stop 14
+   if (minloc (b, dim=1, mask=n, kind=4, back=.false.) .ne. 1) stop 15
+   if (minloc (b, 1, n, 4, .false.) .ne. 1) stop 16
+   if (minloc (b, dim=1, mask=m, kind=4, back=.false.) .ne. 1) stop 17
+   if (minloc (b, 1, m, 4, .false.) .ne. 1) stop 18
+   if (minloc (b, dim=1, mask=n, kind=4, back=.true.) .ne. 4) stop 19
+   if (minloc (b, 1, n, 4, .true.) .ne. 4) stop 20
+   if (minloc (b, dim=1, mask=m, kind=4, back=.true.) .ne. 4) stop 21
+   if (minloc (b, 1, m, 4, .true.) .ne. 4) stop 22
+   l = .false.
+   m = .false.
+   n = .false.
+   if (any (minloc (a, dim=1, mask=l, kind=4, back=.false.) .ne. 0)) stop 23
+   if (any (minloc (a, 1, l, 4, .false.) .ne. 0)) stop 24
+   if (minloc (b, dim=1, mask=n, kind=4, back=.false.) .ne. 0) stop 25
+   if (minloc (b, 1, n, 4, .false.) .ne. 0) stop 26
+   if (minloc (b, dim=1, mask=m, kind=4, back=.false.) .ne. 0) stop 27
+   if (minloc (b, 1, m, 4, .false.) .ne. 0) stop 28
+   if (minloc (b, dim=1, mask=n, kind=4, back=.true.) .ne. 0) stop 29
+   if (minloc (b, 1, n, 4, .true.) .ne. 0) stop 30
+   if (minloc (b, dim=1, mask=m, kind=4, back=.true.) .ne. 0) stop 31
+   if (minloc (b, 1, m, 4, .true.) .ne. 0) stop 32
+ end
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/pr120191_3.f90 gcc-16-20250518/gcc/testsuite/gfortran.dg/pr120191_3.f90
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/pr120191_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/pr120191_3.f90	Sun May 18 22:32:41 2025
***************
*** 0 ****
--- 1,23 ----
+ ! PR fortran/120191
+ ! { dg-do run }
+ 
+   character(kind=1, len=2) :: a(4, 4, 4), b(4)
+   logical :: l(4, 4, 4), m, n(4)
+   a = 'aa'
+   b = 'aa'
+   l = .false.
+   m = .false.
+   n = .false.
+   if (any (maxloc (a, dim=1, mask=m, kind=4, back=.false.) .ne. 0)) stop 1
+   if (any (maxloc (a, 1, m, 4, .false.) .ne. 0)) stop 2
+   if (any (maxloc (a, dim=1, mask=l, kind=4, back=.true.) .ne. 0)) stop 3
+   if (any (maxloc (a, 1, l, 4, .true.) .ne. 0)) stop 4
+   if (any (maxloc (a, dim=1, mask=m, kind=4, back=.true.) .ne. 0)) stop 5
+   if (any (maxloc (a, 1, m, 4, .true.) .ne. 0)) stop 6
+   if (any (minloc (a, dim=1, mask=m, kind=4, back=.false.) .ne. 0)) stop 7
+   if (any (minloc (a, 1, m, 4, .false.) .ne. 0)) stop 8
+   if (any (minloc (a, dim=1, mask=l, kind=4, back=.true.) .ne. 0)) stop 9
+   if (any (minloc (a, 1, l, 4, .true.) .ne. 0)) stop 10
+   if (any (minloc (a, dim=1, mask=m, kind=4, back=.true.) .ne. 0)) stop 11
+   if (any (minloc (a, 1, m, 4, .true.) .ne. 0)) stop 12
+ end
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gfortran.dg/pr120196.f90 gcc-16-20250518/gcc/testsuite/gfortran.dg/pr120196.f90
*** gcc-16-20250511/gcc/testsuite/gfortran.dg/pr120196.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gfortran.dg/pr120196.f90	Sun May 18 22:32:41 2025
***************
*** 0 ****
--- 1,26 ----
+ ! PR libfortran/120196
+ ! { dg-do run }
+ 
+ program pr120196
+   character(len=:, kind=1), allocatable :: a(:), s
+   character(len=:, kind=4), allocatable :: b(:), t
+   logical, allocatable :: l(:)
+   logical :: m
+   allocate (character(len=16, kind=1) :: a(10), s)
+   allocate (l(10))
+   a(:) = ""
+   s = "*"
+   l = .true.
+   m = .true.
+   if (findloc (a, s, dim=1, back=.true.) .ne. 0) stop 1
+   if (findloc (a, s, mask=l, dim=1, back=.true.) .ne. 0) stop 2
+   if (findloc (a, s, mask=m, dim=1, back=.true.) .ne. 0) stop 3
+   deallocate (a, s)
+   allocate (character(len=16, kind=4) :: b(10), t)
+   b(:) = ""
+   t = "*"
+   if (findloc (b, t, dim=1, back=.true.) .ne. 0) stop 4
+   if (findloc (b, t, mask=l, dim=1, back=.true.) .ne. 0) stop 5
+   if (findloc (b, t, mask=m, dim=1, back=.true.) .ne. 0) stop 6
+   deallocate (b, t, l)
+ end program pr120196
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gm2.dg/doc/examples/plugin/fail/assignvalue.mod gcc-16-20250518/gcc/testsuite/gm2.dg/doc/examples/plugin/fail/assignvalue.mod
*** gcc-16-20250511/gcc/testsuite/gm2.dg/doc/examples/plugin/fail/assignvalue.mod	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gm2.dg/doc/examples/plugin/fail/assignvalue.mod	Sun May 18 22:32:41 2025
***************
*** 0 ****
--- 1,25 ----
+ (* { dg-do compile } *)
+ (* { dg-options "-fsoft-check-all -fm2-plugin" } *)
+ (* { dg-skip-if "" { *-*-* }  { "*" } { "-O2" } } *)
+ 
+ MODULE assignvalue ;  (*!m2iso+gm2*)
+ 
+ PROCEDURE bad () : INTEGER ;
+ VAR
+    i: INTEGER ;
+ BEGIN
+    i := -1 ;
+    RETURN i
+ END bad ;
+ 
+ VAR
+    foo: CARDINAL ;
+ BEGIN
+    (* The m2rte plugin will detect this as an error, post
+       optimization.  *)
+    foo := bad ()  (* { dg-error "error: In program module assignvalue" } *)
+    (* { dg-begin-multiline-output "" }
+ runtime error will occur, assignment will cause a range error, as the runtime instance value of 'CARDINAL' does not overlap with the type 'INTEGER'
+      { dg-end-multiline-output "" } *)
+ 
+ END assignvalue.
diff -Nrcpad gcc-16-20250511/gcc/testsuite/gm2.dg/doc/examples/plugin/fail/doc-examples-plugin-fail.exp gcc-16-20250518/gcc/testsuite/gm2.dg/doc/examples/plugin/fail/doc-examples-plugin-fail.exp
*** gcc-16-20250511/gcc/testsuite/gm2.dg/doc/examples/plugin/fail/doc-examples-plugin-fail.exp	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/gcc/testsuite/gm2.dg/doc/examples/plugin/fail/doc-examples-plugin-fail.exp	Sun May 18 22:32:41 2025
***************
*** 0 ****
--- 1,25 ----
+ # Compile tests, no torture testing.
+ #
+ # These tests should all generate errors if the plugin is available.
+ 
+ # Load support procs.
+ load_lib gm2-dg.exp
+ 
+ gm2_init_pim4 $srcdir/$subdir
+ 
+ # Initialize `dg'.
+ dg-init
+ 
+ # If the --enable-plugin has not been enabled during configure, bail.
+ if { ![info exists TESTING_IN_BUILD_TREE] || ![info exists ENABLE_PLUGIN] } {
+     return
+ }
+ 
+ # Main loop.
+ 
+ set tests [lsort [glob -nocomplain $srcdir/$subdir/*.mod]]
+ 
+ gm2-dg-runtest $tests "" ""
+ 
+ # All done.
+ dg-finish
diff -Nrcpad gcc-16-20250511/gcc/testsuite/lib/g++-dg.exp gcc-16-20250518/gcc/testsuite/lib/g++-dg.exp
*** gcc-16-20250511/gcc/testsuite/lib/g++-dg.exp	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/testsuite/lib/g++-dg.exp	Sun May 18 22:32:44 2025
*************** proc g++-dg-prune { system text } {
*** 27,100 ****
      return [gcc-dg-prune $system $text]
  }
  
! # Modified dg-runtest that runs tests in multiple standard modes,
! # unless they specifically specify one standard.
! proc g++-dg-runtest { testcases flags default-extra-flags } {
!     global runtests
! 
!     foreach test $testcases {
! 	# If we're only testing specific files and this isn't one of them, skip it.
! 	if ![runtest_file_p $runtests $test] {
! 	    continue
  	}
  
! 	# If the testcase specifies a standard, use that one.
! 	# If not, run it under several standards, allowing GNU extensions
! 	# if there's a dg-options line.
! 	if ![search_for $test "-std=*++"] {
! 	    if [search_for $test "dg-options"] {
! 		set std_prefix "-std=gnu++"
! 	    } else {
! 		set std_prefix "-std=c++"
! 	    }
  
! 	    # See g++.exp for the initial value of this list.
! 	    global gpp_std_list
! 	    if { [llength $gpp_std_list] > 0 } {
! 		set std_list $gpp_std_list
! 	    } else {
! 		# If the test mentions specific C++ versions, test those.
! 		set lines [get_matching_lines $test {\{ dg* c++[0-9][0-9]}]
! 		set std_list {}
! 		set low 0
! 		foreach line $lines {
! 		    regexp {c\+\+([0-9][0-9])} $line -> ver
  		    lappend std_list $ver
  
! 		    if { $ver == 98 } {
! 			# Leave low alone.
! 		    } elseif { [regexp {dg-do|dg-require-effective-target} $line] } {
! 			set low $ver
! 		    }
  		}
! 		#verbose "low: $low" 1
  
! 		set std_list [lsort -unique $std_list]
  
! 		# If fewer than 3 specific versions are mentioned, add more.
! 		# The order of this list is significant: first $cxx_default,
! 		# then the oldest and newest, then others in rough order of
! 		# importance based on test coverage and usage.
! 		foreach ver { 17 98 26 11 20 14 23 } {
! 		    set cmpver $ver
! 		    if { $ver == 98 } { set cmpver 03 }
! 		    if { [llength $std_list] < 3
! 			 && $ver ni $std_list
! 			 && $cmpver > $low } {
! 			lappend std_list $ver
! 		    }
  		}
- 		verbose "std_list: $std_list" 1
- 	    }
- 	    set option_list { }
- 	    foreach x $std_list {
- 		if { $x eq "impcx" } then { set x "26 -fimplicit-constexpr" }
- 		lappend option_list "${std_prefix}$x"
  	    }
! 	} else {
! 	    set option_list { "" }
  	}
  
  	set nshort [file tail [file dirname $test]]/[file tail $test]
  
  	foreach flags_t $option_list {
--- 27,118 ----
      return [gcc-dg-prune $system $text]
  }
  
! # Return a list of -std flags to use for TEST.
! proc g++-std-flags { test } {
!     # If the testcase specifies a standard, use that one.
!     # If not, run it under several standards, allowing GNU extensions
!     # if there's a dg-options line.
!     if ![search_for $test "-std=*++"] {
! 	if [search_for $test "dg-options"] {
! 	    set std_prefix "-std=gnu++"
! 	} else {
! 	    set std_prefix "-std=c++"
  	}
  
! 	set low 0
! 	# Some directories expect certain minimums.
! 	if { [string match "*/coroutines/*" $test] } { set low 20 }
! 	if { [string match "*/modules/*" $test] } { set low 17 }
  
! 	# See g++.exp for the initial value of this list.
! 	global gpp_std_list
! 	if { [llength $gpp_std_list] > 0 } {
! 	    set std_list {}
! 	    foreach ver $gpp_std_list {
! 		set cmpver $ver
! 		if { $ver == 98 } { set cmpver 03 }
! 		if { $ver ni $std_list
! 		     && $cmpver >= $low } {
  		    lappend std_list $ver
+ 		}
+ 	    }
+ 	} else {
+ 	    # If the test mentions specific C++ versions, test those.
+ 	    set lines [get_matching_lines $test {\{ dg* c++[0-9][0-9]}]
+ 	    set std_list {}
+ 	    foreach line $lines {
+ 		regexp {c\+\+([0-9][0-9])} $line -> ver
+ 		lappend std_list $ver
  
! 		if { $ver == 98 } {
! 		    # Leave low alone.
! 		} elseif { [regexp {dg-do|dg-require-effective-target} $line] } {
! 		    set low $ver
  		}
! 	    }
! 	    #verbose "low: $low" 1
  
! 	    set std_list [lsort -unique $std_list]
  
! 	    # If fewer than 3 specific versions are mentioned, add more.
! 	    # The order of this list is significant: first $cxx_default,
! 	    # then the oldest and newest, then others in rough order of
! 	    # importance based on test coverage and usage.
! 	    foreach ver { 17 98 26 11 20 14 23 } {
! 		set cmpver $ver
! 		if { $ver == 98 } { set cmpver 03 }
! 		if { [llength $std_list] < 3
! 		     && $ver ni $std_list
! 		     && $cmpver >= $low } {
! 		    lappend std_list $ver
  		}
  	    }
! 	    verbose "std_list: $std_list" 1
! 	}
! 	set option_list { }
! 	foreach x $std_list {
! 	    if { $x eq "impcx" } then { set x "26 -fimplicit-constexpr" }
! 	    lappend option_list "${std_prefix}$x"
! 	}
!     } else {
! 	set option_list { "" }
!     }
!     return $option_list
! }
! 
! # Modified dg-runtest that runs tests in multiple standard modes,
! # unless they specifically specify one standard.
! proc g++-dg-runtest { testcases flags default-extra-flags } {
!     global runtests
! 
!     foreach test $testcases {
! 	# If we're only testing specific files and this isn't one of them, skip it.
! 	if ![runtest_file_p $runtests $test] {
! 	    continue
  	}
  
+ 	set option_list [g++-std-flags $test]
+ 
  	set nshort [file tail [file dirname $test]]/[file tail $test]
  
  	foreach flags_t $option_list {
diff -Nrcpad gcc-16-20250511/gcc/testsuite/lib/gm2-dg.exp gcc-16-20250518/gcc/testsuite/lib/gm2-dg.exp
*** gcc-16-20250511/gcc/testsuite/lib/gm2-dg.exp	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/testsuite/lib/gm2-dg.exp	Sun May 18 22:32:44 2025
*************** proc gm2-dg-runtest { testcases flags de
*** 65,71 ****
  	if [expr [search_for $test "dg-do run"]] {
  	    set option_list $TORTURE_OPTIONS
  	} else {
! 	    set option_list [list { -O } ]
  	}
  
  	set nshort [file tail [file dirname $test]]/[file tail $test]
--- 65,71 ----
  	if [expr [search_for $test "dg-do run"]] {
  	    set option_list $TORTURE_OPTIONS
  	} else {
! 	    set option_list [list { -O -O2 } ]
  	}
  
  	set nshort [file tail [file dirname $test]]/[file tail $test]
*************** proc gm2-dg-runtest { testcases flags de
*** 77,79 ****
--- 77,114 ----
      }
  }
  
+ 
+ # Check if frontend has been configured with option.
+ # This checks a configure build option was used and not
+ # the availability of a compiler command line option.
+ 
+ proc gm2-dg-frontend-configure-check { option } {
+     global GCC_UNDER_TEST
+ 
+     # ignore any arguments after the command
+     set compiler [lindex $GCC_UNDER_TEST 0]
+ 
+     if ![is_remote host] {
+ 	set compiler_name [which $compiler]
+     } else {
+ 	set compiler_name $compiler
+     }
+ 
+     # verify that the compiler exists
+     if { $compiler_name != 0 } then {
+ 	set tmp [remote_exec host "$compiler -v"]
+ 	set status [lindex $tmp 0]
+ 	set output [lindex $tmp 1]
+ 	regexp "Configured with.*\[\n\r\]" $output config
+ 	set option "*${option}*"
+ 	if { [string match $option $config] } {
+ 	    return 1
+ 	} else {
+ 	    return 0
+ 	}
+     } else {
+ 	# compiler does not exist (this should have already been detected)
+ 	warning "$compiler does not exist"
+ 	return 0
+     }
+ }
diff -Nrcpad gcc-16-20250511/gcc/testsuite/lib/target-supports.exp gcc-16-20250518/gcc/testsuite/lib/target-supports.exp
*** gcc-16-20250511/gcc/testsuite/lib/target-supports.exp	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/testsuite/lib/target-supports.exp	Sun May 18 22:32:44 2025
*************** proc check_effective_target_arm_softfloa
*** 7436,7454 ****
      }]
  }
  
- # Return 1 if this is an ARM target supporting -mcpu=iwmmxt.
- # Some multilibs may be incompatible with this option.
- 
- proc check_effective_target_arm_iwmmxt_ok { } {
-     if { [check_effective_target_arm32] } {
- 	return [check_no_compiler_messages arm_iwmmxt_ok object {
- 	    int dummy;
- 	} "-mcpu=iwmmxt"]
-     } else {
- 	return 0
-     }
- }
- 
  # Return true if LDRD/STRD instructions are prefered over LDM/STM instructions
  # for an ARM target.
  proc check_effective_target_arm_prefer_ldrd_strd { } {
--- 7436,7441 ----
diff -Nrcpad gcc-16-20250511/gcc/tree-cfg.cc gcc-16-20250518/gcc/tree-cfg.cc
*** gcc-16-20250511/gcc/tree-cfg.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-cfg.cc	Sun May 18 22:32:51 2025
*************** verify_gimple_assign_unary (gassign *stm
*** 3867,3888 ****
  
        return false;
  
-     case NEGATE_EXPR:
-     case ABS_EXPR:
-     case BIT_NOT_EXPR:
-     case PAREN_EXPR:
-     case CONJ_EXPR:
-       /* Disallow pointer and offset types for many of the unary gimple. */
-       if (POINTER_TYPE_P (lhs_type)
- 	  || TREE_CODE (lhs_type) == OFFSET_TYPE)
- 	{
- 	  error ("invalid types for %qs", code_name);
- 	  debug_generic_expr (lhs_type);
- 	  debug_generic_expr (rhs1_type);
- 	  return true;
- 	}
-       break;
- 
      case ABSU_EXPR:
        if (!ANY_INTEGRAL_TYPE_P (lhs_type)
  	  || !TYPE_UNSIGNED (lhs_type)
--- 3867,3872 ----
*************** verify_gimple_assign_unary (gassign *stm
*** 3908,3913 ****
--- 3892,3918 ----
  	}
        return false;
  
+     case CONJ_EXPR:
+       if (TREE_CODE (lhs_type) != COMPLEX_TYPE)
+ 	{
+ diagnose_unary_lhs:
+ 	  error ("invalid type for %qs", code_name);
+ 	  debug_generic_expr (lhs_type);
+ 	  return true;
+ 	}
+       break;
+ 
+     case NEGATE_EXPR:
+     case ABS_EXPR:
+     case BIT_NOT_EXPR:
+       if (POINTER_TYPE_P (lhs_type) || TREE_CODE (lhs_type) == OFFSET_TYPE)
+ 	goto diagnose_unary_lhs;
+       /* FALLTHRU */
+     case PAREN_EXPR:
+       if (AGGREGATE_TYPE_P (lhs_type))
+ 	goto diagnose_unary_lhs;
+       break;
+ 
      default:
        gcc_unreachable ();
      }
diff -Nrcpad gcc-16-20250511/gcc/tree-cfgcleanup.cc gcc-16-20250518/gcc/tree-cfgcleanup.cc
*** gcc-16-20250511/gcc/tree-cfgcleanup.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-cfgcleanup.cc	Sun May 18 22:32:51 2025
*************** along with GCC; see the file COPYING3.
*** 46,51 ****
--- 46,52 ----
  #include "cgraph.h"
  #include "tree-into-ssa.h"
  #include "tree-cfgcleanup.h"
+ #include "gimple-pretty-print.h"
  
  
  /* The set of blocks in that at least one of the following changes happened:
*************** convert_single_case_switch (gswitch *swt
*** 122,127 ****
--- 123,163 ----
    return true;
  }
  
+ /* Canonicalize _Bool == 0 and _Bool != 1 to _Bool != 0 of STMT in BB by
+    swapping edges of the BB.  */
+ bool
+ canonicalize_bool_cond (gcond *stmt, basic_block bb)
+ {
+   tree rhs1 = gimple_cond_lhs (stmt);
+   tree rhs2 = gimple_cond_rhs (stmt);
+   enum tree_code code = gimple_cond_code (stmt);
+   if (code != EQ_EXPR && code != NE_EXPR)
+     return false;
+   if (TREE_CODE (TREE_TYPE (rhs1)) != BOOLEAN_TYPE
+       && (!INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
+ 	   || TYPE_PRECISION (TREE_TYPE (rhs1)) != 1))
+     return false;
+ 
+   /* Canonicalize _Bool == 0 and _Bool != 1 to _Bool != 0 by swapping edges.  */
+   if (code == EQ_EXPR && !integer_zerop (rhs2))
+     return false;
+   if (code == NE_EXPR && !integer_onep (rhs2))
+     return false;
+ 
+   gimple_cond_set_code (stmt, NE_EXPR);
+   gimple_cond_set_rhs (stmt, build_zero_cst (TREE_TYPE (rhs1)));
+   EDGE_SUCC (bb, 0)->flags ^= (EDGE_TRUE_VALUE|EDGE_FALSE_VALUE);
+   EDGE_SUCC (bb, 1)->flags ^= (EDGE_TRUE_VALUE|EDGE_FALSE_VALUE);
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "  Swapped '");
+       print_gimple_expr (dump_file, stmt, 0);
+       fprintf (dump_file, "'\n");
+     }
+   return true;
+ }
+ 
  /* Disconnect an unreachable block in the control expression starting
     at block BB.  */
  
*************** cleanup_control_expr_graph (basic_block
*** 145,150 ****
--- 181,189 ----
  	  && convert_single_case_switch (as_a<gswitch *> (stmt), gsi))
  	stmt = gsi_stmt (gsi);
  
+       if (gimple_code (stmt) == GIMPLE_COND)
+ 	canonicalize_bool_cond (as_a<gcond*> (stmt), bb);
+ 
        fold_defer_overflow_warnings ();
        switch (gimple_code (stmt))
  	{
diff -Nrcpad gcc-16-20250511/gcc/tree-cfgcleanup.h gcc-16-20250518/gcc/tree-cfgcleanup.h
*** gcc-16-20250511/gcc/tree-cfgcleanup.h	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-cfgcleanup.h	Sun May 18 22:32:51 2025
*************** extern bool delete_unreachable_blocks_up
*** 28,32 ****
--- 28,33 ----
  							bool update_clones);
  extern unsigned clean_up_loop_closed_phi (function *);
  extern bool phi_alternatives_equal (basic_block, edge, edge);
+ extern bool canonicalize_bool_cond (gcond *stmt, basic_block bb);
  
  #endif /* GCC_TREE_CFGCLEANUP_H */
diff -Nrcpad gcc-16-20250511/gcc/tree-outof-ssa.cc gcc-16-20250518/gcc/tree-outof-ssa.cc
*** gcc-16-20250511/gcc/tree-outof-ssa.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-outof-ssa.cc	Sun May 18 22:32:55 2025
*************** emit_partition_copy (rtx dest, rtx src,
*** 264,273 ****
      emit_move_insn (dest, src);
    do_pending_stack_adjust ();
  
!   rtx_insn *seq = get_insns ();
!   end_sequence ();
! 
!   return seq;
  }
  
  /* Insert a copy instruction from partition SRC to DEST onto edge E.  */
--- 264,270 ----
      emit_move_insn (dest, src);
    do_pending_stack_adjust ();
  
!   return end_sequence ();
  }
  
  /* Insert a copy instruction from partition SRC to DEST onto edge E.  */
*************** insert_value_copy_on_edge (edge e, int d
*** 357,364 ****
      emit_move_insn (dest_rtx, x);
    do_pending_stack_adjust ();
  
!   seq = get_insns ();
!   end_sequence ();
  
    insert_insn_on_edge (seq, e);
  }
--- 354,360 ----
      emit_move_insn (dest_rtx, x);
    do_pending_stack_adjust ();
  
!   seq = end_sequence ();
  
    insert_insn_on_edge (seq, e);
  }
diff -Nrcpad gcc-16-20250511/gcc/tree-sra.cc gcc-16-20250518/gcc/tree-sra.cc
*** gcc-16-20250511/gcc/tree-sra.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-sra.cc	Sun May 18 22:32:55 2025
*************** sra_modify_expr (tree *expr, bool write,
*** 4205,4212 ****
  	    }
  	  else
  	    {
! 	      gassign *stmt;
  
  	      if (access->grp_partial_lhs)
  		repl = force_gimple_operand_gsi (stmt_gsi, repl, true,
  						 NULL_TREE, true,
--- 4205,4214 ----
  	    }
  	  else
  	    {
! 	      if (TREE_READONLY (access->base))
! 		return false;
  
+ 	      gassign *stmt;
  	      if (access->grp_partial_lhs)
  		repl = force_gimple_operand_gsi (stmt_gsi, repl, true,
  						 NULL_TREE, true,
diff -Nrcpad gcc-16-20250511/gcc/tree-ssa-forwprop.cc gcc-16-20250518/gcc/tree-ssa-forwprop.cc
*** gcc-16-20250511/gcc/tree-ssa-forwprop.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-ssa-forwprop.cc	Sun May 18 22:32:55 2025
*************** forward_propagate_into_comparison (gimpl
*** 523,528 ****
--- 523,536 ----
  					     type, rhs1, rhs2);
    if (tmp && useless_type_conversion_p (type, TREE_TYPE (tmp)))
      {
+       if (dump_file)
+ 	{
+ 	  fprintf (dump_file, "  Replaced '");
+ 	  print_gimple_expr (dump_file, stmt, 0);
+ 	  fprintf (dump_file, "' with '");
+ 	  print_generic_expr (dump_file, tmp);
+ 	  fprintf (dump_file, "'\n");
+ 	}
        gimple_assign_set_rhs_from_tree (gsi, tmp);
        fold_stmt (gsi);
        update_stmt (gsi_stmt (*gsi));
*************** forward_propagate_into_gimple_cond (gcon
*** 551,559 ****
    tree rhs1 = gimple_cond_lhs (stmt);
    tree rhs2 = gimple_cond_rhs (stmt);
  
!   /* We can do tree combining on SSA_NAME and comparison expressions.  */
!   if (TREE_CODE_CLASS (gimple_cond_code (stmt)) != tcc_comparison)
!     return 0;
  
    tmp = forward_propagate_into_comparison_1 (stmt, code,
  					     boolean_type_node,
--- 559,566 ----
    tree rhs1 = gimple_cond_lhs (stmt);
    tree rhs2 = gimple_cond_rhs (stmt);
  
!   /* GIMPLE_COND will always be a comparison.  */
!   gcc_assert (TREE_CODE_CLASS (gimple_cond_code (stmt)) == tcc_comparison);
  
    tmp = forward_propagate_into_comparison_1 (stmt, code,
  					     boolean_type_node,
*************** forward_propagate_into_gimple_cond (gcon
*** 580,601 ****
        return (cfg_changed || is_gimple_min_invariant (tmp)) ? 2 : 1;
      }
  
!   /* Canonicalize _Bool == 0 and _Bool != 1 to _Bool != 0 by swapping edges.  */
!   if ((TREE_CODE (TREE_TYPE (rhs1)) == BOOLEAN_TYPE
!        || (INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
! 	   && TYPE_PRECISION (TREE_TYPE (rhs1)) == 1))
!       && ((code == EQ_EXPR
! 	   && integer_zerop (rhs2))
! 	  || (code == NE_EXPR
! 	      && integer_onep (rhs2))))
!     {
!       basic_block bb = gimple_bb (stmt);
!       gimple_cond_set_code (stmt, NE_EXPR);
!       gimple_cond_set_rhs (stmt, build_zero_cst (TREE_TYPE (rhs1)));
!       EDGE_SUCC (bb, 0)->flags ^= (EDGE_TRUE_VALUE|EDGE_FALSE_VALUE);
!       EDGE_SUCC (bb, 1)->flags ^= (EDGE_TRUE_VALUE|EDGE_FALSE_VALUE);
!       return 1;
!     }
  
    return 0;
  }
--- 587,594 ----
        return (cfg_changed || is_gimple_min_invariant (tmp)) ? 2 : 1;
      }
  
!   if (canonicalize_bool_cond (stmt, gimple_bb (stmt)))
!     return 1;
  
    return 0;
  }
*************** constant_pointer_difference (tree p1, tr
*** 1198,1203 ****
--- 1191,1347 ----
    return NULL_TREE;
  }
  
+ 
+ /* Optimize
+    a = {};
+    b = a;
+    into
+    a = {};
+    b = {};
+    Similarly for memset (&a, ..., sizeof (a)); instead of a = {};
+    and/or memcpy (&b, &a, sizeof (a)); instead of b = a;  */
+ 
+ static bool
+ optimize_memcpy_to_memset (gimple_stmt_iterator *gsip, tree dest, tree src, tree len)
+ {
+   ao_ref read;
+   gimple *stmt = gsi_stmt (*gsip);
+   if (gimple_has_volatile_ops (stmt))
+     return false;
+ 
+   tree src2 = NULL_TREE, len2 = NULL_TREE;
+   poly_int64 offset, offset2;
+   tree val = integer_zero_node;
+   bool len_was_null = len == NULL_TREE;
+   if (len == NULL_TREE)
+     len = (TREE_CODE (src) == COMPONENT_REF
+ 	   ? DECL_SIZE_UNIT (TREE_OPERAND (src, 1))
+ 	   : TYPE_SIZE_UNIT (TREE_TYPE (src)));
+   if (len == NULL_TREE
+       || !poly_int_tree_p (len))
+     return false;
+ 
+   ao_ref_init (&read, src);
+   tree vuse = gimple_vuse (stmt);
+   gimple *defstmt;
+   unsigned limit = param_sccvn_max_alias_queries_per_access;
+   do {
+     if (vuse == NULL || TREE_CODE (vuse) != SSA_NAME)
+       return false;
+     defstmt = SSA_NAME_DEF_STMT (vuse);
+     if (is_a <gphi*>(defstmt))
+       return false;
+     if (limit-- == 0)
+       return false;
+     /* If the len was null, then we can use TBBA. */
+     if (stmt_may_clobber_ref_p_1 (defstmt, &read,
+ 				  /* tbaa_p = */ len_was_null))
+       break;
+     vuse = gimple_vuse (defstmt);
+   } while (true);
+ 
+   if (gimple_store_p (defstmt)
+       && gimple_assign_single_p (defstmt)
+       && TREE_CODE (gimple_assign_rhs1 (defstmt)) == STRING_CST
+       && !gimple_clobber_p (defstmt))
+     {
+       tree str = gimple_assign_rhs1 (defstmt);
+       src2 = gimple_assign_lhs (defstmt);
+       /* The string must contain all null char's for now.  */
+       for (int i = 0; i < TREE_STRING_LENGTH (str); i++)
+ 	{
+ 	  if (TREE_STRING_POINTER (str)[i] != 0)
+ 	    {
+ 	      src2 = NULL_TREE;
+ 	      break;
+ 	    }
+ 	}
+     }
+   else if (gimple_store_p (defstmt)
+       && gimple_assign_single_p (defstmt)
+       && TREE_CODE (gimple_assign_rhs1 (defstmt)) == CONSTRUCTOR
+       && !gimple_clobber_p (defstmt))
+     src2 = gimple_assign_lhs (defstmt);
+   else if (gimple_call_builtin_p (defstmt, BUILT_IN_MEMSET)
+ 	   && TREE_CODE (gimple_call_arg (defstmt, 0)) == ADDR_EXPR
+ 	   && TREE_CODE (gimple_call_arg (defstmt, 1)) == INTEGER_CST)
+     {
+       src2 = TREE_OPERAND (gimple_call_arg (defstmt, 0), 0);
+       len2 = gimple_call_arg (defstmt, 2);
+       val = gimple_call_arg (defstmt, 1);
+       /* For non-0 val, we'd have to transform stmt from assignment
+ 	 into memset (only if dest is addressable).  */
+       if (!integer_zerop (val) && is_gimple_assign (stmt))
+ 	src2 = NULL_TREE;
+     }
+ 
+   if (src2 == NULL_TREE)
+     return false;
+ 
+   if (len2 == NULL_TREE)
+     len2 = (TREE_CODE (src2) == COMPONENT_REF
+ 	    ? DECL_SIZE_UNIT (TREE_OPERAND (src2, 1))
+ 	    : TYPE_SIZE_UNIT (TREE_TYPE (src2)));
+   if (len2 == NULL_TREE
+       || !poly_int_tree_p (len2))
+     return false;
+ 
+   src = get_addr_base_and_unit_offset (src, &offset);
+   src2 = get_addr_base_and_unit_offset (src2, &offset2);
+   if (src == NULL_TREE
+       || src2 == NULL_TREE
+       || maybe_lt (offset, offset2))
+     return false;
+ 
+   if (!operand_equal_p (src, src2, 0))
+     return false;
+ 
+   /* [ src + offset2, src + offset2 + len2 - 1 ] is set to val.
+      Make sure that
+      [ src + offset, src + offset + len - 1 ] is a subset of that.  */
+   if (maybe_gt (wi::to_poly_offset (len) + (offset - offset2),
+ 		wi::to_poly_offset (len2)))
+     return false;
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     {
+       fprintf (dump_file, "Simplified\n  ");
+       print_gimple_stmt (dump_file, stmt, 0, dump_flags);
+       fprintf (dump_file, "after previous\n  ");
+       print_gimple_stmt (dump_file, defstmt, 0, dump_flags);
+     }
+ 
+   /* For simplicity, don't change the kind of the stmt,
+      turn dest = src; into dest = {}; and memcpy (&dest, &src, len);
+      into memset (&dest, val, len);
+      In theory we could change dest = src into memset if dest
+      is addressable (maybe beneficial if val is not 0), or
+      memcpy (&dest, &src, len) into dest = {} if len is the size
+      of dest, dest isn't volatile.  */
+   if (is_gimple_assign (stmt))
+     {
+       tree ctor = build_constructor (TREE_TYPE (dest), NULL);
+       gimple_assign_set_rhs_from_tree (gsip, ctor);
+       update_stmt (stmt);
+     }
+   else /* If stmt is memcpy, transform it into memset.  */
+     {
+       gcall *call = as_a <gcall *> (stmt);
+       tree fndecl = builtin_decl_implicit (BUILT_IN_MEMSET);
+       gimple_call_set_fndecl (call, fndecl);
+       gimple_call_set_fntype (call, TREE_TYPE (fndecl));
+       gimple_call_set_arg (call, 1, val);
+       update_stmt (stmt);
+     }
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     {
+       fprintf (dump_file, "into\n  ");
+       print_gimple_stmt (dump_file, stmt, 0, dump_flags);
+     }
+   return true;
+ }
+ 
  /* *GSI_P is a GIMPLE_CALL to a builtin function.
     Optimize
     memcpy (p, "abcd", 4);
*************** simplify_builtin_call (gimple_stmt_itera
*** 1235,1240 ****
--- 1379,1400 ----
  
    switch (DECL_FUNCTION_CODE (callee2))
      {
+     case BUILT_IN_MEMCPY:
+       if (gimple_call_num_args (stmt2) == 3)
+ 	{
+ 	  tree dest = gimple_call_arg (stmt2, 0);
+ 	  tree src = gimple_call_arg (stmt2, 1);
+ 	  tree len = gimple_call_arg (stmt2, 2);
+ 	  /* Try to optimize the memcpy to memset if src
+ 	     and dest are addresses. */
+ 	  if (TREE_CODE (dest) == ADDR_EXPR
+ 	      && TREE_CODE (src) == ADDR_EXPR
+ 	      && TREE_CODE (len) == INTEGER_CST
+ 	      && optimize_memcpy_to_memset (gsi_p, TREE_OPERAND (dest, 0),
+ 					    TREE_OPERAND (src, 0), len))
+ 	    return true;
+ 	}
+     break;
      case BUILT_IN_MEMCHR:
        if (gimple_call_num_args (stmt2) == 3
  	  && (res = gimple_call_lhs (stmt2)) != nullptr
*************** pass_forwprop::execute (function *fun)
*** 4497,4502 ****
--- 4657,4664 ----
  		    }
  		}
  	    }
+ 	  if (substituted_p)
+ 	    update_stmt (stmt);
  	  if (substituted_p
  	      && is_gimple_assign (stmt)
  	      && gimple_assign_rhs_code (stmt) == ADDR_EXPR)
*************** pass_forwprop::execute (function *fun)
*** 4536,4552 ****
  			  && !SSA_NAME_IS_DEFAULT_DEF (use))
  			bitmap_set_bit (simple_dce_worklist,
  					SSA_NAME_VERSION (use));
- 		}
- 
- 	      if (changed || substituted_p)
- 		{
- 		  if (maybe_clean_or_replace_eh_stmt (orig_stmt, stmt))
- 		    bitmap_set_bit (to_purge, bb->index);
- 		  if (!was_noreturn
- 		      && is_gimple_call (stmt) && gimple_call_noreturn_p (stmt))
- 		    to_fixup.safe_push (stmt);
  		  update_stmt (stmt);
- 		  substituted_p = false;
  		}
  
  	      switch (gimple_code (stmt))
--- 4698,4704 ----
*************** pass_forwprop::execute (function *fun)
*** 4555,4570 ****
  		  {
  		    tree rhs1 = gimple_assign_rhs1 (stmt);
  		    enum tree_code code = gimple_assign_rhs_code (stmt);
  
  		    if (TREE_CODE_CLASS (code) == tcc_comparison)
  		      {
  			int did_something;
  			did_something = forward_propagate_into_comparison (&gsi);
- 			if (maybe_clean_or_replace_eh_stmt (stmt, gsi_stmt (gsi)))
- 			  bitmap_set_bit (to_purge, bb->index);
  			if (did_something == 2)
  			  cfg_changed = true;
! 			changed = did_something != 0;
  		      }
  		    else if ((code == PLUS_EXPR
  			      || code == BIT_IOR_EXPR
--- 4707,4731 ----
  		  {
  		    tree rhs1 = gimple_assign_rhs1 (stmt);
  		    enum tree_code code = gimple_assign_rhs_code (stmt);
+ 		    if (gimple_assign_load_p (stmt) && gimple_store_p (stmt))
+ 		      {
+ 			if (optimize_memcpy_to_memset (&gsi,
+ 						       gimple_assign_lhs (stmt),
+ 						       gimple_assign_rhs1 (stmt),
+ 						       /* len = */NULL_TREE))
+ 			  {
+ 			    changed = true;
+ 			    break;
+ 			  }
+ 		      }
  
  		    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
*************** pass_forwprop::execute (function *fun)
*** 4580,4594 ****
  		      }
  		    else if (code == CONSTRUCTOR
  			     && TREE_CODE (TREE_TYPE (rhs1)) == VECTOR_TYPE)
! 		      changed = simplify_vector_constructor (&gsi);
  		    else if (code == ARRAY_REF)
! 		      changed = simplify_count_trailing_zeroes (&gsi);
  		    break;
  		  }
  
  		case GIMPLE_SWITCH:
! 		  changed = simplify_gimple_switch (as_a <gswitch *> (stmt),
! 						    edges_to_remove);
  		  break;
  
  		case GIMPLE_COND:
--- 4741,4755 ----
  		      }
  		    else if (code == CONSTRUCTOR
  			     && TREE_CODE (TREE_TYPE (rhs1)) == VECTOR_TYPE)
! 		      changed |= simplify_vector_constructor (&gsi);
  		    else if (code == ARRAY_REF)
! 		      changed |= simplify_count_trailing_zeroes (&gsi);
  		    break;
  		  }
  
  		case GIMPLE_SWITCH:
! 		  changed |= simplify_gimple_switch (as_a <gswitch *> (stmt),
! 						     edges_to_remove);
  		  break;
  
  		case GIMPLE_COND:
*************** pass_forwprop::execute (function *fun)
*** 4597,4603 ****
  							(as_a <gcond *> (stmt));
  		    if (did_something == 2)
  		      cfg_changed = true;
! 		    changed = did_something != 0;
  		    break;
  		  }
  
--- 4758,4764 ----
  							(as_a <gcond *> (stmt));
  		    if (did_something == 2)
  		      cfg_changed = true;
! 		    changed |= did_something != 0;
  		    break;
  		  }
  
*************** pass_forwprop::execute (function *fun)
*** 4606,4618 ****
  		    tree callee = gimple_call_fndecl (stmt);
  		    if (callee != NULL_TREE
  			&& fndecl_built_in_p (callee, BUILT_IN_NORMAL))
! 		      changed = simplify_builtin_call (&gsi, callee);
  		    break;
  		  }
  
  		default:;
  		}
  
  	      if (changed)
  		{
  		  /* If the stmt changed then re-visit it and the statements
--- 4767,4789 ----
  		    tree callee = gimple_call_fndecl (stmt);
  		    if (callee != NULL_TREE
  			&& fndecl_built_in_p (callee, BUILT_IN_NORMAL))
! 		      changed |= simplify_builtin_call (&gsi, callee);
  		    break;
  		  }
  
  		default:;
  		}
  
+ 	      if (changed || substituted_p)
+ 		{
+ 		  substituted_p = false;
+ 		  stmt = gsi_stmt (gsi);
+ 		  if (maybe_clean_or_replace_eh_stmt (orig_stmt, stmt))
+ 		    bitmap_set_bit (to_purge, bb->index);
+ 		  if (!was_noreturn
+ 		      && is_gimple_call (stmt) && gimple_call_noreturn_p (stmt))
+ 		    to_fixup.safe_push (stmt);
+ 		}
  	      if (changed)
  		{
  		  /* If the stmt changed then re-visit it and the statements
diff -Nrcpad gcc-16-20250511/gcc/tree-ssa-loop-ivopts.cc gcc-16-20250518/gcc/tree-ssa-loop-ivopts.cc
*** gcc-16-20250511/gcc/tree-ssa-loop-ivopts.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-ssa-loop-ivopts.cc	Sun May 18 22:32:55 2025
*************** computation_cost (tree expr, bool speed)
*** 3883,3890 ****
    walk_tree (&expr, prepare_decl_rtl, &regno, NULL);
    start_sequence ();
    rslt = expand_expr (expr, NULL_RTX, TYPE_MODE (type), EXPAND_NORMAL);
!   seq = get_insns ();
!   end_sequence ();
    default_rtl_profile ();
    node->frequency = real_frequency;
  
--- 3883,3889 ----
    walk_tree (&expr, prepare_decl_rtl, &regno, NULL);
    start_sequence ();
    rslt = expand_expr (expr, NULL_RTX, TYPE_MODE (type), EXPAND_NORMAL);
!   seq = end_sequence ();
    default_rtl_profile ();
    node->frequency = real_frequency;
  
diff -Nrcpad gcc-16-20250511/gcc/tree-ssa-phiopt.cc gcc-16-20250518/gcc/tree-ssa-phiopt.cc
*** gcc-16-20250511/gcc/tree-ssa-phiopt.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-ssa-phiopt.cc	Sun May 18 22:32:55 2025
*************** match_simplify_replacement (basic_block
*** 1001,1016 ****
    if (seq)
      {
        // Mark the lhs of the new statements maybe for dce
!       gimple_stmt_iterator gsi1 = gsi_start (seq);
!       for (; !gsi_end_p (gsi1); gsi_next (&gsi1))
! 	{
! 	  gimple *stmt = gsi_stmt (gsi1);
! 	  tree name = gimple_get_lhs (stmt);
! 	  if (name && TREE_CODE (name) == SSA_NAME)
! 	    bitmap_set_bit (exprs_maybe_dce, SSA_NAME_VERSION (name));
! 	}
!     gsi_insert_seq_before (&gsi, seq, GSI_CONTINUE_LINKING);
!   }
  
    /* If there was a statement to move, move it to right before
       the original conditional.  */
--- 1001,1009 ----
    if (seq)
      {
        // Mark the lhs of the new statements maybe for dce
!       mark_lhs_in_seq_for_dce (exprs_maybe_dce, seq);
!       gsi_insert_seq_before (&gsi, seq, GSI_CONTINUE_LINKING);
!     }
  
    /* If there was a statement to move, move it to right before
       the original conditional.  */
diff -Nrcpad gcc-16-20250511/gcc/tree-ssanames.cc gcc-16-20250518/gcc/tree-ssanames.cc
*** gcc-16-20250511/gcc/tree-ssanames.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-ssanames.cc	Sun May 18 22:32:55 2025
*************** set_bitmask (tree name, const wide_int &
*** 488,494 ****
  {
    gcc_assert (!POINTER_TYPE_P (TREE_TYPE (name)));
  
!   int_range<2> r (TREE_TYPE (name));
    r.update_bitmask (irange_bitmask (value, mask));
    set_range_info (name, r);
  }
--- 488,494 ----
  {
    gcc_assert (!POINTER_TYPE_P (TREE_TYPE (name)));
  
!   int_range_max r (TREE_TYPE (name));
    r.update_bitmask (irange_bitmask (value, mask));
    set_range_info (name, r);
  }
diff -Nrcpad gcc-16-20250511/gcc/tree-vect-loop.cc gcc-16-20250518/gcc/tree-vect-loop.cc
*** gcc-16-20250511/gcc/tree-vect-loop.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-vect-loop.cc	Sun May 18 22:32:55 2025
*************** vectorizable_nonlinear_induction (loop_v
*** 9698,9704 ****
  
    gphi *phi = dyn_cast <gphi *> (stmt_info->stmt);
  
!   tree vectype = STMT_VINFO_VECTYPE (stmt_info);
    poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype);
    enum vect_induction_op_type induction_type
      = STMT_VINFO_LOOP_PHI_EVOLUTION_TYPE (stmt_info);
--- 9698,9704 ----
  
    gphi *phi = dyn_cast <gphi *> (stmt_info->stmt);
  
!   tree vectype = SLP_TREE_VECTYPE (slp_node);
    poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype);
    enum vect_induction_op_type induction_type
      = STMT_VINFO_LOOP_PHI_EVOLUTION_TYPE (stmt_info);
*************** vectorizable_nonlinear_induction (loop_v
*** 9723,9729 ****
    /* TODO: Support multi-lane SLP for nonlinear iv. There should be separate
       vector iv update for each iv and a permutation to generate wanted
       vector iv.  */
!   if (slp_node && SLP_TREE_LANES (slp_node) > 1)
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
--- 9723,9729 ----
    /* TODO: Support multi-lane SLP for nonlinear iv. There should be separate
       vector iv update for each iv and a permutation to generate wanted
       vector iv.  */
!   if (SLP_TREE_LANES (slp_node) > 1)
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
*************** vectorizable_nonlinear_induction (loop_v
*** 9934,9946 ****
    add_phi_arg (induction_phi, vec_def, loop_latch_edge (iv_loop),
  	       UNKNOWN_LOCATION);
  
!   if (slp_node)
!     slp_node->push_vec_def (induction_phi);
!   else
!     {
!       STMT_VINFO_VEC_STMTS (stmt_info).safe_push (induction_phi);
!       *vec_stmt = induction_phi;
!     }
  
    /* In case that vectorization factor (VF) is bigger than the number
       of elements that we can fit in a vectype (nunits), we have to generate
--- 9934,9940 ----
    add_phi_arg (induction_phi, vec_def, loop_latch_edge (iv_loop),
  	       UNKNOWN_LOCATION);
  
!   slp_node->push_vec_def (induction_phi);
  
    /* In case that vectorization factor (VF) is bigger than the number
       of elements that we can fit in a vectype (nunits), we have to generate
*************** vectorizable_nonlinear_induction (loop_v
*** 9970,9979 ****
  					      induction_type);
  	  gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
  	  new_stmt = SSA_NAME_DEF_STMT (vec_def);
! 	  if (slp_node)
! 	    slp_node->push_vec_def (new_stmt);
! 	  else
! 	    STMT_VINFO_VEC_STMTS (stmt_info).safe_push (new_stmt);
  	}
      }
  
--- 9964,9970 ----
  					      induction_type);
  	  gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
  	  new_stmt = SSA_NAME_DEF_STMT (vec_def);
! 	  slp_node->push_vec_def (new_stmt);
  	}
      }
  
*************** vectorizable_induction (loop_vec_info lo
*** 9999,10013 ****
  			stmt_vector_for_cost *cost_vec)
  {
    class loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
-   unsigned ncopies;
    bool nested_in_vect_loop = false;
    class loop *iv_loop;
    tree vec_def;
    edge pe = loop_preheader_edge (loop);
    basic_block new_bb;
!   tree new_vec, vec_init = NULL_TREE, vec_step, t;
    tree new_name;
-   gimple *new_stmt;
    gphi *induction_phi;
    tree induc_def, vec_dest;
    poly_uint64 vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
--- 9990,10002 ----
  			stmt_vector_for_cost *cost_vec)
  {
    class loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
    bool nested_in_vect_loop = false;
    class loop *iv_loop;
    tree vec_def;
    edge pe = loop_preheader_edge (loop);
    basic_block new_bb;
!   tree vec_init = NULL_TREE, vec_step, t;
    tree new_name;
    gphi *induction_phi;
    tree induc_def, vec_dest;
    poly_uint64 vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
*************** vectorizable_induction (loop_vec_info lo
*** 10034,10048 ****
      return vectorizable_nonlinear_induction (loop_vinfo, stmt_info,
  					     vec_stmt, slp_node, cost_vec);
  
!   tree vectype = STMT_VINFO_VECTYPE (stmt_info);
    poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype);
  
-   if (slp_node)
-     ncopies = 1;
-   else
-     ncopies = vect_get_num_copies (loop_vinfo, vectype);
-   gcc_assert (ncopies >= 1);
- 
    /* FORNOW. These restrictions should be relaxed.  */
    if (nested_in_vect_loop_p (loop, stmt_info))
      {
--- 10023,10031 ----
      return vectorizable_nonlinear_induction (loop_vinfo, stmt_info,
  					     vec_stmt, slp_node, cost_vec);
  
!   tree vectype = SLP_TREE_VECTYPE (slp_node);
    poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype);
  
    /* FORNOW. These restrictions should be relaxed.  */
    if (nested_in_vect_loop_p (loop, stmt_info))
      {
*************** vectorizable_induction (loop_vec_info lo
*** 10052,10065 ****
        edge latch_e;
        tree loop_arg;
  
-       if (ncopies > 1)
- 	{
- 	  if (dump_enabled_p ())
- 	    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- 			     "multiple types in nested loop.\n");
- 	  return false;
- 	}
- 
        exit_phi = NULL;
        latch_e = loop_latch_edge (loop->inner);
        loop_arg = PHI_ARG_DEF_FROM_EDGE (phi, latch_e);
--- 10035,10040 ----
*************** vectorizable_induction (loop_vec_info lo
*** 10096,10102 ****
      iv_loop = loop;
    gcc_assert (iv_loop == (gimple_bb (phi))->loop_father);
  
!   if (slp_node && (!nunits.is_constant () && SLP_TREE_LANES (slp_node) != 1))
      {
        /* The current SLP code creates the step value element-by-element.  */
        if (dump_enabled_p ())
--- 10071,10077 ----
      iv_loop = loop;
    gcc_assert (iv_loop == (gimple_bb (phi))->loop_father);
  
!   if (!nunits.is_constant () && SLP_TREE_LANES (slp_node) != 1)
      {
        /* The current SLP code creates the step value element-by-element.  */
        if (dump_enabled_p ())
*************** vectorizable_induction (loop_vec_info lo
*** 10152,10192 ****
    if (!vec_stmt) /* transformation not required.  */
      {
        unsigned inside_cost = 0, prologue_cost = 0;
!       if (slp_node)
! 	{
! 	  /* We eventually need to set a vector type on invariant
! 	     arguments.  */
! 	  unsigned j;
! 	  slp_tree child;
! 	  FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (slp_node), j, child)
! 	    if (!vect_maybe_update_slp_op_vectype
! 		(child, SLP_TREE_VECTYPE (slp_node)))
! 	      {
! 		if (dump_enabled_p ())
! 		  dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				   "incompatible vector types for "
! 				   "invariants\n");
! 		return false;
! 	      }
! 	  /* loop cost for vec_loop.  */
! 	  inside_cost
! 	    = record_stmt_cost (cost_vec,
! 				SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node),
! 				vector_stmt, stmt_info, 0, vect_body);
! 	  /* prologue cost for vec_init (if not nested) and step.  */
! 	  prologue_cost = record_stmt_cost (cost_vec, 1 + !nested_in_vect_loop,
! 					    scalar_to_vec,
! 					    stmt_info, 0, vect_prologue);
! 	}
!       else /* if (!slp_node) */
! 	{
! 	  /* loop cost for vec_loop.  */
! 	  inside_cost = record_stmt_cost (cost_vec, ncopies, vector_stmt,
! 					  stmt_info, 0, vect_body);
! 	  /* prologue cost for vec_init and vec_step.  */
! 	  prologue_cost = record_stmt_cost (cost_vec, 2, scalar_to_vec,
! 					    stmt_info, 0, vect_prologue);
! 	}
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location,
  			 "vect_model_induction_cost: inside_cost = %d, "
--- 10127,10154 ----
    if (!vec_stmt) /* transformation not required.  */
      {
        unsigned inside_cost = 0, prologue_cost = 0;
!       /* We eventually need to set a vector type on invariant
! 	 arguments.  */
!       unsigned j;
!       slp_tree child;
!       FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (slp_node), j, child)
! 	if (!vect_maybe_update_slp_op_vectype
! 	    (child, SLP_TREE_VECTYPE (slp_node)))
! 	  {
! 	    if (dump_enabled_p ())
! 	      dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 			       "incompatible vector types for "
! 			       "invariants\n");
! 	    return false;
! 	  }
!       /* loop cost for vec_loop.  */
!       inside_cost = record_stmt_cost (cost_vec,
! 				      SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node),
! 				      vector_stmt, stmt_info, 0, vect_body);
!       /* prologue cost for vec_init (if not nested) and step.  */
!       prologue_cost = record_stmt_cost (cost_vec, 1 + !nested_in_vect_loop,
! 					scalar_to_vec,
! 					stmt_info, 0, vect_prologue);
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location,
  			 "vect_model_induction_cost: inside_cost = %d, "
*************** vectorizable_induction (loop_vec_info lo
*** 10217,10886 ****
       with group size 3 we need
         [i0, i1, i2, i0 + S0] [i1 + S1, i2 + S2, i0 + 2*S0, i1 + 2*S1]
         [i2 + 2*S2, i0 + 3*S0, i1 + 3*S1, i2 + 3*S2].  */
!   if (slp_node)
!     {
!       gimple_stmt_iterator incr_si;
!       bool insert_after;
!       standard_iv_increment_position (iv_loop, &incr_si, &insert_after);
  
!       /* The initial values are vectorized, but any lanes > group_size
! 	 need adjustment.  */
!       slp_tree init_node
! 	= SLP_TREE_CHILDREN (slp_node)[pe->dest_idx];
  
!       /* Gather steps.  Since we do not vectorize inductions as
! 	 cycles we have to reconstruct the step from SCEV data.  */
!       unsigned group_size = SLP_TREE_LANES (slp_node);
!       tree *steps = XALLOCAVEC (tree, group_size);
!       tree *inits = XALLOCAVEC (tree, group_size);
!       stmt_vec_info phi_info;
!       FOR_EACH_VEC_ELT (SLP_TREE_SCALAR_STMTS (slp_node), i, phi_info)
! 	{
! 	  steps[i] = STMT_VINFO_LOOP_PHI_EVOLUTION_PART (phi_info);
! 	  if (!init_node)
! 	    inits[i] = gimple_phi_arg_def (as_a<gphi *> (phi_info->stmt),
! 					   pe->dest_idx);
! 	}
  
!       /* Now generate the IVs.  */
!       unsigned nvects = SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node);
!       gcc_assert (multiple_p (nunits * nvects, group_size));
!       unsigned nivs;
!       unsigned HOST_WIDE_INT const_nunits;
!       if (nested_in_vect_loop)
! 	nivs = nvects;
!       else if (nunits.is_constant (&const_nunits))
  	{
! 	  /* Compute the number of distinct IVs we need.  First reduce
! 	     group_size if it is a multiple of const_nunits so we get
! 	     one IV for a group_size of 4 but const_nunits 2.  */
! 	  unsigned group_sizep = group_size;
! 	  if (group_sizep % const_nunits == 0)
! 	    group_sizep = group_sizep / const_nunits;
! 	  nivs = least_common_multiple (group_sizep,
! 					const_nunits) / const_nunits;
  	}
        else
  	{
! 	  gcc_assert (SLP_TREE_LANES (slp_node) == 1);
! 	  nivs = 1;
! 	}
!       gimple_seq init_stmts = NULL;
!       tree lupdate_mul = NULL_TREE;
!       if (!nested_in_vect_loop)
! 	{
! 	  if (nunits.is_constant (&const_nunits))
  	    {
! 	      /* The number of iterations covered in one vector iteration.  */
! 	      unsigned lup_mul = (nvects * const_nunits) / group_size;
! 	      lupdate_mul
! 		= build_vector_from_val (step_vectype,
! 					 SCALAR_FLOAT_TYPE_P (stept)
! 					 ? build_real_from_wide (stept, lup_mul,
! 								 UNSIGNED)
! 					 : build_int_cstu (stept, lup_mul));
  	    }
  	  else
! 	    {
! 	      if (SCALAR_FLOAT_TYPE_P (stept))
! 		{
! 		  tree tem = build_int_cst (integer_type_node, vf);
! 		  lupdate_mul = gimple_build (&init_stmts, FLOAT_EXPR,
! 					      stept, tem);
! 		}
! 	      else
! 		lupdate_mul = build_int_cst (stept, vf);
! 	      lupdate_mul = gimple_build_vector_from_val (&init_stmts,
! 							  step_vectype,
! 							  lupdate_mul);
! 	    }
  	}
!       tree peel_mul = NULL_TREE;
!       if (LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo))
! 	{
! 	  if (SCALAR_FLOAT_TYPE_P (stept))
! 	    peel_mul = gimple_build (&init_stmts, FLOAT_EXPR, stept,
! 				     LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo));
! 	  else
! 	    peel_mul = gimple_convert (&init_stmts, stept,
! 				       LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo));
! 	  peel_mul = gimple_build_vector_from_val (&init_stmts,
! 						   step_vectype, peel_mul);
  
! 	  /* If early break then we have to create a new PHI which we can use as
! 	    an offset to adjust the induction reduction in early exits.
  
! 	    This is because when peeling for alignment using masking, the first
! 	    few elements of the vector can be inactive.  As such if we find the
! 	    entry in the first iteration we have adjust the starting point of
! 	    the scalar code.
  
! 	    We do this by creating a new scalar PHI that keeps track of whether
! 	    we are the first iteration of the loop (with the additional masking)
! 	    or whether we have taken a loop iteration already.
  
! 	    The generated sequence:
  
! 	    pre-header:
! 	      bb1:
! 		i_1 = <number of leading inactive elements>
  
! 	    header:
! 	      bb2:
! 		i_2 = PHI <i_1(bb1), 0(latch)>
! 		…
  
! 	    early-exit:
! 	      bb3:
! 		i_3 = iv_step * i_2 + PHI<vector-iv>
  
! 	    The first part of the adjustment to create i_1 and i_2 are done here
! 	    and the last part creating i_3 is done in
! 	    vectorizable_live_operations when the induction extraction is
! 	    materialized.  */
! 	  if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
! 	      && !LOOP_VINFO_MASK_NITERS_PFA_OFFSET (loop_vinfo))
! 	    {
! 	      auto skip_niters = LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo);
! 	      tree ty_skip_niters = TREE_TYPE (skip_niters);
! 	      tree break_lhs_phi = vect_get_new_vect_var (ty_skip_niters,
! 							  vect_scalar_var,
! 							  "pfa_iv_offset");
! 	      gphi *nphi = create_phi_node (break_lhs_phi, bb);
! 	      add_phi_arg (nphi, skip_niters, pe, UNKNOWN_LOCATION);
! 	      add_phi_arg (nphi, build_zero_cst (ty_skip_niters),
! 			   loop_latch_edge (iv_loop), UNKNOWN_LOCATION);
  
! 	      LOOP_VINFO_MASK_NITERS_PFA_OFFSET (loop_vinfo)
! 		= PHI_RESULT (nphi);
! 	    }
  	}
!       tree step_mul = NULL_TREE;
!       unsigned ivn;
!       auto_vec<tree> vec_steps;
!       for (ivn = 0; ivn < nivs; ++ivn)
  	{
! 	  gimple_seq stmts = NULL;
! 	  bool invariant = true;
! 	  if (nunits.is_constant (&const_nunits))
  	    {
! 	      tree_vector_builder step_elts (step_vectype, const_nunits, 1);
! 	      tree_vector_builder init_elts (vectype, const_nunits, 1);
! 	      tree_vector_builder mul_elts (step_vectype, const_nunits, 1);
! 	      for (unsigned eltn = 0; eltn < const_nunits; ++eltn)
! 		{
! 		  /* The scalar steps of the IVs.  */
! 		  tree elt = steps[(ivn*const_nunits + eltn) % group_size];
! 		  elt = gimple_convert (&init_stmts,
! 					TREE_TYPE (step_vectype), elt);
! 		  step_elts.quick_push (elt);
! 		  if (!init_node)
! 		    {
! 		      /* The scalar inits of the IVs if not vectorized.  */
! 		      elt = inits[(ivn*const_nunits + eltn) % group_size];
! 		      if (!useless_type_conversion_p (TREE_TYPE (vectype),
! 						      TREE_TYPE (elt)))
! 			elt = gimple_build (&init_stmts, VIEW_CONVERT_EXPR,
! 					    TREE_TYPE (vectype), elt);
! 		      init_elts.quick_push (elt);
! 		    }
! 		  /* The number of steps to add to the initial values.  */
! 		  unsigned mul_elt = (ivn*const_nunits + eltn) / group_size;
! 		  mul_elts.quick_push (SCALAR_FLOAT_TYPE_P (stept)
! 				       ? build_real_from_wide (stept, mul_elt,
! 							       UNSIGNED)
! 				       : build_int_cstu (stept, mul_elt));
! 		}
! 	      vec_step = gimple_build_vector (&init_stmts, &step_elts);
! 	      step_mul = gimple_build_vector (&init_stmts, &mul_elts);
  	      if (!init_node)
- 		vec_init = gimple_build_vector (&init_stmts, &init_elts);
- 	    }
- 	  else
- 	    {
- 	      if (init_node)
- 		;
- 	      else if (INTEGRAL_TYPE_P (TREE_TYPE (steps[0])))
  		{
! 		  new_name = gimple_convert (&init_stmts, stept, inits[0]);
! 		  /* Build the initial value directly as a VEC_SERIES_EXPR.  */
! 		  vec_init = gimple_build (&init_stmts, VEC_SERIES_EXPR,
! 					   step_vectype, new_name, steps[0]);
! 		  if (!useless_type_conversion_p (vectype, step_vectype))
! 		    vec_init = gimple_build (&init_stmts, VIEW_CONVERT_EXPR,
! 					     vectype, vec_init);
! 		}
! 	      else
! 		{
! 		  /* Build:
! 		       [base, base, base, ...]
! 		       + (vectype) [0, 1, 2, ...] * [step, step, step, ...].  */
! 		  gcc_assert (SCALAR_FLOAT_TYPE_P (TREE_TYPE (steps[0])));
! 		  gcc_assert (flag_associative_math);
! 		  gcc_assert (index_vectype != NULL_TREE);
! 
! 		  tree index = build_index_vector (index_vectype, 0, 1);
! 		  new_name = gimple_convert (&init_stmts, TREE_TYPE (steps[0]),
! 					     inits[0]);
! 		  tree base_vec = gimple_build_vector_from_val (&init_stmts,
! 								step_vectype,
! 								new_name);
! 		  tree step_vec = gimple_build_vector_from_val (&init_stmts,
! 								step_vectype,
! 								steps[0]);
! 		  vec_init = gimple_build (&init_stmts, FLOAT_EXPR,
! 					   step_vectype, index);
! 		  vec_init = gimple_build (&init_stmts, MULT_EXPR,
! 					   step_vectype, vec_init, step_vec);
! 		  vec_init = gimple_build (&init_stmts, PLUS_EXPR,
! 					   step_vectype, vec_init, base_vec);
! 		  if (!useless_type_conversion_p (vectype, step_vectype))
! 		    vec_init = gimple_build (&init_stmts, VIEW_CONVERT_EXPR,
! 					     vectype, vec_init);
! 		}
! 	      /* iv_loop is nested in the loop to be vectorized. Generate:
! 		 vec_step = [S, S, S, S]  */
! 	      t = unshare_expr (steps[0]);
! 	      gcc_assert (CONSTANT_CLASS_P (t)
! 			  || TREE_CODE (t) == SSA_NAME);
! 	      vec_step = gimple_build_vector_from_val (&init_stmts,
! 						       step_vectype, t);
! 	    }
! 	  vec_steps.safe_push (vec_step);
! 	  if (peel_mul)
! 	    {
! 	      if (!step_mul)
! 		step_mul = peel_mul;
! 	      else
! 		step_mul = gimple_build (&init_stmts,
! 					 MINUS_EXPR, step_vectype,
! 					 step_mul, peel_mul);
! 	    }
! 
! 	  /* Create the induction-phi that defines the induction-operand.  */
! 	  vec_dest = vect_get_new_vect_var (vectype, vect_simple_var,
! 					    "vec_iv_");
! 	  induction_phi = create_phi_node (vec_dest, iv_loop->header);
! 	  induc_def = PHI_RESULT (induction_phi);
! 
! 	  /* Create the iv update inside the loop  */
! 	  tree up = vec_step;
! 	  if (lupdate_mul)
! 	    {
! 	      if (LOOP_VINFO_USING_SELECT_VL_P (loop_vinfo))
! 		{
! 		  /* When we're using loop_len produced by SELEC_VL, the
! 		     non-final iterations are not always processing VF
! 		     elements.  So vectorize induction variable instead of
! 
! 		       _21 = vect_vec_iv_.6_22 + { VF, ... };
! 
! 		     We should generate:
! 
! 		       _35 = .SELECT_VL (ivtmp_33, VF);
! 		       vect_cst__22 = [vec_duplicate_expr] _35;
! 		       _21 = vect_vec_iv_.6_22 + vect_cst__22;  */
! 		  vec_loop_lens *lens = &LOOP_VINFO_LENS (loop_vinfo);
! 		  tree len = vect_get_loop_len (loop_vinfo, NULL, lens, 1,
! 						vectype, 0, 0);
! 		  if (SCALAR_FLOAT_TYPE_P (stept))
! 		    expr = gimple_build (&stmts, FLOAT_EXPR, stept, len);
! 		  else
! 		    expr = gimple_convert (&stmts, stept, len);
! 		  lupdate_mul = gimple_build_vector_from_val (&stmts,
! 							      step_vectype,
! 							      expr);
! 		  up = gimple_build (&stmts, MULT_EXPR,
! 				     step_vectype, vec_step, lupdate_mul);
  		}
! 	      else
! 		up = gimple_build (&init_stmts,
! 				   MULT_EXPR, step_vectype,
! 				   vec_step, lupdate_mul);
  	    }
! 	  vec_def = gimple_convert (&stmts, step_vectype, induc_def);
! 	  vec_def = gimple_build (&stmts,
! 				  PLUS_EXPR, step_vectype, vec_def, up);
! 	  vec_def = gimple_convert (&stmts, vectype, vec_def);
! 	  insert_iv_increment (&incr_si, insert_after, stmts);
! 	  add_phi_arg (induction_phi, vec_def, loop_latch_edge (iv_loop),
! 		       UNKNOWN_LOCATION);
! 
  	  if (init_node)
! 	    vec_init = vect_get_slp_vect_def (init_node, ivn);
! 	  if (!nested_in_vect_loop
! 	      && step_mul
! 	      && !integer_zerop (step_mul))
  	    {
! 	      gcc_assert (invariant);
! 	      vec_def = gimple_convert (&init_stmts, step_vectype, vec_init);
! 	      up = gimple_build (&init_stmts, MULT_EXPR, step_vectype,
! 				 vec_step, step_mul);
! 	      vec_def = gimple_build (&init_stmts, PLUS_EXPR, step_vectype,
! 				      vec_def, up);
! 	      vec_init = gimple_convert (&init_stmts, vectype, vec_def);
  	    }
- 
- 	  /* Set the arguments of the phi node:  */
- 	  add_phi_arg (induction_phi, vec_init, pe, UNKNOWN_LOCATION);
- 
- 	  slp_node->push_vec_def (induction_phi);
- 	}
-       if (!nested_in_vect_loop)
- 	{
- 	  /* Fill up to the number of vectors we need for the whole group.  */
- 	  if (nunits.is_constant (&const_nunits))
- 	    nivs = least_common_multiple (group_size,
- 					  const_nunits) / const_nunits;
  	  else
- 	    nivs = 1;
- 	  vec_steps.reserve (nivs-ivn);
- 	  for (; ivn < nivs; ++ivn)
  	    {
! 	      slp_node->push_vec_def (SLP_TREE_VEC_DEFS (slp_node)[0]);
! 	      vec_steps.quick_push (vec_steps[0]);
  	    }
  	}
! 
!       /* Re-use IVs when we can.  We are generating further vector
! 	 stmts by adding VF' * stride to the IVs generated above.  */
!       if (ivn < nvects)
  	{
! 	  if (nunits.is_constant (&const_nunits))
! 	    {
! 	      unsigned vfp = (least_common_multiple (group_size, const_nunits)
! 			      / group_size);
! 	      lupdate_mul
! 		= build_vector_from_val (step_vectype,
! 					 SCALAR_FLOAT_TYPE_P (stept)
! 					 ? build_real_from_wide (stept,
! 								 vfp, UNSIGNED)
! 					 : build_int_cstu (stept, vfp));
! 	    }
  	  else
! 	    {
! 	      if (SCALAR_FLOAT_TYPE_P (stept))
! 		{
! 		  tree tem = build_int_cst (integer_type_node, nunits);
! 		  lupdate_mul = gimple_build (&init_stmts, FLOAT_EXPR,
! 					      stept, tem);
! 		}
! 	      else
! 		lupdate_mul = build_int_cst (stept, nunits);
! 	      lupdate_mul = gimple_build_vector_from_val (&init_stmts,
! 							  step_vectype,
! 							  lupdate_mul);
! 	    }
! 	  for (; ivn < nvects; ++ivn)
! 	    {
! 	      gimple *iv
! 		= SSA_NAME_DEF_STMT (SLP_TREE_VEC_DEFS (slp_node)[ivn - nivs]);
! 	      tree def = gimple_get_lhs (iv);
! 	      if (ivn < 2*nivs)
! 		vec_steps[ivn - nivs]
! 		  = gimple_build (&init_stmts, MULT_EXPR, step_vectype,
! 				  vec_steps[ivn - nivs], lupdate_mul);
! 	      gimple_seq stmts = NULL;
! 	      def = gimple_convert (&stmts, step_vectype, def);
! 	      def = gimple_build (&stmts, PLUS_EXPR, step_vectype,
! 				  def, vec_steps[ivn % nivs]);
! 	      def = gimple_convert (&stmts, vectype, def);
! 	      if (gimple_code (iv) == GIMPLE_PHI)
! 		gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
! 	      else
! 		{
! 		  gimple_stmt_iterator tgsi = gsi_for_stmt (iv);
! 		  gsi_insert_seq_after (&tgsi, stmts, GSI_CONTINUE_LINKING);
! 		}
! 	      slp_node->push_vec_def (def);
! 	    }
  	}
  
!       new_bb = gsi_insert_seq_on_edge_immediate (pe, init_stmts);
!       gcc_assert (!new_bb);
! 
!       return true;
!     }
! 
!   tree init_expr = vect_phi_initial_value (phi);
! 
!   gimple_seq stmts = NULL;
!   if (!nested_in_vect_loop)
!     {
!       /* Convert the initial value to the IV update type.  */
!       tree new_type = TREE_TYPE (step_expr);
!       init_expr = gimple_convert (&stmts, new_type, init_expr);
  
!       /* If we are using the loop mask to "peel" for alignment then we need
! 	 to adjust the start value here.  */
!       tree skip_niters = LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo);
!       if (skip_niters != NULL_TREE)
  	{
! 	  if (FLOAT_TYPE_P (vectype))
! 	    skip_niters = gimple_build (&stmts, FLOAT_EXPR, new_type,
! 					skip_niters);
! 	  else
! 	    skip_niters = gimple_convert (&stmts, new_type, skip_niters);
! 	  tree skip_step = gimple_build (&stmts, MULT_EXPR, new_type,
! 					 skip_niters, step_expr);
! 	  init_expr = gimple_build (&stmts, MINUS_EXPR, new_type,
! 				    init_expr, skip_step);
! 	}
!     }
  
!   if (stmts)
!     {
!       new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts);
!       gcc_assert (!new_bb);
!     }
  
!   /* Create the vector that holds the initial_value of the induction.  */
!   if (nested_in_vect_loop)
!     {
!       /* iv_loop is nested in the loop to be vectorized.  init_expr had already
! 	 been created during vectorization of previous stmts.  We obtain it
! 	 from the STMT_VINFO_VEC_STMT of the defining stmt.  */
!       auto_vec<tree> vec_inits;
!       vect_get_vec_defs_for_operand (loop_vinfo, stmt_info, 1,
! 				     init_expr, &vec_inits);
!       vec_init = vec_inits[0];
!       /* If the initial value is not of proper type, convert it.  */
!       if (!useless_type_conversion_p (vectype, TREE_TYPE (vec_init)))
! 	{
! 	  new_stmt
! 	    = gimple_build_assign (vect_get_new_ssa_name (vectype,
! 							  vect_simple_var,
! 							  "vec_iv_"),
! 				   VIEW_CONVERT_EXPR,
! 				   build1 (VIEW_CONVERT_EXPR, vectype,
! 					   vec_init));
! 	  vec_init = gimple_assign_lhs (new_stmt);
! 	  new_bb = gsi_insert_on_edge_immediate (loop_preheader_edge (iv_loop),
! 						 new_stmt);
! 	  gcc_assert (!new_bb);
! 	}
!     }
!   else
!     {
!       /* iv_loop is the loop to be vectorized. Create:
! 	 vec_init = [X, X+S, X+2*S, X+3*S] (S = step_expr, X = init_expr)  */
!       stmts = NULL;
!       new_name = gimple_convert (&stmts, TREE_TYPE (step_expr), init_expr);
  
!       unsigned HOST_WIDE_INT const_nunits;
!       if (nunits.is_constant (&const_nunits))
! 	{
! 	  tree_vector_builder elts (step_vectype, const_nunits, 1);
! 	  elts.quick_push (new_name);
! 	  for (i = 1; i < const_nunits; i++)
! 	    {
! 	      /* Create: new_name_i = new_name + step_expr  */
! 	      new_name = gimple_build (&stmts, PLUS_EXPR, TREE_TYPE (new_name),
! 				       new_name, step_expr);
! 	      elts.quick_push (new_name);
  	    }
! 	  /* Create a vector from [new_name_0, new_name_1, ...,
! 	     new_name_nunits-1]  */
! 	  vec_init = gimple_build_vector (&stmts, &elts);
! 	}
!       else if (INTEGRAL_TYPE_P (TREE_TYPE (step_expr)))
! 	/* Build the initial value directly from a VEC_SERIES_EXPR.  */
! 	vec_init = gimple_build (&stmts, VEC_SERIES_EXPR, step_vectype,
! 				 new_name, step_expr);
!       else
! 	{
! 	  /* Build:
! 	        [base, base, base, ...]
! 		+ (vectype) [0, 1, 2, ...] * [step, step, step, ...].  */
! 	  gcc_assert (SCALAR_FLOAT_TYPE_P (TREE_TYPE (step_expr)));
! 	  gcc_assert (flag_associative_math);
! 	  gcc_assert (index_vectype != NULL_TREE);
! 
! 	  tree index = build_index_vector (index_vectype, 0, 1);
! 	  tree base_vec = gimple_build_vector_from_val (&stmts, step_vectype,
! 							new_name);
! 	  tree step_vec = gimple_build_vector_from_val (&stmts, step_vectype,
! 							step_expr);
! 	  vec_init = gimple_build (&stmts, FLOAT_EXPR, step_vectype, index);
! 	  vec_init = gimple_build (&stmts, MULT_EXPR, step_vectype,
! 				   vec_init, step_vec);
! 	  vec_init = gimple_build (&stmts, PLUS_EXPR, step_vectype,
! 				   vec_init, base_vec);
  	}
!       vec_init = gimple_convert (&stmts, vectype, vec_init);
  
!       if (stmts)
  	{
! 	  new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts);
! 	  gcc_assert (!new_bb);
  	}
-     }
  
  
!   /* Create the vector that holds the step of the induction.  */
!   gimple_stmt_iterator *step_iv_si = NULL;
!   if (nested_in_vect_loop)
!     /* iv_loop is nested in the loop to be vectorized. Generate:
!        vec_step = [S, S, S, S]  */
!     new_name = step_expr;
!   else if (LOOP_VINFO_USING_SELECT_VL_P (loop_vinfo))
!     {
!       /* When we're using loop_len produced by SELEC_VL, the non-final
! 	 iterations are not always processing VF elements.  So vectorize
! 	 induction variable instead of
! 
! 	   _21 = vect_vec_iv_.6_22 + { VF, ... };
! 
! 	 We should generate:
! 
! 	   _35 = .SELECT_VL (ivtmp_33, VF);
! 	   vect_cst__22 = [vec_duplicate_expr] _35;
! 	   _21 = vect_vec_iv_.6_22 + vect_cst__22;  */
!       gcc_assert (!slp_node);
!       gimple_seq seq = NULL;
!       vec_loop_lens *lens = &LOOP_VINFO_LENS (loop_vinfo);
!       tree len = vect_get_loop_len (loop_vinfo, NULL, lens, 1, vectype, 0, 0);
!       expr = force_gimple_operand (fold_convert (TREE_TYPE (step_expr),
! 						 unshare_expr (len)),
! 				   &seq, true, NULL_TREE);
!       new_name = gimple_build (&seq, MULT_EXPR, TREE_TYPE (step_expr), expr,
! 			       step_expr);
!       gsi_insert_seq_before (&si, seq, GSI_SAME_STMT);
!       step_iv_si = &si;
      }
!   else
      {
!       /* iv_loop is the loop to be vectorized. Generate:
! 	  vec_step = [VF*S, VF*S, VF*S, VF*S]  */
!       gimple_seq seq = NULL;
!       if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (step_expr)))
! 	{
! 	  expr = build_int_cst (integer_type_node, vf);
! 	  expr = gimple_build (&seq, FLOAT_EXPR, TREE_TYPE (step_expr), expr);
! 	}
        else
! 	expr = build_int_cst (TREE_TYPE (step_expr), vf);
!       new_name = gimple_build (&seq, MULT_EXPR, TREE_TYPE (step_expr),
! 			       expr, step_expr);
!       if (seq)
  	{
! 	  new_bb = gsi_insert_seq_on_edge_immediate (pe, seq);
! 	  gcc_assert (!new_bb);
  	}
      }
  
!   t = unshare_expr (new_name);
!   gcc_assert (CONSTANT_CLASS_P (new_name)
! 	      || TREE_CODE (new_name) == SSA_NAME);
!   new_vec = build_vector_from_val (step_vectype, t);
!   vec_step = vect_init_vector (loop_vinfo, stmt_info,
! 			       new_vec, step_vectype, step_iv_si);
! 
! 
!   /* Create the following def-use cycle:
!      loop prolog:
!          vec_init = ...
! 	 vec_step = ...
!      loop:
!          vec_iv = PHI <vec_init, vec_loop>
!          ...
!          STMT
!          ...
!          vec_loop = vec_iv + vec_step;  */
! 
!   /* Create the induction-phi that defines the induction-operand.  */
!   vec_dest = vect_get_new_vect_var (vectype, vect_simple_var, "vec_iv_");
!   induction_phi = create_phi_node (vec_dest, iv_loop->header);
!   induc_def = PHI_RESULT (induction_phi);
! 
!   /* Create the iv update inside the loop  */
!   stmts = NULL;
!   vec_def = gimple_convert (&stmts, step_vectype, induc_def);
!   vec_def = gimple_build (&stmts, PLUS_EXPR, step_vectype, vec_def, vec_step);
!   vec_def = gimple_convert (&stmts, vectype, vec_def);
!   gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
!   new_stmt = SSA_NAME_DEF_STMT (vec_def);
! 
!   /* Set the arguments of the phi node:  */
!   add_phi_arg (induction_phi, vec_init, pe, UNKNOWN_LOCATION);
!   add_phi_arg (induction_phi, vec_def, loop_latch_edge (iv_loop),
! 	       UNKNOWN_LOCATION);
! 
!   STMT_VINFO_VEC_STMTS (stmt_info).safe_push (induction_phi);
!   *vec_stmt = induction_phi;
! 
!   /* In case that vectorization factor (VF) is bigger than the number
!      of elements that we can fit in a vectype (nunits), we have to generate
!      more than one vector stmt - i.e - we need to "unroll" the
!      vector stmt by a factor VF/nunits.  For more details see documentation
!      in vectorizable_operation.  */
! 
!   if (ncopies > 1)
      {
!       gimple_seq seq = NULL;
!       /* FORNOW. This restriction should be relaxed.  */
!       gcc_assert (!nested_in_vect_loop);
!       /* We expect LOOP_VINFO_USING_SELECT_VL_P to be false if ncopies > 1.  */
!       gcc_assert (!LOOP_VINFO_USING_SELECT_VL_P (loop_vinfo));
! 
!       /* Create the vector that holds the step of the induction.  */
!       if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (step_expr)))
  	{
! 	  expr = build_int_cst (integer_type_node, nunits);
! 	  expr = gimple_build (&seq, FLOAT_EXPR, TREE_TYPE (step_expr), expr);
  	}
        else
- 	expr = build_int_cst (TREE_TYPE (step_expr), nunits);
-       new_name = gimple_build (&seq, MULT_EXPR, TREE_TYPE (step_expr),
- 			       expr, step_expr);
-       if (seq)
  	{
! 	  new_bb = gsi_insert_seq_on_edge_immediate (pe, seq);
! 	  gcc_assert (!new_bb);
  	}
! 
!       t = unshare_expr (new_name);
!       gcc_assert (CONSTANT_CLASS_P (new_name)
! 		  || TREE_CODE (new_name) == SSA_NAME);
!       new_vec = build_vector_from_val (step_vectype, t);
!       vec_step = vect_init_vector (loop_vinfo, stmt_info,
! 				   new_vec, step_vectype, NULL);
! 
!       vec_def = induc_def;
!       for (i = 1; i < ncopies + 1; i++)
  	{
! 	  /* vec_i = vec_prev + vec_step  */
  	  gimple_seq stmts = NULL;
! 	  vec_def = gimple_convert (&stmts, step_vectype, vec_def);
! 	  vec_def = gimple_build (&stmts,
! 				  PLUS_EXPR, step_vectype, vec_def, vec_step);
! 	  vec_def = gimple_convert (&stmts, vectype, vec_def);
! 
! 	  gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
! 	  if (i < ncopies)
! 	    {
! 	      new_stmt = SSA_NAME_DEF_STMT (vec_def);
! 	      STMT_VINFO_VEC_STMTS (stmt_info).safe_push (new_stmt);
! 	    }
  	  else
  	    {
! 	      /* vec_1 = vec_iv + (VF/n * S)
! 		 vec_2 = vec_1 + (VF/n * S)
! 		 ...
! 		 vec_n = vec_prev + (VF/n * S) = vec_iv + VF * S = vec_loop
! 
! 		 vec_n is used as vec_loop to save the large step register and
! 		 related operations.  */
! 	      add_phi_arg (induction_phi, vec_def, loop_latch_edge (iv_loop),
! 			   UNKNOWN_LOCATION);
  	    }
  	}
      }
  
!   if (dump_enabled_p ())
!     dump_printf_loc (MSG_NOTE, vect_location,
! 		     "transform induction: created def-use cycle: %G%G",
! 		     (gimple *) induction_phi, SSA_NAME_DEF_STMT (vec_def));
  
    return true;
  }
--- 10179,10552 ----
       with group size 3 we need
         [i0, i1, i2, i0 + S0] [i1 + S1, i2 + S2, i0 + 2*S0, i1 + 2*S1]
         [i2 + 2*S2, i0 + 3*S0, i1 + 3*S1, i2 + 3*S2].  */
!   gimple_stmt_iterator incr_si;
!   bool insert_after;
!   standard_iv_increment_position (iv_loop, &incr_si, &insert_after);
  
!   /* The initial values are vectorized, but any lanes > group_size
!      need adjustment.  */
!   slp_tree init_node
!       = SLP_TREE_CHILDREN (slp_node)[pe->dest_idx];
  
!   /* Gather steps.  Since we do not vectorize inductions as
!      cycles we have to reconstruct the step from SCEV data.  */
!   unsigned group_size = SLP_TREE_LANES (slp_node);
!   tree *steps = XALLOCAVEC (tree, group_size);
!   tree *inits = XALLOCAVEC (tree, group_size);
!   stmt_vec_info phi_info;
!   FOR_EACH_VEC_ELT (SLP_TREE_SCALAR_STMTS (slp_node), i, phi_info)
!     {
!       steps[i] = STMT_VINFO_LOOP_PHI_EVOLUTION_PART (phi_info);
!       if (!init_node)
! 	inits[i] = gimple_phi_arg_def (as_a<gphi *> (phi_info->stmt),
! 				       pe->dest_idx);
!     }
  
!   /* Now generate the IVs.  */
!   unsigned nvects = SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node);
!   gcc_assert (multiple_p (nunits * nvects, group_size));
!   unsigned nivs;
!   unsigned HOST_WIDE_INT const_nunits;
!   if (nested_in_vect_loop)
!     nivs = nvects;
!   else if (nunits.is_constant (&const_nunits))
!     {
!       /* Compute the number of distinct IVs we need.  First reduce
! 	 group_size if it is a multiple of const_nunits so we get
! 	 one IV for a group_size of 4 but const_nunits 2.  */
!       unsigned group_sizep = group_size;
!       if (group_sizep % const_nunits == 0)
! 	group_sizep = group_sizep / const_nunits;
!       nivs = least_common_multiple (group_sizep, const_nunits) / const_nunits;
!     }
!   else
!     {
!       gcc_assert (SLP_TREE_LANES (slp_node) == 1);
!       nivs = 1;
!     }
!   gimple_seq init_stmts = NULL;
!   tree lupdate_mul = NULL_TREE;
!   if (!nested_in_vect_loop)
!     {
!       if (nunits.is_constant (&const_nunits))
  	{
! 	  /* The number of iterations covered in one vector iteration.  */
! 	  unsigned lup_mul = (nvects * const_nunits) / group_size;
! 	  lupdate_mul
! 	    = build_vector_from_val (step_vectype,
! 				     SCALAR_FLOAT_TYPE_P (stept)
! 				     ? build_real_from_wide (stept, lup_mul,
! 							     UNSIGNED)
! 				     : build_int_cstu (stept, lup_mul));
  	}
        else
  	{
! 	  if (SCALAR_FLOAT_TYPE_P (stept))
  	    {
! 	      tree tem = build_int_cst (integer_type_node, vf);
! 	      lupdate_mul = gimple_build (&init_stmts, FLOAT_EXPR, stept, tem);
  	    }
  	  else
! 	    lupdate_mul = build_int_cst (stept, vf);
! 	  lupdate_mul = gimple_build_vector_from_val (&init_stmts, step_vectype,
! 						      lupdate_mul);
  	}
!     }
!   tree peel_mul = NULL_TREE;
!   if (LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo))
!     {
!       if (SCALAR_FLOAT_TYPE_P (stept))
! 	peel_mul = gimple_build (&init_stmts, FLOAT_EXPR, stept,
! 				 LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo));
!       else
! 	peel_mul = gimple_convert (&init_stmts, stept,
! 				   LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo));
!       peel_mul = gimple_build_vector_from_val (&init_stmts,
! 					       step_vectype, peel_mul);
  
!       /* If early break then we have to create a new PHI which we can use as
! 	 an offset to adjust the induction reduction in early exits.
  
! 	 This is because when peeling for alignment using masking, the first
! 	 few elements of the vector can be inactive.  As such if we find the
! 	 entry in the first iteration we have adjust the starting point of
! 	 the scalar code.
  
! 	 We do this by creating a new scalar PHI that keeps track of whether
! 	 we are the first iteration of the loop (with the additional masking)
! 	 or whether we have taken a loop iteration already.
  
! 	 The generated sequence:
  
! 	 pre-header:
! 	   bb1:
! 	     i_1 = <number of leading inactive elements>
  
! 	   header:
! 	   bb2:
! 	     i_2 = PHI <i_1(bb1), 0(latch)>
! 	     …
  
! 	   early-exit:
! 	   bb3:
! 	     i_3 = iv_step * i_2 + PHI<vector-iv>
  
! 	 The first part of the adjustment to create i_1 and i_2 are done here
! 	 and the last part creating i_3 is done in
! 	 vectorizable_live_operations when the induction extraction is
! 	 materialized.  */
!       if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
! 	  && !LOOP_VINFO_MASK_NITERS_PFA_OFFSET (loop_vinfo))
! 	{
! 	  auto skip_niters = LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo);
! 	  tree ty_skip_niters = TREE_TYPE (skip_niters);
! 	  tree break_lhs_phi = vect_get_new_vect_var (ty_skip_niters,
! 						      vect_scalar_var,
! 						      "pfa_iv_offset");
! 	  gphi *nphi = create_phi_node (break_lhs_phi, bb);
! 	  add_phi_arg (nphi, skip_niters, pe, UNKNOWN_LOCATION);
! 	  add_phi_arg (nphi, build_zero_cst (ty_skip_niters),
! 		       loop_latch_edge (iv_loop), UNKNOWN_LOCATION);
  
! 	  LOOP_VINFO_MASK_NITERS_PFA_OFFSET (loop_vinfo) = PHI_RESULT (nphi);
  	}
!     }
!   tree step_mul = NULL_TREE;
!   unsigned ivn;
!   auto_vec<tree> vec_steps;
!   for (ivn = 0; ivn < nivs; ++ivn)
!     {
!       gimple_seq stmts = NULL;
!       bool invariant = true;
!       if (nunits.is_constant (&const_nunits))
  	{
! 	  tree_vector_builder step_elts (step_vectype, const_nunits, 1);
! 	  tree_vector_builder init_elts (vectype, const_nunits, 1);
! 	  tree_vector_builder mul_elts (step_vectype, const_nunits, 1);
! 	  for (unsigned eltn = 0; eltn < const_nunits; ++eltn)
  	    {
! 	      /* The scalar steps of the IVs.  */
! 	      tree elt = steps[(ivn*const_nunits + eltn) % group_size];
! 	      elt = gimple_convert (&init_stmts, TREE_TYPE (step_vectype), elt);
! 	      step_elts.quick_push (elt);
  	      if (!init_node)
  		{
! 		  /* The scalar inits of the IVs if not vectorized.  */
! 		  elt = inits[(ivn*const_nunits + eltn) % group_size];
! 		  if (!useless_type_conversion_p (TREE_TYPE (vectype),
! 						  TREE_TYPE (elt)))
! 		    elt = gimple_build (&init_stmts, VIEW_CONVERT_EXPR,
! 					TREE_TYPE (vectype), elt);
! 		  init_elts.quick_push (elt);
  		}
! 	      /* The number of steps to add to the initial values.  */
! 	      unsigned mul_elt = (ivn*const_nunits + eltn) / group_size;
! 	      mul_elts.quick_push (SCALAR_FLOAT_TYPE_P (stept)
! 				   ? build_real_from_wide (stept, mul_elt,
! 							   UNSIGNED)
! 				   : build_int_cstu (stept, mul_elt));
  	    }
! 	  vec_step = gimple_build_vector (&init_stmts, &step_elts);
! 	  step_mul = gimple_build_vector (&init_stmts, &mul_elts);
! 	  if (!init_node)
! 	    vec_init = gimple_build_vector (&init_stmts, &init_elts);
! 	}
!       else
! 	{
  	  if (init_node)
! 	    ;
! 	  else if (INTEGRAL_TYPE_P (TREE_TYPE (steps[0])))
  	    {
! 	      new_name = gimple_convert (&init_stmts, stept, inits[0]);
! 	      /* Build the initial value directly as a VEC_SERIES_EXPR.  */
! 	      vec_init = gimple_build (&init_stmts, VEC_SERIES_EXPR,
! 				       step_vectype, new_name, steps[0]);
! 	      if (!useless_type_conversion_p (vectype, step_vectype))
! 		vec_init = gimple_build (&init_stmts, VIEW_CONVERT_EXPR,
! 					 vectype, vec_init);
  	    }
  	  else
  	    {
! 	      /* Build:
! 		 [base, base, base, ...]
! 		 + (vectype) [0, 1, 2, ...] * [step, step, step, ...].  */
! 	      gcc_assert (SCALAR_FLOAT_TYPE_P (TREE_TYPE (steps[0])));
! 	      gcc_assert (flag_associative_math);
! 	      gcc_assert (index_vectype != NULL_TREE);
! 
! 	      tree index = build_index_vector (index_vectype, 0, 1);
! 	      new_name = gimple_convert (&init_stmts, TREE_TYPE (steps[0]),
! 					 inits[0]);
! 	      tree base_vec = gimple_build_vector_from_val (&init_stmts,
! 							    step_vectype,
! 							    new_name);
! 	      tree step_vec = gimple_build_vector_from_val (&init_stmts,
! 							    step_vectype,
! 							    steps[0]);
! 	      vec_init = gimple_build (&init_stmts, FLOAT_EXPR,
! 				       step_vectype, index);
! 	      vec_init = gimple_build (&init_stmts, MULT_EXPR,
! 				       step_vectype, vec_init, step_vec);
! 	      vec_init = gimple_build (&init_stmts, PLUS_EXPR,
! 				       step_vectype, vec_init, base_vec);
! 	      if (!useless_type_conversion_p (vectype, step_vectype))
! 		vec_init = gimple_build (&init_stmts, VIEW_CONVERT_EXPR,
! 					 vectype, vec_init);
  	    }
+ 	  /* iv_loop is nested in the loop to be vectorized. Generate:
+ 	     vec_step = [S, S, S, S]  */
+ 	  t = unshare_expr (steps[0]);
+ 	  gcc_assert (CONSTANT_CLASS_P (t)
+ 		      || TREE_CODE (t) == SSA_NAME);
+ 	  vec_step = gimple_build_vector_from_val (&init_stmts,
+ 						   step_vectype, t);
  	}
!       vec_steps.safe_push (vec_step);
!       if (peel_mul)
  	{
! 	  if (!step_mul)
! 	    step_mul = peel_mul;
  	  else
! 	    step_mul = gimple_build (&init_stmts,
! 				     MINUS_EXPR, step_vectype,
! 				     step_mul, peel_mul);
  	}
  
!       /* Create the induction-phi that defines the induction-operand.  */
!       vec_dest = vect_get_new_vect_var (vectype, vect_simple_var,
! 					"vec_iv_");
!       induction_phi = create_phi_node (vec_dest, iv_loop->header);
!       induc_def = PHI_RESULT (induction_phi);
  
!       /* Create the iv update inside the loop  */
!       tree up = vec_step;
!       if (lupdate_mul)
  	{
! 	  if (LOOP_VINFO_USING_SELECT_VL_P (loop_vinfo))
! 	    {
! 	      /* When we're using loop_len produced by SELEC_VL, the
! 		 non-final iterations are not always processing VF
! 		 elements.  So vectorize induction variable instead of
  
! 		   _21 = vect_vec_iv_.6_22 + { VF, ... };
  
! 		 We should generate:
  
! 		   _35 = .SELECT_VL (ivtmp_33, VF);
! 		   vect_cst__22 = [vec_duplicate_expr] _35;
! 		   _21 = vect_vec_iv_.6_22 + vect_cst__22;  */
! 	      vec_loop_lens *lens = &LOOP_VINFO_LENS (loop_vinfo);
! 	      tree len = vect_get_loop_len (loop_vinfo, NULL, lens, 1,
! 					    vectype, 0, 0);
! 	      if (SCALAR_FLOAT_TYPE_P (stept))
! 		expr = gimple_build (&stmts, FLOAT_EXPR, stept, len);
! 	      else
! 		expr = gimple_convert (&stmts, stept, len);
! 	      lupdate_mul = gimple_build_vector_from_val (&stmts, step_vectype,
! 							  expr);
! 	      up = gimple_build (&stmts, MULT_EXPR,
! 				 step_vectype, vec_step, lupdate_mul);
  	    }
! 	  else
! 	    up = gimple_build (&init_stmts, MULT_EXPR, step_vectype,
! 			       vec_step, lupdate_mul);
  	}
!       vec_def = gimple_convert (&stmts, step_vectype, induc_def);
!       vec_def = gimple_build (&stmts, PLUS_EXPR, step_vectype, vec_def, up);
!       vec_def = gimple_convert (&stmts, vectype, vec_def);
!       insert_iv_increment (&incr_si, insert_after, stmts);
!       add_phi_arg (induction_phi, vec_def, loop_latch_edge (iv_loop),
! 		   UNKNOWN_LOCATION);
  
!       if (init_node)
! 	vec_init = vect_get_slp_vect_def (init_node, ivn);
!       if (!nested_in_vect_loop
! 	  && step_mul
! 	  && !integer_zerop (step_mul))
  	{
! 	  gcc_assert (invariant);
! 	  vec_def = gimple_convert (&init_stmts, step_vectype, vec_init);
! 	  up = gimple_build (&init_stmts, MULT_EXPR, step_vectype,
! 			     vec_step, step_mul);
! 	  vec_def = gimple_build (&init_stmts, PLUS_EXPR, step_vectype,
! 				  vec_def, up);
! 	  vec_init = gimple_convert (&init_stmts, vectype, vec_def);
  	}
  
+       /* Set the arguments of the phi node:  */
+       add_phi_arg (induction_phi, vec_init, pe, UNKNOWN_LOCATION);
  
!       slp_node->push_vec_def (induction_phi);
      }
!   if (!nested_in_vect_loop)
      {
!       /* Fill up to the number of vectors we need for the whole group.  */
!       if (nunits.is_constant (&const_nunits))
! 	nivs = least_common_multiple (group_size, const_nunits) / const_nunits;
        else
! 	nivs = 1;
!       vec_steps.reserve (nivs-ivn);
!       for (; ivn < nivs; ++ivn)
  	{
! 	  slp_node->push_vec_def (SLP_TREE_VEC_DEFS (slp_node)[0]);
! 	  vec_steps.quick_push (vec_steps[0]);
  	}
      }
  
!   /* Re-use IVs when we can.  We are generating further vector
!      stmts by adding VF' * stride to the IVs generated above.  */
!   if (ivn < nvects)
      {
!       if (nunits.is_constant (&const_nunits))
  	{
! 	  unsigned vfp = (least_common_multiple (group_size, const_nunits)
! 			  / group_size);
! 	  lupdate_mul
! 	      = build_vector_from_val (step_vectype,
! 				       SCALAR_FLOAT_TYPE_P (stept)
! 				       ? build_real_from_wide (stept,
! 							       vfp, UNSIGNED)
! 				       : build_int_cstu (stept, vfp));
  	}
        else
  	{
! 	  if (SCALAR_FLOAT_TYPE_P (stept))
! 	    {
! 	      tree tem = build_int_cst (integer_type_node, nunits);
! 	      lupdate_mul = gimple_build (&init_stmts, FLOAT_EXPR, stept, tem);
! 	    }
! 	  else
! 	    lupdate_mul = build_int_cst (stept, nunits);
! 	  lupdate_mul = gimple_build_vector_from_val (&init_stmts, step_vectype,
! 						      lupdate_mul);
  	}
!       for (; ivn < nvects; ++ivn)
  	{
! 	  gimple *iv
! 	    = SSA_NAME_DEF_STMT (SLP_TREE_VEC_DEFS (slp_node)[ivn - nivs]);
! 	  tree def = gimple_get_lhs (iv);
! 	  if (ivn < 2*nivs)
! 	    vec_steps[ivn - nivs]
! 	      = gimple_build (&init_stmts, MULT_EXPR, step_vectype,
! 			      vec_steps[ivn - nivs], lupdate_mul);
  	  gimple_seq stmts = NULL;
! 	  def = gimple_convert (&stmts, step_vectype, def);
! 	  def = gimple_build (&stmts, PLUS_EXPR, step_vectype,
! 			      def, vec_steps[ivn % nivs]);
! 	  def = gimple_convert (&stmts, vectype, def);
! 	  if (gimple_code (iv) == GIMPLE_PHI)
! 	    gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
  	  else
  	    {
! 	      gimple_stmt_iterator tgsi = gsi_for_stmt (iv);
! 	      gsi_insert_seq_after (&tgsi, stmts, GSI_CONTINUE_LINKING);
  	    }
+ 	  slp_node->push_vec_def (def);
  	}
      }
  
!   new_bb = gsi_insert_seq_on_edge_immediate (pe, init_stmts);
!   gcc_assert (!new_bb);
  
    return true;
  }
diff -Nrcpad gcc-16-20250511/gcc/tree-vect-patterns.cc gcc-16-20250518/gcc/tree-vect-patterns.cc
*** gcc-16-20250511/gcc/tree-vect-patterns.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-vect-patterns.cc	Sun May 18 22:32:55 2025
*************** vect_recog_cond_expr_convert_pattern (ve
*** 1098,1103 ****
--- 1098,1104 ----
    tree lhs, match[4], temp, type, new_lhs, op2;
    gimple *cond_stmt;
    gimple *pattern_stmt;
+   enum tree_code code = NOP_EXPR;
  
    if (!last_stmt)
      return NULL;
*************** vect_recog_cond_expr_convert_pattern (ve
*** 1111,1116 ****
--- 1112,1122 ----
  
    vect_pattern_detected ("vect_recog_cond_expr_convert_pattern", last_stmt);
  
+   if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (lhs)))
+     code = INTEGRAL_TYPE_P (TREE_TYPE (match[1])) ? FLOAT_EXPR : CONVERT_EXPR;
+   else if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (match[1])))
+     code = FIX_TRUNC_EXPR;
+ 
    op2 = match[2];
    type = TREE_TYPE (match[1]);
    if (TYPE_SIGN (type) != TYPE_SIGN (TREE_TYPE (match[2])))
*************** vect_recog_cond_expr_convert_pattern (ve
*** 1127,1133 ****
    append_pattern_def_seq (vinfo, stmt_vinfo, cond_stmt,
  			  get_vectype_for_scalar_type (vinfo, type));
    new_lhs = vect_recog_temp_ssa_var (TREE_TYPE (lhs), NULL);
!   pattern_stmt = gimple_build_assign (new_lhs, NOP_EXPR, temp);
    *type_out = STMT_VINFO_VECTYPE (stmt_vinfo);
  
    if (dump_enabled_p ())
--- 1133,1139 ----
    append_pattern_def_seq (vinfo, stmt_vinfo, cond_stmt,
  			  get_vectype_for_scalar_type (vinfo, type));
    new_lhs = vect_recog_temp_ssa_var (TREE_TYPE (lhs), NULL);
!   pattern_stmt = gimple_build_assign (new_lhs, code, temp);
    *type_out = STMT_VINFO_VECTYPE (stmt_vinfo);
  
    if (dump_enabled_p ())
diff -Nrcpad gcc-16-20250511/gcc/tree-vect-slp.cc gcc-16-20250518/gcc/tree-vect-slp.cc
*** gcc-16-20250511/gcc/tree-vect-slp.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-vect-slp.cc	Sun May 18 22:32:55 2025
*************** vect_prologue_cost_for_slp (slp_tree nod
*** 8036,8042 ****
  	 we are costing so avoid passing it down more than once.  Pass
  	 it to the first vec_construct or scalar_to_vec part since for those
  	 the x86 backend tries to account for GPR to XMM register moves.  */
!       record_stmt_cost (cost_vec, 1, kind,
  			(kind != vector_load && !passed) ? node : nullptr,
  			vectype, 0, vect_prologue);
        if (kind != vector_load)
--- 8036,8042 ----
  	 we are costing so avoid passing it down more than once.  Pass
  	 it to the first vec_construct or scalar_to_vec part since for those
  	 the x86 backend tries to account for GPR to XMM register moves.  */
!       record_stmt_cost (cost_vec, 1, kind, nullptr,
  			(kind != vector_load && !passed) ? node : nullptr,
  			vectype, 0, vect_prologue);
        if (kind != vector_load)
diff -Nrcpad gcc-16-20250511/gcc/tree-vect-stmts.cc gcc-16-20250518/gcc/tree-vect-stmts.cc
*** gcc-16-20250511/gcc/tree-vect-stmts.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-vect-stmts.cc	Sun May 18 22:32:55 2025
*************** record_stmt_cost (stmt_vector_for_cost *
*** 130,136 ****
  		  tree vectype, int misalign,
  		  enum vect_cost_model_location where)
  {
!   return record_stmt_cost (body_cost_vec, count, kind, NULL, node,
  			   vectype, misalign, where);
  }
  
--- 130,137 ----
  		  tree vectype, int misalign,
  		  enum vect_cost_model_location where)
  {
!   return record_stmt_cost (body_cost_vec, count, kind,
! 			   SLP_TREE_REPRESENTATIVE (node), node,
  			   vectype, misalign, where);
  }
  
*************** vect_mark_stmts_to_be_vectorized (loop_v
*** 905,915 ****
     be generated for the single vector op.  We will handle that shortly.  */
  
  static void
! vect_model_simple_cost (vec_info *,
! 			stmt_vec_info stmt_info, int ncopies,
! 			enum vect_def_type *dt,
! 			int ndts,
! 			slp_tree node,
  			stmt_vector_for_cost *cost_vec,
  			vect_cost_for_stmt kind = vector_stmt)
  {
--- 906,913 ----
     be generated for the single vector op.  We will handle that shortly.  */
  
  static void
! vect_model_simple_cost (vec_info *, int ncopies, enum vect_def_type *dt,
! 			int ndts, slp_tree node,
  			stmt_vector_for_cost *cost_vec,
  			vect_cost_for_stmt kind = vector_stmt)
  {
*************** vect_model_simple_cost (vec_info *,
*** 928,938 ****
      for (int i = 0; i < ndts; i++)
        if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
  	prologue_cost += record_stmt_cost (cost_vec, 1, scalar_to_vec,
! 					   stmt_info, 0, vect_prologue);
  
    /* Pass the inside-of-loop statements to the target-specific cost model.  */
    inside_cost += record_stmt_cost (cost_vec, ncopies, kind,
! 				   stmt_info, 0, vect_body);
  
    if (dump_enabled_p ())
      dump_printf_loc (MSG_NOTE, vect_location,
--- 926,936 ----
      for (int i = 0; i < ndts; i++)
        if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
  	prologue_cost += record_stmt_cost (cost_vec, 1, scalar_to_vec,
! 					   node, 0, vect_prologue);
  
    /* Pass the inside-of-loop statements to the target-specific cost model.  */
    inside_cost += record_stmt_cost (cost_vec, ncopies, kind,
! 				   node, 0, vect_body);
  
    if (dump_enabled_p ())
      dump_printf_loc (MSG_NOTE, vect_location,
*************** vect_get_store_cost (vec_info *, stmt_ve
*** 1019,1031 ****
  		     unsigned int *inside_cost,
  		     stmt_vector_for_cost *body_cost_vec)
  {
    switch (alignment_support_scheme)
      {
      case dr_aligned:
        {
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies,
! 					  vector_store, stmt_info, slp_node, 0,
! 					  vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
--- 1017,1031 ----
  		     unsigned int *inside_cost,
  		     stmt_vector_for_cost *body_cost_vec)
  {
+   tree vectype
+     = slp_node ? SLP_TREE_VECTYPE (slp_node) : STMT_VINFO_VECTYPE (stmt_info);
    switch (alignment_support_scheme)
      {
      case dr_aligned:
        {
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies,
! 					  vector_store, stmt_info, slp_node,
! 					  vectype, 0, vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
*************** vect_get_store_cost (vec_info *, stmt_ve
*** 1038,1044 ****
          /* Here, we assign an additional cost for the unaligned store.  */
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies,
  					  unaligned_store, stmt_info, slp_node,
! 					  misalignment, vect_body);
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
                             "vect_model_store_cost: unaligned supported by "
--- 1038,1044 ----
          /* Here, we assign an additional cost for the unaligned store.  */
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies,
  					  unaligned_store, stmt_info, slp_node,
! 					  vectype, misalignment, vect_body);
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
                             "vect_model_store_cost: unaligned supported by "
*************** vect_get_load_cost (vec_info *, stmt_vec
*** 1072,1083 ****
  		    stmt_vector_for_cost *body_cost_vec,
  		    bool record_prologue_costs)
  {
    switch (alignment_support_scheme)
      {
      case dr_aligned:
        {
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies, vector_load,
! 					  stmt_info, slp_node, 0, vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
--- 1072,1086 ----
  		    stmt_vector_for_cost *body_cost_vec,
  		    bool record_prologue_costs)
  {
+   tree vectype
+     = slp_node ? SLP_TREE_VECTYPE (slp_node) : STMT_VINFO_VECTYPE (stmt_info);
    switch (alignment_support_scheme)
      {
      case dr_aligned:
        {
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies, vector_load,
! 					  stmt_info, slp_node, vectype,
! 					  0, vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
*************** vect_get_load_cost (vec_info *, stmt_vec
*** 1090,1096 ****
          /* Here, we assign an additional cost for the unaligned load.  */
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies,
  					  unaligned_load, stmt_info, slp_node,
! 					  misalignment, vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
--- 1093,1099 ----
          /* Here, we assign an additional cost for the unaligned load.  */
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies,
  					  unaligned_load, stmt_info, slp_node,
! 					  vectype, misalignment, vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
*************** vect_get_load_cost (vec_info *, stmt_vec
*** 1102,1119 ****
      case dr_explicit_realign:
        {
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies * 2,
! 					  vector_load, stmt_info, slp_node, 0,
! 					  vect_body);
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies,
! 					  vec_perm, stmt_info, slp_node, 0,
! 					  vect_body);
  
          /* FIXME: If the misalignment remains fixed across the iterations of
             the containing loop, the following cost should be added to the
             prologue costs.  */
          if (targetm.vectorize.builtin_mask_for_load)
  	  *inside_cost += record_stmt_cost (body_cost_vec, 1, vector_stmt,
! 					    stmt_info, slp_node, 0, vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
--- 1105,1123 ----
      case dr_explicit_realign:
        {
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies * 2,
! 					  vector_load, stmt_info, slp_node,
! 					  vectype, 0, vect_body);
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies,
! 					  vec_perm, stmt_info, slp_node,
! 					  vectype, 0, vect_body);
  
          /* FIXME: If the misalignment remains fixed across the iterations of
             the containing loop, the following cost should be added to the
             prologue costs.  */
          if (targetm.vectorize.builtin_mask_for_load)
  	  *inside_cost += record_stmt_cost (body_cost_vec, 1, vector_stmt,
! 					    stmt_info, slp_node, vectype,
! 					    0, vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
*************** vect_get_load_cost (vec_info *, stmt_vec
*** 1139,1155 ****
            {
  	    *prologue_cost += record_stmt_cost (prologue_cost_vec, 2,
  						vector_stmt, stmt_info,
! 						slp_node, 0, vect_prologue);
              if (targetm.vectorize.builtin_mask_for_load)
  	      *prologue_cost += record_stmt_cost (prologue_cost_vec, 1,
  						  vector_stmt, stmt_info,
! 						  slp_node, 0, vect_prologue);
            }
  
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies, vector_load,
! 					  stmt_info, slp_node, 0, vect_body);
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies, vec_perm,
! 					  stmt_info, slp_node, 0, vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
--- 1143,1163 ----
            {
  	    *prologue_cost += record_stmt_cost (prologue_cost_vec, 2,
  						vector_stmt, stmt_info,
! 						slp_node, vectype,
! 						0, vect_prologue);
              if (targetm.vectorize.builtin_mask_for_load)
  	      *prologue_cost += record_stmt_cost (prologue_cost_vec, 1,
  						  vector_stmt, stmt_info,
! 						  slp_node, vectype,
! 						  0, vect_prologue);
            }
  
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies, vector_load,
! 					  stmt_info, slp_node, vectype,
! 					  0, vect_body);
  	*inside_cost += record_stmt_cost (body_cost_vec, ncopies, vec_perm,
! 					  stmt_info, slp_node, vectype,
! 					  0, vect_body);
  
          if (dump_enabled_p ())
            dump_printf_loc (MSG_NOTE, vect_location,
*************** vectorizable_call (vec_info *vinfo,
*** 3756,3763 ****
  	    }
        STMT_VINFO_TYPE (stmt_info) = call_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_call");
!       vect_model_simple_cost (vinfo, stmt_info,
! 			      ncopies, dt, ndts, slp_node, cost_vec);
        if (ifn != IFN_LAST && modifier == NARROW && !slp_node)
  	record_stmt_cost (cost_vec, ncopies / 2,
  			  vec_promote_demote, stmt_info, 0, vect_body);
--- 3764,3770 ----
  	    }
        STMT_VINFO_TYPE (stmt_info) = call_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_call");
!       vect_model_simple_cost (vinfo, ncopies, dt, ndts, slp_node, cost_vec);
        if (ifn != IFN_LAST && modifier == NARROW && !slp_node)
  	record_stmt_cost (cost_vec, ncopies / 2,
  			  vec_promote_demote, stmt_info, 0, vect_body);
*************** vectorizable_simd_clone_call (vec_info *
*** 4724,4731 ****
  
        STMT_VINFO_TYPE (stmt_info) = call_simd_clone_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_simd_clone_call");
! /*      vect_model_simple_cost (vinfo, stmt_info, ncopies,
! 				dt, slp_node, cost_vec); */
        return true;
      }
  
--- 4731,4737 ----
  
        STMT_VINFO_TYPE (stmt_info) = call_simd_clone_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_simd_clone_call");
! /*      vect_model_simple_cost (vinfo, ncopies, dt, slp_node, cost_vec); */
        return true;
      }
  
*************** vectorizable_conversion (vec_info *vinfo
*** 5922,5928 ****
        if (modifier == NONE)
          {
  	  STMT_VINFO_TYPE (stmt_info) = type_conversion_vec_info_type;
! 	  vect_model_simple_cost (vinfo, stmt_info, (1 + multi_step_cvt),
  				  dt, ndts, slp_node, cost_vec);
  	}
        else if (modifier == NARROW_SRC || modifier == NARROW_DST)
--- 5928,5934 ----
        if (modifier == NONE)
          {
  	  STMT_VINFO_TYPE (stmt_info) = type_conversion_vec_info_type;
! 	  vect_model_simple_cost (vinfo, (1 + multi_step_cvt),
  				  dt, ndts, slp_node, cost_vec);
  	}
        else if (modifier == NARROW_SRC || modifier == NARROW_DST)
*************** vectorizable_assignment (vec_info *vinfo
*** 6291,6298 ****
        STMT_VINFO_TYPE (stmt_info) = assignment_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_assignment");
        if (!vect_nop_conversion_p (stmt_info))
! 	vect_model_simple_cost (vinfo, stmt_info, ncopies, dt, ndts, slp_node,
! 				cost_vec);
        return true;
      }
  
--- 6297,6303 ----
        STMT_VINFO_TYPE (stmt_info) = assignment_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_assignment");
        if (!vect_nop_conversion_p (stmt_info))
! 	vect_model_simple_cost (vinfo, ncopies, dt, ndts, slp_node, cost_vec);
        return true;
      }
  
*************** vectorizable_shift (vec_info *vinfo,
*** 6662,6668 ****
  	}
        STMT_VINFO_TYPE (stmt_info) = shift_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_shift");
!       vect_model_simple_cost (vinfo, stmt_info, ncopies, dt,
  			      scalar_shift_arg ? 1 : ndts, slp_node, cost_vec);
        return true;
      }
--- 6667,6673 ----
  	}
        STMT_VINFO_TYPE (stmt_info) = shift_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_shift");
!       vect_model_simple_cost (vinfo, ncopies, dt,
  			      scalar_shift_arg ? 1 : ndts, slp_node, cost_vec);
        return true;
      }
*************** vectorizable_operation (vec_info *vinfo,
*** 7099,7106 ****
  
        STMT_VINFO_TYPE (stmt_info) = op_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_operation");
!       vect_model_simple_cost (vinfo, stmt_info,
! 			      1, dt, ndts, slp_node, cost_vec);
        if (using_emulated_vectors_p)
  	{
  	  /* The above vect_model_simple_cost call handles constants
--- 7104,7110 ----
  
        STMT_VINFO_TYPE (stmt_info) = op_vec_info_type;
        DUMP_VECT_SCOPE ("vectorizable_operation");
!       vect_model_simple_cost (vinfo, 1, dt, ndts, slp_node, cost_vec);
        if (using_emulated_vectors_p)
  	{
  	  /* The above vect_model_simple_cost call handles constants
*************** vectorizable_store (vec_info *vinfo,
*** 8676,8682 ****
        }
      else if (vls_type != VLS_STORE_INVARIANT)
        return;
!     *prologue_cost += record_stmt_cost (cost_vec, 1, scalar_to_vec, stmt_info,
  					slp_node, 0, vect_prologue);
    };
  
--- 8680,8686 ----
        }
      else if (vls_type != VLS_STORE_INVARIANT)
        return;
!     *prologue_cost += record_stmt_cost (cost_vec, 1, scalar_to_vec,
  					slp_node, 0, vect_prologue);
    };
  
*************** vectorizable_store (vec_info *vinfo,
*** 8985,8992 ****
  	      if (nstores > 1)
  		inside_cost
  		  += record_stmt_cost (cost_vec, n_adjacent_stores,
! 				       vec_to_scalar, stmt_info, slp_node,
! 				       0, vect_body);
  	    }
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_NOTE, vect_location,
--- 8989,8995 ----
  	      if (nstores > 1)
  		inside_cost
  		  += record_stmt_cost (cost_vec, n_adjacent_stores,
! 				       vec_to_scalar, slp_node, 0, vect_body);
  	    }
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_NOTE, vect_location,
*************** vectorizable_store (vec_info *vinfo,
*** 9323,9330 ****
  	    {
  	      if (costing_p && vls_type == VLS_STORE_INVARIANT)
  		prologue_cost += record_stmt_cost (cost_vec, 1, scalar_to_vec,
! 						   stmt_info, slp_node, 0,
! 						   vect_prologue);
  	      else if (!costing_p)
  		{
  		  /* Since the store is not grouped, DR_GROUP_SIZE is 1, and
--- 9326,9332 ----
  	    {
  	      if (costing_p && vls_type == VLS_STORE_INVARIANT)
  		prologue_cost += record_stmt_cost (cost_vec, 1, scalar_to_vec,
! 						   slp_node, 0, vect_prologue);
  	      else if (!costing_p)
  		{
  		  /* Since the store is not grouped, DR_GROUP_SIZE is 1, and
*************** vectorizable_store (vec_info *vinfo,
*** 9398,9405 ****
  		  unsigned int cnunits = vect_nunits_for_cost (vectype);
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, scalar_store,
! 					 stmt_info, slp_node, 0,
! 					 vect_body);
  		  continue;
  		}
  
--- 9400,9406 ----
  		  unsigned int cnunits = vect_nunits_for_cost (vectype);
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, scalar_store,
! 					 slp_node, 0, vect_body);
  		  continue;
  		}
  
*************** vectorizable_store (vec_info *vinfo,
*** 9467,9473 ****
  		  unsigned int cnunits = vect_nunits_for_cost (vectype);
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, scalar_store,
! 					 stmt_info, slp_node, 0, vect_body);
  		  continue;
  		}
  
--- 9468,9474 ----
  		  unsigned int cnunits = vect_nunits_for_cost (vectype);
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, scalar_store,
! 					 slp_node, 0, vect_body);
  		  continue;
  		}
  
*************** vectorizable_store (vec_info *vinfo,
*** 9575,9588 ****
  		     consumed by the load).  */
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, vec_to_scalar,
! 					 stmt_info, slp_node, 0, vect_body);
  		  /* N scalar stores plus extracting the elements.  */
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, vec_to_scalar,
! 					 stmt_info, slp_node, 0, vect_body);
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, scalar_store,
! 					 stmt_info, slp_node, 0, vect_body);
  		  continue;
  		}
  
--- 9576,9589 ----
  		     consumed by the load).  */
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, vec_to_scalar,
! 					 slp_node, 0, vect_body);
  		  /* N scalar stores plus extracting the elements.  */
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, vec_to_scalar,
! 					 slp_node, 0, vect_body);
  		  inside_cost
  		    += record_stmt_cost (cost_vec, cnunits, scalar_store,
! 					 slp_node, 0, vect_body);
  		  continue;
  		}
  
*************** vectorizable_store (vec_info *vinfo,
*** 9776,9783 ****
  	      int group_size = DR_GROUP_SIZE (first_stmt_info);
  	      int nstmts = ceil_log2 (group_size) * group_size;
  	      inside_cost += record_stmt_cost (cost_vec, nstmts, vec_perm,
! 					       stmt_info, slp_node, 0,
! 					       vect_body);
  	      if (dump_enabled_p ())
  		dump_printf_loc (MSG_NOTE, vect_location,
  				 "vect_model_store_cost: "
--- 9777,9783 ----
  	      int group_size = DR_GROUP_SIZE (first_stmt_info);
  	      int nstmts = ceil_log2 (group_size) * group_size;
  	      inside_cost += record_stmt_cost (cost_vec, nstmts, vec_perm,
! 					       slp_node, 0, vect_body);
  	      if (dump_enabled_p ())
  		dump_printf_loc (MSG_NOTE, vect_location,
  				 "vect_model_store_cost: "
*************** vectorizable_store (vec_info *vinfo,
*** 9806,9813 ****
  	    {
  	      if (costing_p)
  		inside_cost += record_stmt_cost (cost_vec, 1, vec_perm,
! 						 stmt_info, slp_node, 0,
! 						 vect_body);
  	      else
  		{
  		  tree perm_mask = perm_mask_for_reverse (vectype);
--- 9806,9812 ----
  	    {
  	      if (costing_p)
  		inside_cost += record_stmt_cost (cost_vec, 1, vec_perm,
! 						 slp_node, 0, vect_body);
  	      else
  		{
  		  tree perm_mask = perm_mask_for_reverse (vectype);
*************** vectorizable_store (vec_info *vinfo,
*** 10026,10036 ****
  		  /* Spill.  */
  		  prologue_cost
  		    += record_stmt_cost (cost_vec, ncopies, vector_store,
! 					 stmt_info, slp_node, 0, vect_epilogue);
  		  /* Loads.  */
  		  prologue_cost
  		    += record_stmt_cost (cost_vec, ncopies * nregs, scalar_load,
! 					 stmt_info, slp_node, 0, vect_epilogue);
  		}
  	    }
  	}
--- 10025,10035 ----
  		  /* Spill.  */
  		  prologue_cost
  		    += record_stmt_cost (cost_vec, ncopies, vector_store,
! 					 slp_node, 0, vect_epilogue);
  		  /* Loads.  */
  		  prologue_cost
  		    += record_stmt_cost (cost_vec, ncopies * nregs, scalar_load,
! 					 slp_node, 0, vect_epilogue);
  		}
  	    }
  	}
*************** vectorizable_load (vec_info *vinfo,
*** 10603,10611 ****
  	  enum vect_cost_model_location cost_loc
  	    = hoist_p ? vect_prologue : vect_body;
  	  unsigned int cost = record_stmt_cost (cost_vec, 1, scalar_load,
! 						stmt_info, slp_node, 0,
! 						cost_loc);
! 	  cost += record_stmt_cost (cost_vec, 1, scalar_to_vec, stmt_info,
  				    slp_node, 0, cost_loc);
  	  unsigned int prologue_cost = hoist_p ? cost : 0;
  	  unsigned int inside_cost = hoist_p ? 0 : cost;
--- 10602,10609 ----
  	  enum vect_cost_model_location cost_loc
  	    = hoist_p ? vect_prologue : vect_body;
  	  unsigned int cost = record_stmt_cost (cost_vec, 1, scalar_load,
! 						slp_node, 0, cost_loc);
! 	  cost += record_stmt_cost (cost_vec, 1, scalar_to_vec,
  				    slp_node, 0, cost_loc);
  	  unsigned int prologue_cost = hoist_p ? cost : 0;
  	  unsigned int inside_cost = hoist_p ? 0 : cost;
*************** vectorizable_load (vec_info *vinfo,
*** 10871,10878 ****
  		    n_adjacent_loads++;
  		  else
  		    inside_cost += record_stmt_cost (cost_vec, 1, scalar_load,
! 						     stmt_info, slp_node, 0,
! 						     vect_body);
  		  continue;
  		}
  	      tree this_off = build_int_cst (TREE_TYPE (alias_off),
--- 10869,10875 ----
  		    n_adjacent_loads++;
  		  else
  		    inside_cost += record_stmt_cost (cost_vec, 1, scalar_load,
! 						     slp_node, 0, vect_body);
  		  continue;
  		}
  	      tree this_off = build_int_cst (TREE_TYPE (alias_off),
*************** vectorizable_load (vec_info *vinfo,
*** 10910,10917 ****
  	    {
  	      if (costing_p)
  		inside_cost += record_stmt_cost (cost_vec, 1, vec_construct,
! 						 stmt_info, slp_node, 0,
! 						 vect_body);
  	      else
  		{
  		  tree vec_inv = build_constructor (lvectype, v);
--- 10907,10913 ----
  	    {
  	      if (costing_p)
  		inside_cost += record_stmt_cost (cost_vec, 1, vec_construct,
! 						 slp_node, 0, vect_body);
  	      else
  		{
  		  tree vec_inv = build_constructor (lvectype, v);
*************** vectorizable_load (vec_info *vinfo,
*** 10966,10973 ****
  	      vect_transform_slp_perm_load (vinfo, slp_node, vNULL, NULL, vf,
  					    true, &n_perms, &n_loads);
  	      inside_cost += record_stmt_cost (cost_vec, n_perms, vec_perm,
! 					       first_stmt_info, slp_node, 0,
! 					       vect_body);
  	    }
  	  else
  	    vect_transform_slp_perm_load (vinfo, slp_node, dr_chain, gsi, vf,
--- 10962,10968 ----
  	      vect_transform_slp_perm_load (vinfo, slp_node, vNULL, NULL, vf,
  					    true, &n_perms, &n_loads);
  	      inside_cost += record_stmt_cost (cost_vec, n_perms, vec_perm,
! 					       slp_node, 0, vect_body);
  	    }
  	  else
  	    vect_transform_slp_perm_load (vinfo, slp_node, dr_chain, gsi, vf,
*************** vectorizable_load (vec_info *vinfo,
*** 11537,11543 ****
  		      unsigned int cnunits = vect_nunits_for_cost (vectype);
  		      inside_cost
  			= record_stmt_cost (cost_vec, cnunits, scalar_load,
! 					    stmt_info, slp_node, 0, vect_body);
  		      continue;
  		    }
  		  if (STMT_VINFO_GATHER_SCATTER_P (stmt_info))
--- 11532,11538 ----
  		      unsigned int cnunits = vect_nunits_for_cost (vectype);
  		      inside_cost
  			= record_stmt_cost (cost_vec, cnunits, scalar_load,
! 					    slp_node, 0, vect_body);
  		      continue;
  		    }
  		  if (STMT_VINFO_GATHER_SCATTER_P (stmt_info))
*************** vectorizable_load (vec_info *vinfo,
*** 11613,11619 ****
  		      unsigned int cnunits = vect_nunits_for_cost (vectype);
  		      inside_cost
  			= record_stmt_cost (cost_vec, cnunits, scalar_load,
! 					    stmt_info, slp_node, 0, vect_body);
  		      continue;
  		    }
  		  poly_uint64 offset_nunits
--- 11608,11614 ----
  		      unsigned int cnunits = vect_nunits_for_cost (vectype);
  		      inside_cost
  			= record_stmt_cost (cost_vec, cnunits, scalar_load,
! 					    slp_node, 0, vect_body);
  		      continue;
  		    }
  		  poly_uint64 offset_nunits
*************** vectorizable_load (vec_info *vinfo,
*** 11742,11757 ****
  		      /* For emulated gathers N offset vector element
  			 offset add is consumed by the load).  */
  		      inside_cost = record_stmt_cost (cost_vec, const_nunits,
! 						      vec_to_scalar, stmt_info,
  						      slp_node, 0, vect_body);
  		      /* N scalar loads plus gathering them into a
  			 vector.  */
  		      inside_cost
  			= record_stmt_cost (cost_vec, const_nunits, scalar_load,
! 					    stmt_info, slp_node, 0, vect_body);
  		      inside_cost
  			= record_stmt_cost (cost_vec, 1, vec_construct,
! 					    stmt_info, slp_node, 0, vect_body);
  		      continue;
  		    }
  		  unsigned HOST_WIDE_INT const_offset_nunits
--- 11737,11752 ----
  		      /* For emulated gathers N offset vector element
  			 offset add is consumed by the load).  */
  		      inside_cost = record_stmt_cost (cost_vec, const_nunits,
! 						      vec_to_scalar,
  						      slp_node, 0, vect_body);
  		      /* N scalar loads plus gathering them into a
  			 vector.  */
  		      inside_cost
  			= record_stmt_cost (cost_vec, const_nunits, scalar_load,
! 					    slp_node, 0, vect_body);
  		      inside_cost
  			= record_stmt_cost (cost_vec, 1, vec_construct,
! 					    slp_node, 0, vect_body);
  		      continue;
  		    }
  		  unsigned HOST_WIDE_INT const_offset_nunits
*************** vectorizable_load (vec_info *vinfo,
*** 12412,12419 ****
  	    {
  	      if (costing_p)
  		inside_cost = record_stmt_cost (cost_vec, 1, vec_perm,
! 						stmt_info, slp_node, 0,
! 						vect_body);
  	      else
  		{
  		  tree perm_mask = perm_mask_for_reverse (vectype);
--- 12407,12413 ----
  	    {
  	      if (costing_p)
  		inside_cost = record_stmt_cost (cost_vec, 1, vec_perm,
! 						slp_node, 0, vect_body);
  	      else
  		{
  		  tree perm_mask = perm_mask_for_reverse (vectype);
*************** vectorizable_load (vec_info *vinfo,
*** 12482,12489 ****
  	      vect_transform_slp_perm_load (vinfo, slp_node, vNULL, nullptr, vf,
  					    true, &n_perms, nullptr);
  	      inside_cost = record_stmt_cost (cost_vec, n_perms, vec_perm,
! 					      stmt_info, slp_node, 0,
! 					      vect_body);
  	    }
  	  else
  	    {
--- 12476,12482 ----
  	      vect_transform_slp_perm_load (vinfo, slp_node, vNULL, nullptr, vf,
  					    true, &n_perms, nullptr);
  	      inside_cost = record_stmt_cost (cost_vec, n_perms, vec_perm,
! 					      slp_node, 0, vect_body);
  	    }
  	  else
  	    {
*************** vectorizable_load (vec_info *vinfo,
*** 12510,12517 ****
  		  int group_size = DR_GROUP_SIZE (first_stmt_info);
  		  int nstmts = ceil_log2 (group_size) * group_size;
  		  inside_cost += record_stmt_cost (cost_vec, nstmts, vec_perm,
! 						   stmt_info, slp_node, 0,
! 						   vect_body);
  
  		  if (dump_enabled_p ())
  		    dump_printf_loc (MSG_NOTE, vect_location,
--- 12503,12509 ----
  		  int group_size = DR_GROUP_SIZE (first_stmt_info);
  		  int nstmts = ceil_log2 (group_size) * group_size;
  		  inside_cost += record_stmt_cost (cost_vec, nstmts, vec_perm,
! 						   slp_node, 0, vect_body);
  
  		  if (dump_enabled_p ())
  		    dump_printf_loc (MSG_NOTE, vect_location,
*************** vectorizable_condition (vec_info *vinfo,
*** 12931,12937 ****
  	}
  
        STMT_VINFO_TYPE (stmt_info) = condition_vec_info_type;
!       vect_model_simple_cost (vinfo, stmt_info, ncopies, dts, ndts, slp_node,
  			      cost_vec, kind);
        return true;
      }
--- 12923,12929 ----
  	}
  
        STMT_VINFO_TYPE (stmt_info) = condition_vec_info_type;
!       vect_model_simple_cost (vinfo, ncopies, dts, ndts, slp_node,
  			      cost_vec, kind);
        return true;
      }
*************** vectorizable_comparison_1 (vec_info *vin
*** 13363,13370 ****
  	  return false;
  	}
  
!       vect_model_simple_cost (vinfo, stmt_info,
! 			      ncopies * (1 + (bitop2 != NOP_EXPR)),
  			      dts, ndts, slp_node, cost_vec);
        return true;
      }
--- 13355,13361 ----
  	  return false;
  	}
  
!       vect_model_simple_cost (vinfo, ncopies * (1 + (bitop2 != NOP_EXPR)),
  			      dts, ndts, slp_node, cost_vec);
        return true;
      }
diff -Nrcpad gcc-16-20250511/gcc/tree-vectorizer.cc gcc-16-20250518/gcc/tree-vectorizer.cc
*** gcc-16-20250511/gcc/tree-vectorizer.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-vectorizer.cc	Sun May 18 22:32:55 2025
*************** vect_transform_loops (hash_table<simduid
*** 1026,1035 ****
      {
        if (GET_MODE_SIZE (loop_vinfo->vector_mode).is_constant (&bytes))
  	dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
! 			 "loop vectorized using %wu byte vectors\n", bytes);
        else
  	dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
! 			 "loop vectorized using variable length vectors\n");
      }
  
    loop_p new_loop = vect_transform_loop (loop_vinfo,
--- 1026,1044 ----
      {
        if (GET_MODE_SIZE (loop_vinfo->vector_mode).is_constant (&bytes))
  	dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
! 			 "%sloop vectorized using %s%wu byte vectors and"
! 			 " unroll factor %u\n",
! 			 LOOP_VINFO_EPILOGUE_P (loop_vinfo)
! 			 ? "epilogue " : "",
! 			 LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo)
! 			 ? "masked " : "", bytes,
! 			 (unsigned int) LOOP_VINFO_VECT_FACTOR
! 						 (loop_vinfo).to_constant ());
        else
  	dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
! 			 "%sloop vectorized using variable length vectors\n",
! 			 LOOP_VINFO_EPILOGUE_P (loop_vinfo)
! 			 ? "epilogue " : "");
      }
  
    loop_p new_loop = vect_transform_loop (loop_vinfo,
diff -Nrcpad gcc-16-20250511/gcc/tree-vectorizer.h gcc-16-20250518/gcc/tree-vectorizer.h
*** gcc-16-20250511/gcc/tree-vectorizer.h	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/tree-vectorizer.h	Sun May 18 22:32:55 2025
*************** record_stmt_cost (stmt_vector_for_cost *
*** 2441,2457 ****
  			   STMT_VINFO_VECTYPE (stmt_info), misalign, where);
  }
  
! /* Overload of record_stmt_cost with VECTYPE derived from STMT_INFO and
!    SLP node specified.  */
  
  inline unsigned
  record_stmt_cost (stmt_vector_for_cost *body_cost_vec, int count,
! 		  enum vect_cost_for_stmt kind, stmt_vec_info stmt_info,
! 		  slp_tree node,
  		  int misalign, enum vect_cost_model_location where)
  {
!   return record_stmt_cost (body_cost_vec, count, kind, stmt_info, node,
! 			   STMT_VINFO_VECTYPE (stmt_info), misalign, where);
  }
  
  extern void vect_finish_replace_stmt (vec_info *, stmt_vec_info, gimple *);
--- 2441,2455 ----
  			   STMT_VINFO_VECTYPE (stmt_info), misalign, where);
  }
  
! /* Overload of record_stmt_cost with VECTYPE derived from SLP node.  */
  
  inline unsigned
  record_stmt_cost (stmt_vector_for_cost *body_cost_vec, int count,
! 		  enum vect_cost_for_stmt kind, slp_tree node,
  		  int misalign, enum vect_cost_model_location where)
  {
!   return record_stmt_cost (body_cost_vec, count, kind, node,
! 			   SLP_TREE_VECTYPE (node), misalign, where);
  }
  
  extern void vect_finish_replace_stmt (vec_info *, stmt_vec_info, gimple *);
diff -Nrcpad gcc-16-20250511/gcc/value-range.cc gcc-16-20250518/gcc/value-range.cc
*** gcc-16-20250511/gcc/value-range.cc	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/value-range.cc	Sun May 18 22:32:55 2025
*************** along with GCC; see the file COPYING3.
*** 31,55 ****
  #include "fold-const.h"
  #include "gimple-range.h"
  
! // Return the bitmask inherent in a range.
  
! static irange_bitmask
! get_bitmask_from_range (tree type,
! 			const wide_int &min, const wide_int &max)
  {
    unsigned prec = TYPE_PRECISION (type);
- 
    // All the bits of a singleton are known.
    if (min == max)
      {
!       wide_int mask = wi::zero (prec);
!       wide_int value = min;
!       return irange_bitmask (value, mask);
      }
- 
-   wide_int xorv = min ^ max;
-   xorv = wi::mask (prec - wi::clz (xorv), false, prec);
-   return irange_bitmask (wi::zero (prec), min | xorv);
  }
  
  void
--- 31,58 ----
  #include "fold-const.h"
  #include "gimple-range.h"
  
! // Return the bitmask inherent in a range :   TYPE [MIN, MAX].
! // This use to be get_bitmask_from_range ().
  
! irange_bitmask::irange_bitmask (tree type,
! 				const wide_int &min, const wide_int &max)
  {
    unsigned prec = TYPE_PRECISION (type);
    // All the bits of a singleton are known.
    if (min == max)
      {
!       m_mask = wi::zero (prec);
!       m_value = min;
!     }
!   else
!     {
!       wide_int xorv = min ^ max;
!       // Mask will have leading zeros for all leading bits that are
!       // common, both zeros and ones.
!       m_mask = wi::mask (prec - wi::clz (xorv), false, prec);
!       // Now set value to those bits which are known, and zero the rest.
!       m_value = ~m_mask & min;
      }
  }
  
  void
*************** prange::set (tree type, const wide_int &
*** 469,475 ****
      }
  
    m_kind = VR_RANGE;
!   m_bitmask = get_bitmask_from_range (type, min, max);
    if (flag_checking)
      verify_range ();
  }
--- 472,478 ----
      }
  
    m_kind = VR_RANGE;
!   m_bitmask = irange_bitmask (type, min, max);
    if (flag_checking)
      verify_range ();
  }
*************** prange::intersect (const vrange &v)
*** 583,589 ****
      }
  
    // Intersect all bitmasks: the old one, the new one, and the other operand's.
!   irange_bitmask new_bitmask = get_bitmask_from_range (m_type, m_min, m_max);
    m_bitmask.intersect (new_bitmask);
    m_bitmask.intersect (r.m_bitmask);
    if (varying_compatible_p ())
--- 586,592 ----
      }
  
    // Intersect all bitmasks: the old one, the new one, and the other operand's.
!   irange_bitmask new_bitmask (m_type, m_min, m_max);
    m_bitmask.intersect (new_bitmask);
    m_bitmask.intersect (r.m_bitmask);
    if (varying_compatible_p ())
*************** irange::set_range_from_bitmask ()
*** 2286,2292 ****
        if (has_zero)
  	{
  	  int_range<2> zero;
! 	  zero.set_zero (type ());
  	  union_ (zero);
  	}
        if (flag_checking)
--- 2289,2295 ----
        if (has_zero)
  	{
  	  int_range<2> zero;
! 	  zero.set_zero (m_type);
  	  union_ (zero);
  	}
        if (flag_checking)
*************** irange::set_range_from_bitmask ()
*** 2295,2325 ****
      }
    else if (popcount == 0)
      {
!       set_zero (type ());
        return true;
      }
  
!   // If the mask doesn't have any trailing zero, return.
    int z = wi::ctz (m_bitmask.mask ());
    if (!z)
      return false;
  
!   // Remove trailing ranges that this bitmask indicates can't exist.
!   int_range_max mask_range;
!   int prec = TYPE_PRECISION (type ());
!   wide_int ub = (wi::one (prec) << z) - 1;
!   mask_range = int_range<2> (type (), wi::zero (prec), ub);
  
!   // Then remove the specific value these bits contain from the range.
!   wide_int value = m_bitmask.value () & ub;
!   mask_range.intersect (int_range<2> (type (), value, value, VR_ANTI_RANGE));
  
!   // Inverting produces a list of ranges which can be valid.
    mask_range.invert ();
  
!   // And finally select R from only those valid values.
!   intersect (mask_range);
!   return true;
  }
  
  void
--- 2298,2355 ----
      }
    else if (popcount == 0)
      {
!       set_zero (m_type);
        return true;
      }
  
!   // If the mask doesn't have a trailing zero, theres nothing to filter.
    int z = wi::ctz (m_bitmask.mask ());
    if (!z)
      return false;
  
!   int prec = TYPE_PRECISION (m_type);
!   wide_int value = m_bitmask.value ();
!   wide_int mask = m_bitmask.mask ();
  
!   // Remove the [0, X] values which the trailing-zero mask rules out.
!   // For example, if z == 4, the mask is 0xFFF0, and the lowest 4 bits
!   // define the range [0, 15]. Only one of which (value & low_mask) is allowed.
!   wide_int ub = (wi::one (prec) << z) - 1;  // Upper bound of affected range.
!   int_range_max mask_range (m_type, wi::zero (prec), ub);
  
!   // Remove the one valid value from the excluded range and form an anti-range.
!   wide_int allow = value & ub;
!   mask_range.intersect (int_range<2> (m_type, allow, allow, VR_ANTI_RANGE));
! 
!   // Invert it to get the allowed values and intersect it with the main range.
    mask_range.invert ();
+   bool changed = intersect (mask_range);
  
!   // Now handle the rest of the domain — the upper side for positive values,
!   // or [-X, -1] for signed negatives.
!   // Compute the maximum value representable under the mask/value constraint.
!   ub = mask | value;
! 
!   // If value is non-negative, adjust the upper limit to remove values above
!   // UB that conflict with known fixed bits.
!   if (TYPE_SIGN (m_type) == UNSIGNED || wi::clz (ub) > 0)
!     mask_range = int_range<1> (m_type, wi::zero (prec), ub);
!   else
!     {
!       // For signed negative values, find the lowest value with trailing zeros.
!       // This forms a range such as [-512, -1] for z=9.
!       wide_int lb = -(wi::one (prec) << z);
!       mask_range = int_range<2> (m_type, lb, wi::minus_one (prec));
! 
!       // Remove the one allowed value from that set.
!       allow = value | lb;
!       mask_range.intersect (int_range<2> (m_type, allow, allow, VR_ANTI_RANGE));
!       mask_range.invert ();
!     }
! 
!   // Make sure we call intersect, so do it first.
!   changed = intersect (mask_range) | changed;
!   return changed;
  }
  
  void
*************** irange::get_bitmask () const
*** 2369,2376 ****
    // in the mask.
    //
    // See also the note in irange_bitmask::intersect.
!   irange_bitmask bm
!     = get_bitmask_from_range (type (), lower_bound (), upper_bound ());
    if (!m_bitmask.unknown_p ())
      bm.intersect (m_bitmask);
    return bm;
--- 2399,2405 ----
    // in the mask.
    //
    // See also the note in irange_bitmask::intersect.
!   irange_bitmask bm (type (), lower_bound (), upper_bound ());
    if (!m_bitmask.unknown_p ())
      bm.intersect (m_bitmask);
    return bm;
*************** irange::intersect_bitmask (const irange
*** 2405,2411 ****
  {
    gcc_checking_assert (!undefined_p () && !r.undefined_p ());
  
!   if (r.m_bitmask.unknown_p () || m_bitmask == r.m_bitmask)
      return false;
  
    irange_bitmask bm = get_bitmask ();
--- 2434,2440 ----
  {
    gcc_checking_assert (!undefined_p () && !r.undefined_p ());
  
!   if (m_bitmask == r.m_bitmask)
      return false;
  
    irange_bitmask bm = get_bitmask ();
diff -Nrcpad gcc-16-20250511/gcc/value-range.h gcc-16-20250518/gcc/value-range.h
*** gcc-16-20250511/gcc/value-range.h	Sun May 11 22:32:39 2025
--- gcc-16-20250518/gcc/value-range.h	Sun May 18 22:32:55 2025
*************** public:
*** 136,141 ****
--- 136,143 ----
    irange_bitmask () { /* uninitialized */ }
    irange_bitmask (unsigned prec) { set_unknown (prec); }
    irange_bitmask (const wide_int &value, const wide_int &mask);
+   irange_bitmask (tree type, const wide_int &min, const wide_int &max);
+ 
    wide_int value () const { return m_value; }
    wide_int mask () const { return m_mask; }
    void set_unknown (unsigned prec);
diff -Nrcpad gcc-16-20250511/include/ChangeLog gcc-16-20250518/include/ChangeLog
*** gcc-16-20250511/include/ChangeLog	Sun May 11 22:32:39 2025
--- gcc-16-20250518/include/ChangeLog	Sun May 18 22:32:55 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-05-14  Andreas Schwab  <schwab@suse.de>
+ 
+ 	* libiberty.h (mkstemps): Remove duplicate.
+ 
  2025-03-29  Iain Sandoe  <iain@sandoe.co.uk>
  
  	PR cobol/119283
diff -Nrcpad gcc-16-20250511/include/libiberty.h gcc-16-20250518/include/libiberty.h
*** gcc-16-20250511/include/libiberty.h	Sun May 11 22:32:39 2025
--- gcc-16-20250518/include/libiberty.h	Sun May 18 22:32:55 2025
*************** extern int ffs(int);
*** 215,224 ****
  extern int mkstemps(char *, int);
  #endif
  
- #if defined (HAVE_DECL_MKSTEMPS) && !HAVE_DECL_MKSTEMPS
- extern int mkstemps(char *, int);
- #endif
- 
  /* Make memrchr available on systems that do not have it.  */
  #if !defined (__GNU_LIBRARY__ ) && !defined (__linux__) && \
      !defined (HAVE_MEMRCHR)
--- 215,220 ----
diff -Nrcpad gcc-16-20250511/libcpp/po/ChangeLog gcc-16-20250518/libcpp/po/ChangeLog
*** gcc-16-20250511/libcpp/po/ChangeLog	Sun May 11 22:32:39 2025
--- gcc-16-20250518/libcpp/po/ChangeLog	Sun May 18 22:32:56 2025
***************
*** 1,3 ****
--- 1,19 ----
+ 2025-05-16  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* es.po: Update.
+ 
+ 2025-05-15  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* zh_CN.po: Update.
+ 
+ 2025-05-14  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* es.po: Update.
+ 
+ 2025-05-12  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* es.po: Update.
+ 
  2025-03-20  Joseph Myers  <josmyers@redhat.com>
  
  	* de.po: Update.
diff -Nrcpad gcc-16-20250511/libcpp/po/es.po gcc-16-20250518/libcpp/po/es.po
*** gcc-16-20250511/libcpp/po/es.po	Sun May 11 22:32:39 2025
--- gcc-16-20250518/libcpp/po/es.po	Sun May 18 22:32:56 2025
***************
*** 1,15 ****
  # Spanish localization for cpplib
! # Copyright (C) 2001 - 2024 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
  # Francisco Javier Serrador <fserrador@gmail.com>, 2018.
  # Antonio Ceballos Roa <aceballos@gmail.com>, 2021.
! # Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2001 - 2012, 2022, 2023, 2024.
  msgid ""
  msgstr ""
! "Project-Id-Version: cpplib 14.1-b20240218\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-03-14 22:05+0000\n"
! "PO-Revision-Date: 2024-02-19 11:47-0600\n"
  "Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
  "Language-Team: Spanish <es@tp.org.es>\n"
  "Language: es\n"
--- 1,15 ----
  # Spanish localization for cpplib
! # Copyright (C) 2001 - 2025 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
  # Francisco Javier Serrador <fserrador@gmail.com>, 2018.
  # Antonio Ceballos Roa <aceballos@gmail.com>, 2021.
! # Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2001 - 2012, 2022, 2023, 2024, 2025
  msgid ""
  msgstr ""
! "Project-Id-Version: cpplib 15.1-b20250316\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-03-14 22:05+0000\n"
! "PO-Revision-Date: 2025-05-16 12:16-0600\n"
  "Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
  "Language-Team: Spanish <es@tp.org.es>\n"
  "Language: es\n"
*************** msgid "no iconv implementation, cannot c
*** 33,42 ****
  msgstr "no hay una implementación de iconv, no se puede convertir de %s a %s"
  
  #: charset.cc:870
! #, fuzzy, gcc-internal-format
! #| msgid "character 0x%lx is not in the basic source character set\n"
  msgid "character 0x%lx is not in the basic source character set"
! msgstr "el carácter 0x%lx no está en el conjunto básico de caracteres fuente\n"
  
  #: charset.cc:887 charset.cc:2639
  msgid "converting to execution character set"
--- 33,41 ----
  msgstr "no hay una implementación de iconv, no se puede convertir de %s a %s"
  
  #: charset.cc:870
! #, gcc-internal-format
  msgid "character 0x%lx is not in the basic source character set"
! msgstr "el carácter 0x%lx no está en el conjunto básico de caracteres fuente"
  
  #: charset.cc:887 charset.cc:2639
  msgid "converting to execution character set"
*************** msgid "universal character names are onl
*** 52,73 ****
  msgstr "los nombres universales de carácter sólo son válidos en C++ y C99"
  
  #: charset.cc:1553
! #, fuzzy, gcc-internal-format
! #| msgid "C99's universal character names are incompatible with C90"
  msgid "C99%'s universal character names are incompatible with C90"
  msgstr "los nombres universales de carácter de C99 son incompatibles con C90"
  
  #: charset.cc:1556
! #, fuzzy, gcc-internal-format
! #| msgid "the meaning of '\\%c' is different in traditional C"
  msgid "the meaning of %<\\%c%> is different in traditional C"
! msgstr "el significado de '\\%c' es diferente en C tradicional"
  
  #: charset.cc:1595
! #, fuzzy, gcc-internal-format
! #| msgid "'\\N' not followed by '{'"
  msgid "%<\\N%> not followed by %<{%>"
! msgstr "'\\N' no tiene una '{' a continuación"
  
  #: charset.cc:1625
  msgid "empty named universal character escape sequence; treating it as separate tokens"
--- 51,69 ----
  msgstr "los nombres universales de carácter sólo son válidos en C++ y C99"
  
  #: charset.cc:1553
! #, gcc-internal-format
  msgid "C99%'s universal character names are incompatible with C90"
  msgstr "los nombres universales de carácter de C99 son incompatibles con C90"
  
  #: charset.cc:1556
! #, gcc-internal-format
  msgid "the meaning of %<\\%c%> is different in traditional C"
! msgstr "el significado de %<\\%c%> es diferente en C tradicional"
  
  #: charset.cc:1595
! #, gcc-internal-format
  msgid "%<\\N%> not followed by %<{%>"
! msgstr "%<\\N%> no tiene una %<{%> a continuación"
  
  #: charset.cc:1625
  msgid "empty named universal character escape sequence; treating it as separate tokens"
*************** msgid "named universal character escapes
*** 82,121 ****
  msgstr "las secuencias de escape de carácter universal nombradas sólo son válidas en C++23"
  
  #: charset.cc:1659
! #, fuzzy, gcc-internal-format
! #| msgid "\\N{%.*s} is not a valid universal character; treating it as separate tokens"
  msgid "%<\\N{%.*s}%> is not a valid universal character; treating it as separate tokens"
! msgstr "\\N{%.*s} no es un carácter universal válido; se trata como elementos separados"
  
  #: charset.cc:1665
! #, fuzzy, gcc-internal-format
! #| msgid "\\N{%.*s} is not a valid universal character"
  msgid "%<\\N{%.*s}%> is not a valid universal character"
! msgstr "\\N{%.*s} no es un carácter universal válido"
  
  #: charset.cc:1675
! #, fuzzy, gcc-internal-format
! #| msgid "did you mean \\N{%s}?"
  msgid "did you mean %<\\N{%s}%>?"
! msgstr "¿Quiso decir \\N{%s}?"
  
  #: charset.cc:1693
! #, fuzzy, gcc-internal-format
! #| msgid "'\\N{' not terminated with '}' after %.*s; treating it as separate tokens"
  msgid "%<\\N{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "'\\N{' no termina con '}' después de %.*s; se trata como elemntos separados"
  
  #: charset.cc:1702
! #, fuzzy, gcc-internal-format
! #| msgid "'\\N{' not terminated with '}' after %.*s"
  msgid "%<\\N{%> not terminated with %<}%> after %.*s"
! msgstr "'\\N{' no termina con '}' después de %.*s"
  
  #: charset.cc:1710
! #, fuzzy, gcc-internal-format
! #| msgid "In _cpp_valid_ucn but not a UCN"
  msgid "in %<_cpp_valid_ucn%> but not a UCN"
! msgstr "En _cpp_valid_unc pero no es un NUC"
  
  #: charset.cc:1753
  msgid "empty delimited escape sequence; treating it as separate tokens"
--- 78,111 ----
  msgstr "las secuencias de escape de carácter universal nombradas sólo son válidas en C++23"
  
  #: charset.cc:1659
! #, gcc-internal-format
  msgid "%<\\N{%.*s}%> is not a valid universal character; treating it as separate tokens"
! msgstr "%<\\N{%.*s}%> no es un carácter universal válido; se trata como elementos separados"
  
  #: charset.cc:1665
! #, gcc-internal-format
  msgid "%<\\N{%.*s}%> is not a valid universal character"
! msgstr "%<\\N{%.*s}%> no es un carácter universal válido"
  
  #: charset.cc:1675
! #, gcc-internal-format
  msgid "did you mean %<\\N{%s}%>?"
! msgstr "¿Quiso decir %<\\N{%s}%>?"
  
  #: charset.cc:1693
! #, gcc-internal-format
  msgid "%<\\N{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "%<\\N{%> no termina con %<}%> después de %.*s; se trata como elementos separados"
  
  #: charset.cc:1702
! #, gcc-internal-format
  msgid "%<\\N{%> not terminated with %<}%> after %.*s"
! msgstr "%<\\N{%> no termina con %<}%> después de %.*s"
  
  #: charset.cc:1710
! #, gcc-internal-format
  msgid "in %<_cpp_valid_ucn%> but not a UCN"
! msgstr "En %<_cpp_valid_ucn%> pero no es un NUC"
  
  #: charset.cc:1753
  msgid "empty delimited escape sequence; treating it as separate tokens"
*************** msgstr "secuencia de escape delimitada v
*** 127,146 ****
  
  #: charset.cc:1769 charset.cc:2172 charset.cc:2289
  msgid "delimited escape sequences are only valid in C++23"
! msgstr "las secuencias de escape delimitadoas sólo son válidas en C++23"
  
  #: charset.cc:1774 charset.cc:1779 charset.cc:2177 charset.cc:2182
  #: charset.cc:2294 charset.cc:2299
- #, fuzzy
- #| msgid "delimited escape sequences are only valid in C++23"
  msgid "delimited escape sequences are only valid in C2Y"
! msgstr "las secuencias de escape delimitadoas sólo son válidas en C++23"
  
  #: charset.cc:1794
! #, fuzzy, gcc-internal-format
! #| msgid "'\\u{' not terminated with '}' after %.*s; treating it as separate tokens"
  msgid "%<\\u{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "'\\u{' no termina con '}' después de %.*s; se trata como elementos separados"
  
  #: charset.cc:1806
  #, gcc-internal-format
--- 117,133 ----
  
  #: charset.cc:1769 charset.cc:2172 charset.cc:2289
  msgid "delimited escape sequences are only valid in C++23"
! msgstr "las secuencias de escape delimitadas sólo son válidas en C++23"
  
  #: charset.cc:1774 charset.cc:1779 charset.cc:2177 charset.cc:2182
  #: charset.cc:2294 charset.cc:2299
  msgid "delimited escape sequences are only valid in C2Y"
! msgstr "las secuencias de escape delimitadas sólo son válidas en C2Y"
  
  #: charset.cc:1794
! #, gcc-internal-format
  msgid "%<\\u{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "%<\\u{%> no termina con %<}%> después de %.*s; se trata como elementos separados"
  
  #: charset.cc:1806
  #, gcc-internal-format
*************** msgid "incomplete universal character na
*** 148,157 ****
  msgstr "nombre universal de carácter %.*s incompleto"
  
  #: charset.cc:1810
! #, fuzzy, gcc-internal-format
! #| msgid "'\\u{' not terminated with '}' after %.*s"
  msgid "%<\\u{%> not terminated with %<}%> after %.*s"
! msgstr "'\\u{' no termina con '}' después de %.*s"
  
  #: charset.cc:1818
  #, gcc-internal-format
--- 135,143 ----
  msgstr "nombre universal de carácter %.*s incompleto"
  
  #: charset.cc:1810
! #, gcc-internal-format
  msgid "%<\\u{%> not terminated with %<}%> after %.*s"
! msgstr "%<\\u{%> no termina con %<}%> después de %.*s"
  
  #: charset.cc:1818
  #, gcc-internal-format
*************** msgid "%.*s is not a valid universal cha
*** 159,174 ****
  msgstr "%.*s no es un carácter universal válido"
  
  #: charset.cc:1834 charset.cc:1838
! #, fuzzy, gcc-internal-format
! #| msgid "%.*s is not a valid universal character"
  msgid "%.*s is not a valid universal character name before C23"
! msgstr "%.*s no es un carácter universal válido"
  
  #: charset.cc:1854 lex.cc:2096
! #, fuzzy, gcc-internal-format
! #| msgid "'$' in identifier or number"
  msgid "%<$%> in identifier or number"
! msgstr "'$' en el identificador o número"
  
  #: charset.cc:1864
  #, gcc-internal-format
--- 145,158 ----
  msgstr "%.*s no es un carácter universal válido"
  
  #: charset.cc:1834 charset.cc:1838
! #, gcc-internal-format
  msgid "%.*s is not a valid universal character name before C23"
! msgstr "%.*s no es un carácter universal válido antes de C23"
  
  #: charset.cc:1854 lex.cc:2096
! #, gcc-internal-format
  msgid "%<$%> in identifier or number"
! msgstr "%<$%> en el identificador o número"
  
  #: charset.cc:1864
  #, gcc-internal-format
*************** msgid "extended character %.*s is not va
*** 204,283 ****
  msgstr "el carácter extendido %.*s no es válido al inicio de un identificador"
  
  #: charset.cc:2129
! #, fuzzy, gcc-internal-format
! #| msgid "the meaning of '\\x' is different in traditional C"
  msgid "the meaning of %<\\x%> is different in traditional C"
! msgstr "el significado de '\\x' es diferente en C tradicional"
  
  #: charset.cc:2190
! #, fuzzy, gcc-internal-format
! #| msgid "\\x used with no following hex digits"
  msgid "%<\\x%> used with no following hex digits"
! msgstr "se usó \\x sin dígitos hexadecimales a continuación"
  
  #: charset.cc:2196
! #, fuzzy, gcc-internal-format
! #| msgid "'\\x{' not terminated with '}' after %.*s"
  msgid "%<\\x{%> not terminated with %<}%> after %.*s"
! msgstr "'\\x{' no termina con '}' después de %.*s"
  
  #: charset.cc:2204
  msgid "hex escape sequence out of range"
! msgstr "secuencia de escape hexadecimal fuera de rango"
  
  #: charset.cc:2247
! #, fuzzy, gcc-internal-format
! #| msgid "'\\o' not followed by '{'"
  msgid "%<\\o%> not followed by %<{%>"
! msgstr "'\\o' no tiene una '{' a continuación"
  
  #: charset.cc:2305
! #, fuzzy, gcc-internal-format
! #| msgid "'\\o{' not terminated with '}' after %.*s"
  msgid "%<\\o{%> not terminated with %<}%> after %.*s"
! msgstr "'\\o{' no termina con '}' después de %.*s"
  
  #: charset.cc:2314
  msgid "octal escape sequence out of range"
! msgstr "secuencia de escape octal fuera de rango"
  
  #: charset.cc:2366 charset.cc:2376
! #, fuzzy, gcc-internal-format
! #| msgid "numeric escape sequence in unevaluated string: '\\%c'"
  msgid "numeric escape sequence in unevaluated string: %<\\%c%>"
! msgstr "secuencia de escape numérica en cadena sin evaluar: '\\%c'"
  
  #: charset.cc:2404
! #, fuzzy, gcc-internal-format
! #| msgid "the meaning of '\\a' is different in traditional C"
  msgid "the meaning of %<\\a%> is different in traditional C"
! msgstr "el significado de '\\a' es diferente en C tradicional"
  
  #: charset.cc:2410
! #, fuzzy, gcc-internal-format
! #| msgid "non-ISO-standard escape sequence, '\\%c'"
  msgid "non-ISO-standard escape sequence, %<\\%c%>"
! msgstr "secuencia de escape que no es estándard ISO, '\\%c'"
  
  #: charset.cc:2418
! #, fuzzy, gcc-internal-format
! #| msgid "unknown escape sequence: '\\%c'"
  msgid "unknown escape sequence: %<\\%c%>"
! msgstr "secuencia de escape desconocida: '\\%c'"
  
  #: charset.cc:2428
! #, fuzzy, gcc-internal-format
! #| msgid "unknown escape sequence: '\\%s'"
  msgid "unknown escape sequence: %<\\%s%>"
! msgstr "secuencia de escape desconocida: '\\%s'"
  
  #: charset.cc:2436
  msgid "converting escape sequence to execution character set"
! msgstr "se convierte una secuencia de escape al conjunto de caracteres de ejecución"
  
  #: charset.cc:2576
  msgid "missing open quote"
! msgstr "falta comilla abierta"
  
  #: charset.cc:2807
  msgid "character not encodable in a single execution character code unit"
--- 188,257 ----
  msgstr "el carácter extendido %.*s no es válido al inicio de un identificador"
  
  #: charset.cc:2129
! #, gcc-internal-format
  msgid "the meaning of %<\\x%> is different in traditional C"
! msgstr "el significado de %<\\x%> es diferente en C tradicional"
  
  #: charset.cc:2190
! #, gcc-internal-format
  msgid "%<\\x%> used with no following hex digits"
! msgstr "se usó %<\\x%> sin dígitos hexadecimales a continuación"
  
  #: charset.cc:2196
! #, gcc-internal-format
  msgid "%<\\x{%> not terminated with %<}%> after %.*s"
! msgstr "%<\\x{%> no termina con %<}%> después de %.*s"
  
  #: charset.cc:2204
  msgid "hex escape sequence out of range"
! msgstr "secuencia de escape hexadecimal fuera de intervalo"
  
  #: charset.cc:2247
! #, gcc-internal-format
  msgid "%<\\o%> not followed by %<{%>"
! msgstr "%<\\o%> no tiene una %<{%> a continuación"
  
  #: charset.cc:2305
! #, gcc-internal-format
  msgid "%<\\o{%> not terminated with %<}%> after %.*s"
! msgstr "%<\\o{%> no termina con %<}%> después de %.*s"
  
  #: charset.cc:2314
  msgid "octal escape sequence out of range"
! msgstr "secuencia de escape octal fuera de intervalo"
  
  #: charset.cc:2366 charset.cc:2376
! #, gcc-internal-format
  msgid "numeric escape sequence in unevaluated string: %<\\%c%>"
! msgstr "secuencia de escape numérica en cadena sin evaluar: %<\\%c%>"
  
  #: charset.cc:2404
! #, gcc-internal-format
  msgid "the meaning of %<\\a%> is different in traditional C"
! msgstr "el significado de %<\\a%> es diferente en C tradicional"
  
  #: charset.cc:2410
! #, gcc-internal-format
  msgid "non-ISO-standard escape sequence, %<\\%c%>"
! msgstr "secuencia de escape que no es estándard ISO, %<\\%c%>"
  
  #: charset.cc:2418
! #, gcc-internal-format
  msgid "unknown escape sequence: %<\\%c%>"
! msgstr "secuencia de escape desconocida: %<\\%c%>"
  
  #: charset.cc:2428
! #, gcc-internal-format
  msgid "unknown escape sequence: %<\\%s%>"
! msgstr "secuencia de escape desconocida: %<\\%s%>"
  
  #: charset.cc:2436
  msgid "converting escape sequence to execution character set"
! msgstr "se convierte la secuencia de escape al conjunto de caracteres de ejecución"
  
  #: charset.cc:2576
  msgid "missing open quote"
! msgstr "falta comilla al inicio"
  
  #: charset.cc:2807
  msgid "character not encodable in a single execution character code unit"
*************** msgid "at least one character in a multi
*** 288,297 ****
  msgstr "por lo menos un carácter no es codificable en una literal multi-carácter en una sola ejecución de unidad de código de carácter"
  
  #: charset.cc:2830
! #, fuzzy, gcc-internal-format
! #| msgid "multi-character literal with %ld characters exceeds 'int' size of %ld bytes"
  msgid "multi-character literal with %ld characters exceeds %<int%> size of %ld bytes"
! msgstr "la literal multi-carácter con %ld caracteres excede el tamaño de 'int' de %ld bytes"
  
  #: charset.cc:2834 charset.cc:2929
  msgid "multi-character literal cannot have an encoding prefix"
--- 262,270 ----
  msgstr "por lo menos un carácter no es codificable en una literal multi-carácter en una sola ejecución de unidad de código de carácter"
  
  #: charset.cc:2830
! #, gcc-internal-format
  msgid "multi-character literal with %ld characters exceeds %<int%> size of %ld bytes"
! msgstr "la literal multi-carácter con %ld caracteres excede el tamaño de %<int%> de %ld bytes"
  
  #: charset.cc:2834 charset.cc:2929
  msgid "multi-character literal cannot have an encoding prefix"
*************** msgid "failure to convert %s to %s"
*** 315,324 ****
  msgstr "no se puede convertir %s a %s"
  
  #: directives.cc:243
! #, fuzzy, gcc-internal-format
! #| msgid "extra tokens at end of #%s directive"
  msgid "extra tokens at end of %<#%s%> directive"
! msgstr "elementos extra al final de la directiva #%s"
  
  #: directives.cc:286
  #, gcc-internal-format, gfc-internal-format
--- 288,296 ----
  msgstr "no se puede convertir %s a %s"
  
  #: directives.cc:243
! #, gcc-internal-format
  msgid "extra tokens at end of %<#%s%> directive"
! msgstr "elementos extra al final de la directiva %<#%s%>"
  
  #: directives.cc:286
  #, gcc-internal-format, gfc-internal-format
*************** msgid "extra tokens at end of #%s direct
*** 326,372 ****
  msgstr "elementos extra al final de la directiva #%s"
  
  #: directives.cc:396
! #, fuzzy, gcc-internal-format
! #| msgid "#%s is a GCC extension"
  msgid "%<#%s%> is a GCC extension"
! msgstr "#%s es una extensión de GCC"
  
  #: directives.cc:404 directives.cc:2686 directives.cc:2725
! #, fuzzy, gcc-internal-format
! #| msgid "#%s before C++23 is a GCC extension"
  msgid "%<#%s%> before C++23 is a GCC extension"
! msgstr "#%s antes de C++23 es una extensión de GCC"
  
  #: directives.cc:409 directives.cc:415 directives.cc:1374 directives.cc:2690
  #: directives.cc:2730
! #, fuzzy, gcc-internal-format
! #| msgid "#%s before C23 is a GCC extension"
  msgid "%<#%s%> before C23 is a GCC extension"
! msgstr "#%s antes de C23 es una extensión de GCC"
  
  #: directives.cc:423
! #, fuzzy, gcc-internal-format
! #| msgid "#%s is a deprecated GCC extension"
  msgid "%<#%s%> is a deprecated GCC extension"
! msgstr "#%s es una extensión de GCC obsoleta"
  
  #: directives.cc:436
! #, fuzzy, gcc-internal-format
! #| msgid "suggest not using #elif in traditional C"
  msgid "suggest not using %<#elif%> in traditional C"
! msgstr "se sugiere no usar #elif en C tradicional"
  
  #: directives.cc:439
! #, fuzzy, gcc-internal-format
! #| msgid "traditional C ignores #%s with the # indented"
  msgid "traditional C ignores %<#%s%> with the %<#%> indented"
! msgstr "C tradicional descarta #%s con el # indentado"
  
  #: directives.cc:443
! #, fuzzy, gcc-internal-format
! #| msgid "suggest hiding #%s from traditional C with an indented #"
  msgid "suggest hiding %<#%s%> from traditional C with an indented %<#%>"
! msgstr "se sugiere ocultar #%s de C tradicional con un # indentado"
  
  #: directives.cc:468
  msgid "embedding a directive within macro arguments is not portable"
--- 298,337 ----
  msgstr "elementos extra al final de la directiva #%s"
  
  #: directives.cc:396
! #, gcc-internal-format
  msgid "%<#%s%> is a GCC extension"
! msgstr "%<#%s%> es una extensión de GCC"
  
  #: directives.cc:404 directives.cc:2686 directives.cc:2725
! #, gcc-internal-format
  msgid "%<#%s%> before C++23 is a GCC extension"
! msgstr "%<#%s%> antes de C++23 es una extensión de GCC"
  
  #: directives.cc:409 directives.cc:415 directives.cc:1374 directives.cc:2690
  #: directives.cc:2730
! #, gcc-internal-format
  msgid "%<#%s%> before C23 is a GCC extension"
! msgstr "%<#%s%> antes de C23 es una extensión de GCC"
  
  #: directives.cc:423
! #, gcc-internal-format
  msgid "%<#%s%> is a deprecated GCC extension"
! msgstr "%<#%s%> es una extensión de GCC obsoleta"
  
  #: directives.cc:436
! #, gcc-internal-format
  msgid "suggest not using %<#elif%> in traditional C"
! msgstr "se sugiere no usar %<#elif%> en C tradicional"
  
  #: directives.cc:439
! #, gcc-internal-format
  msgid "traditional C ignores %<#%s%> with the %<#%> indented"
! msgstr "C tradicional descarta %<#%s%> con el %<#%> indentado"
  
  #: directives.cc:443
! #, gcc-internal-format
  msgid "suggest hiding %<#%s%> from traditional C with an indented %<#%>"
! msgstr "se sugiere ocultar %<#%s%> de C tradicional con un %<#%> indentado"
  
  #: directives.cc:468
  msgid "embedding a directive within macro arguments is not portable"
*************** msgid "invalid preprocessing directive #
*** 387,430 ****
  msgstr "directiva de preprocesamiento #%s inválida"
  
  #: directives.cc:656
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" cannot be used as a macro name"
  msgid "%qs cannot be used as a macro name"
! msgstr "«%s» no se puede utilizar como nombre de macro"
  
  #: directives.cc:663
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
  msgid "%qs cannot be used as a macro name as it is an operator in C++"
! msgstr "no se puede utilizar «%s» como un nombre de macro porque es un operador en C++"
  
  #: directives.cc:666
! #, fuzzy, gcc-internal-format
! #| msgid "no macro name given in #%s directive"
  msgid "no macro name given in %<#%s%> directive"
! msgstr "no se dio un nombre de macro en la directiva #%s"
  
  #: directives.cc:669
  msgid "macro names must be identifiers"
  msgstr "los nombres de macro deben ser identificadores"
  
  #: directives.cc:743 directives.cc:747
! #, fuzzy, gcc-internal-format
! #| msgid "undefining \"%s\""
  msgid "undefining %qs"
! msgstr "borrando la definición de «%s»"
  
  #: directives.cc:805
! #, fuzzy, gcc-internal-format
! #| msgid "missing terminating > character"
  msgid "missing terminating %<>%> character"
! msgstr "falta el carácter de terminación >"
  
  #: directives.cc:865
! #, fuzzy, gcc-internal-format
! #| msgid "#%s expects \"FILENAME\" or <FILENAME>"
  msgid "%<#%s%> expects %<\"FILENAME\"%> or %<<FILENAME>%>"
! msgstr "#%s espera «NOMBREFICHERO» o <NOMBREFICHERO>"
  
  #: directives.cc:911 directives.cc:1391
  #, gcc-internal-format, gfc-internal-format
--- 352,389 ----
  msgstr "directiva de preprocesamiento #%s inválida"
  
  #: directives.cc:656
! #, gcc-internal-format
  msgid "%qs cannot be used as a macro name"
! msgstr "%qs no se puede utilizar como nombre de macro"
  
  #: directives.cc:663
! #, gcc-internal-format
  msgid "%qs cannot be used as a macro name as it is an operator in C++"
! msgstr "no se puede utilizar %qs como un nombre de macro porque es un operador en C++"
  
  #: directives.cc:666
! #, gcc-internal-format
  msgid "no macro name given in %<#%s%> directive"
! msgstr "no se dio un nombre de macro en la directiva %<#%s%>"
  
  #: directives.cc:669
  msgid "macro names must be identifiers"
  msgstr "los nombres de macro deben ser identificadores"
  
  #: directives.cc:743 directives.cc:747
! #, gcc-internal-format
  msgid "undefining %qs"
! msgstr "se borra la definición de %qs"
  
  #: directives.cc:805
! #, gcc-internal-format
  msgid "missing terminating %<>%> character"
! msgstr "falta el carácter de terminación %<>%>"
  
  #: directives.cc:865
! #, gcc-internal-format
  msgid "%<#%s%> expects %<\"FILENAME\"%> or %<<FILENAME>%>"
! msgstr "%<#%s$> espera %<\"NOMBREFICHERO\"%> o %<<NOMBREFICHERO>%>"
  
  #: directives.cc:911 directives.cc:1391
  #, gcc-internal-format, gfc-internal-format
*************** msgid "empty filename in #%s"
*** 432,564 ****
  msgstr "nombre de fichero vacío en #%s"
  
  #: directives.cc:920
! #, fuzzy, gcc-internal-format
! #| msgid "#include nested depth %u exceeds maximum of %u (use -fmax-include-depth=DEPTH to increase the maximum)"
  msgid "%<#include%> nested depth %u exceeds maximum of %u (use %<-fmax-include-depth=DEPTH%> to increase the maximum)"
! msgstr "la profundidad anidada %u de #include excede el máximo %u (utilice -fmax-include-depth=PROFUNDIDAD para aumentar el máximo)"
  
  #: directives.cc:965
! #, fuzzy, gcc-internal-format
! #| msgid "#include_next in primary source file"
  msgid "%<#include_next%> in primary source file"
! msgstr "#include_next en fichero primario de código fuente"
  
  #: directives.cc:1037 directives.cc:1059 directives.cc:1062 directives.cc:1065
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "unbalanced stack in %s"
  msgid "unbalanced '%c'"
! msgstr "pila desbalanceada en %s"
  
  #: directives.cc:1120 directives.cc:1311
  #, gcc-internal-format
  msgid "expected %<)%>"
! msgstr ""
  
  #: directives.cc:1126 directives.cc:1177
- #, fuzzy
- #| msgid "expected parameter name, found \"%s\""
  msgid "expected parameter name"
! msgstr "se esperaba un nombre de parámetro; se ha encontrado «%s»"
  
  #: directives.cc:1137
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter conflicts with %<limit%> or %<gnu::offset%> parameters"
! msgstr ""
  
  #: directives.cc:1147
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter required in preprocessed source"
! msgstr ""
  
  #: directives.cc:1168
  #, gcc-internal-format
  msgid "expected %<:%>"
! msgstr ""
  
  #: directives.cc:1235
! #, fuzzy, gcc-internal-format
! #| msgid "duplicate macro parameter \"%s\""
  msgid "duplicate embed parameter '%.*s%s%.*s'"
! msgstr "parámetro de macro «%s» duplicado"
  
  #: directives.cc:1247
  #, gcc-internal-format
  msgid "unknown embed parameter '%.*s%s%.*s'"
! msgstr ""
  
  #: directives.cc:1256
  #, gcc-internal-format
  msgid "expected %<(%>"
! msgstr ""
  
  #: directives.cc:1269
  #, gcc-internal-format
  msgid "too large %<gnu::offset%> argument"
! msgstr ""
  
  #: directives.cc:1316
- #, fuzzy
- #| msgid "null character(s) preserved in literal"
  msgid "expected character string literal"
! msgstr "caracter(es) nulo(s) preservados en la literal"
  
  #: directives.cc:1361
! #, fuzzy, gcc-internal-format
! #| msgid "suggest not using #elif in traditional C"
  msgid "%<#embed%> not supported in traditional C"
! msgstr "se sugiere no usar #elif en C tradicional"
  
  #: directives.cc:1370
! #, fuzzy, gcc-internal-format
! #| msgid "#%s before C++23 is a GCC extension"
  msgid "%<#%s%> before C++26 is a GCC extension"
! msgstr "#%s antes de C++23 es una extensión de GCC"
  
  #: directives.cc:1379
! #, fuzzy, gcc-internal-format
! #| msgid "#%s is a GCC extension"
  msgid "%<#%s%> is a C23 feature"
! msgstr "#%s es una extensión de GCC"
  
  #: directives.cc:1436
! #, fuzzy, gcc-internal-format
! #| msgid "invalid flag \"%s\" in line directive"
  msgid "invalid flag %qs in line directive"
! msgstr "indicador «%s» inválido en la línea de directiva"
  
  #: directives.cc:1504
! #, fuzzy, gcc-internal-format
! #| msgid "unexpected end of file after #line"
  msgid "unexpected end of file after %<#line%>"
! msgstr "fin de fichero inesperado después de #line"
  
  #: directives.cc:1507
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" after #line is not a positive integer"
  msgid "%qs after %<#line%> is not a positive integer"
! msgstr "«%s» después de #line no es un entero positivo"
  
  #: directives.cc:1513 directives.cc:1516
  msgid "line number out of range"
! msgstr "número de línea fuera de rango"
  
  #: directives.cc:1529 directives.cc:1610
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" is not a valid filename"
  msgid "%qs is not a valid filename"
! msgstr "«%s» no es un nombre de fichero válido"
  
  #: directives.cc:1570
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" after # is not a positive integer"
  msgid "%qs after %<#%> is not a positive integer"
! msgstr "«%s» después de # no es un entero positivo"
  
  #: directives.cc:1637
! #, fuzzy, gcc-internal-format
! #| msgid "file \"%s\" linemarker ignored due to incorrect nesting"
  msgid "file %qs linemarker ignored due to incorrect nesting"
! msgstr "se descarta la marca lineal de fichero «%s» debido a anidación incorrecta"
  
  #: directives.cc:1715 directives.cc:1717 directives.cc:1719 directives.cc:2326
  #, gcc-internal-format, gfc-internal-format
--- 391,506 ----
  msgstr "nombre de fichero vacío en #%s"
  
  #: directives.cc:920
! #, gcc-internal-format
  msgid "%<#include%> nested depth %u exceeds maximum of %u (use %<-fmax-include-depth=DEPTH%> to increase the maximum)"
! msgstr "la profundidad anidada %u de %<#include%> excede el máximo de %u (utilice %<-fmax-include-depth=PROFUNDIDAD%> para aumentar el máximo)"
  
  #: directives.cc:965
! #, gcc-internal-format
  msgid "%<#include_next%> in primary source file"
! msgstr "%<#include_next%> en fichero de código fuente primario"
  
  #: directives.cc:1037 directives.cc:1059 directives.cc:1062 directives.cc:1065
! #, gcc-internal-format, gfc-internal-format
  msgid "unbalanced '%c'"
! msgstr "«%c» desbalanceado"
  
  #: directives.cc:1120 directives.cc:1311
  #, gcc-internal-format
  msgid "expected %<)%>"
! msgstr "se esperaba %<)%>"
  
  #: directives.cc:1126 directives.cc:1177
  msgid "expected parameter name"
! msgstr "se esperaba un nombre de parámetro"
  
  #: directives.cc:1137
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter conflicts with %<limit%> or %<gnu::offset%> parameters"
! msgstr "el parámetro %<gnu::base64%> tiene conflictos con los parámetros %<limit%> o %<gnu::offset%>"
  
  #: directives.cc:1147
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter required in preprocessed source"
! msgstr "se requiere el parámetro %<gnu::base64%> en una fuente preprocesada"
  
  #: directives.cc:1168
  #, gcc-internal-format
  msgid "expected %<:%>"
! msgstr "se esperaba %<:%>"
  
  #: directives.cc:1235
! #, gcc-internal-format
  msgid "duplicate embed parameter '%.*s%s%.*s'"
! msgstr "parámetro imbuído «%.*s%s%.*s» duplicado"
  
  #: directives.cc:1247
  #, gcc-internal-format
  msgid "unknown embed parameter '%.*s%s%.*s'"
! msgstr "parámetro imbuído «%.*s%s%.*s» desconocido"
  
  #: directives.cc:1256
  #, gcc-internal-format
  msgid "expected %<(%>"
! msgstr "se esperaba %<(%>"
  
  #: directives.cc:1269
  #, gcc-internal-format
  msgid "too large %<gnu::offset%> argument"
! msgstr "el argumento %<gnu::offset%> es demasiado grande"
  
  #: directives.cc:1316
  msgid "expected character string literal"
! msgstr "se esperaba una literal de carácter de cadena"
  
  #: directives.cc:1361
! #, gcc-internal-format
  msgid "%<#embed%> not supported in traditional C"
! msgstr "no se admite %<#embed%> en C tradicional"
  
  #: directives.cc:1370
! #, gcc-internal-format
  msgid "%<#%s%> before C++26 is a GCC extension"
! msgstr "%<#%s%> antes de C++26 es una extensión de GCC"
  
  #: directives.cc:1379
! #, gcc-internal-format
  msgid "%<#%s%> is a C23 feature"
! msgstr "%<#%s%> es una característica de C23"
  
  #: directives.cc:1436
! #, gcc-internal-format
  msgid "invalid flag %qs in line directive"
! msgstr "indicador %qs inválido en la línea de directiva"
  
  #: directives.cc:1504
! #, gcc-internal-format
  msgid "unexpected end of file after %<#line%>"
! msgstr "fin de fichero inesperado después de %<#line%>"
  
  #: directives.cc:1507
! #, gcc-internal-format
  msgid "%qs after %<#line%> is not a positive integer"
! msgstr "%qs después de %<#line%> no es un entero positivo"
  
  #: directives.cc:1513 directives.cc:1516
  msgid "line number out of range"
! msgstr "número de línea fuera de intervalo"
  
  #: directives.cc:1529 directives.cc:1610
! #, gcc-internal-format
  msgid "%qs is not a valid filename"
! msgstr "%qs no es un nombre de fichero válido"
  
  #: directives.cc:1570
! #, gcc-internal-format
  msgid "%qs after %<#%> is not a positive integer"
! msgstr "%qs después de %<#%> no es un entero positivo"
  
  #: directives.cc:1637
! #, gcc-internal-format
  msgid "file %qs linemarker ignored due to incorrect nesting"
! msgstr "se descarta la marca lineal de fichero %qs debido a anidación incorrecta"
  
  #: directives.cc:1715 directives.cc:1717 directives.cc:1719 directives.cc:2326
  #, gcc-internal-format, gfc-internal-format
*************** msgid "invalid #%s directive"
*** 571,638 ****
  msgstr "directiva #%s inválida"
  
  #: directives.cc:1806
! #, fuzzy, gcc-internal-format
! #| msgid "registering pragmas in namespace \"%s\" with mismatched name expansion"
  msgid "registering pragmas in namespace %qs with mismatched name expansion"
! msgstr "se registran pragmas en el espacio de nombres «%s» con una expansión de nombre que no coincide"
  
  #: directives.cc:1815
! #, fuzzy, gcc-internal-format
! #| msgid "registering pragma \"%s\" with name expansion and no namespace"
  msgid "registering pragma %qs with name expansion and no namespace"
! msgstr "se registra el pragma «%s» con expansión de nombre y sin un espacio de nombres"
  
  #: directives.cc:1833
! #, fuzzy, gcc-internal-format
! #| msgid "registering \"%s\" as both a pragma and a pragma namespace"
  msgid "registering %qs as both a pragma and a pragma namespace"
! msgstr "se registra «%s» como un pragma y como un espacio de nombres de pragma"
  
  #: directives.cc:1836
! #, fuzzy, gcc-internal-format
! #| msgid "#pragma %s %s is already registered"
  msgid "%<#pragma %s %s%> is already registered"
! msgstr "#pragma %s %s ya está registrado"
  
  #: directives.cc:1839
! #, fuzzy, gcc-internal-format
! #| msgid "#pragma %s is already registered"
  msgid "%<#pragma %s%> is already registered"
! msgstr "#pragma %s ya está registrado"
  
  #: directives.cc:1870
  msgid "registering pragma with NULL handler"
  msgstr "se registra un pragma con manejador NULL"
  
  #: directives.cc:2088
! #, fuzzy, gcc-internal-format
! #| msgid "#pragma once in main file"
  msgid "%<#pragma once%> in main file"
! msgstr "#pragma una vez en el fichero principal"
  
  #: directives.cc:2158
! #, fuzzy, gcc-internal-format
! #| msgid "invalid #pragma push_macro directive"
  msgid "invalid %<#pragma %s_macro%> directive"
! msgstr "directiva #pragma push_macro inválida"
  
  #: directives.cc:2237
! #, fuzzy, gcc-internal-format
! #| msgid "invalid #pragma GCC poison directive"
  msgid "invalid %<#pragma GCC poison%> directive"
! msgstr "directiva #pragma de GCC envenenada inválida"
  
  #: directives.cc:2246
! #, fuzzy, gcc-internal-format
! #| msgid "poisoning existing macro \"%s\""
  msgid "poisoning existing macro %qs"
! msgstr "se envenena el macro existente «%s»"
  
  #: directives.cc:2268
! #, fuzzy, gcc-internal-format
! #| msgid "#pragma system_header ignored outside include file"
  msgid "%<#pragma system_header%> ignored outside include file"
! msgstr "se descarta #pragma system_header fuera del fichero a incluir"
  
  #: directives.cc:2293
  #, gcc-internal-format, gfc-internal-format
--- 513,570 ----
  msgstr "directiva #%s inválida"
  
  #: directives.cc:1806
! #, gcc-internal-format
  msgid "registering pragmas in namespace %qs with mismatched name expansion"
! msgstr "se registran pragmas en el espacio de nombres %qs con una expansión de nombre que no coincide"
  
  #: directives.cc:1815
! #, gcc-internal-format
  msgid "registering pragma %qs with name expansion and no namespace"
! msgstr "se registra el pragma %qs con expansión de nombre y sin un espacio de nombres"
  
  #: directives.cc:1833
! #, gcc-internal-format
  msgid "registering %qs as both a pragma and a pragma namespace"
! msgstr "se registra %qs como un pragma y como un espacio de nombres de pragma"
  
  #: directives.cc:1836
! #, gcc-internal-format
  msgid "%<#pragma %s %s%> is already registered"
! msgstr "%<#pragma %s %s%> ya está registrado"
  
  #: directives.cc:1839
! #, gcc-internal-format
  msgid "%<#pragma %s%> is already registered"
! msgstr "%<#pragma %s%> ya está registrado"
  
  #: directives.cc:1870
  msgid "registering pragma with NULL handler"
  msgstr "se registra un pragma con manejador NULL"
  
  #: directives.cc:2088
! #, gcc-internal-format
  msgid "%<#pragma once%> in main file"
! msgstr "%<#pragma once%> en el fichero principal"
  
  #: directives.cc:2158
! #, gcc-internal-format
  msgid "invalid %<#pragma %s_macro%> directive"
! msgstr "directiva %<#pragma %s_macro%> inválida"
  
  #: directives.cc:2237
! #, gcc-internal-format
  msgid "invalid %<#pragma GCC poison%> directive"
! msgstr "directiva %<#pragma GCC poison%> inválida"
  
  #: directives.cc:2246
! #, gcc-internal-format
  msgid "poisoning existing macro %qs"
! msgstr "se envenena el macro existente %qs"
  
  #: directives.cc:2268
! #, gcc-internal-format
  msgid "%<#pragma system_header%> ignored outside include file"
! msgstr "se descarta %<#pragma system_header%> fuera del fichero a incluir"
  
  #: directives.cc:2293
  #, gcc-internal-format, gfc-internal-format
*************** msgid "current file is older than %s"
*** 645,710 ****
  msgstr "el fichero actual es más antiguo que %s"
  
  #: directives.cc:2321
! #, fuzzy, gcc-internal-format
! #| msgid "invalid \"#pragma GCC %s\" directive"
  msgid "invalid %<#pragma GCC %s%> directive"
! msgstr "directiva «#pragma GCC %s» inválida"
  
  #: directives.cc:2541
! #, fuzzy, gcc-internal-format
! #| msgid "_Pragma takes a parenthesized string literal"
  msgid "%<_Pragma%> takes a parenthesized string literal"
! msgstr "_Pragma lleva una cadena literal entre paréntesis"
  
  #: directives.cc:2624
! #, fuzzy, gcc-internal-format
! #| msgid "#else without #if"
  msgid "%<#else%> without %<#if%>"
! msgstr "#else sin #if"
  
  #: directives.cc:2629
! #, fuzzy, gcc-internal-format
! #| msgid "#else after #else"
  msgid "%<#else%> after %<#else%>"
! msgstr "#else después de #else"
  
  #: directives.cc:2631 directives.cc:2666
  msgid "the conditional began here"
  msgstr "el condicional empezó aquí"
  
  #: directives.cc:2657
! #, fuzzy, gcc-internal-format
! #| msgid "#%s without #if"
  msgid "%<#%s%> without %<#if%>"
! msgstr "#%s sin #if"
  
  #: directives.cc:2663
! #, fuzzy, gcc-internal-format
! #| msgid "#%s after #else"
  msgid "%<#%s%> after %<#else%>"
! msgstr "#%s después de #else"
  
  #: directives.cc:2767
! #, fuzzy, gcc-internal-format
! #| msgid "#endif without #if"
  msgid "%<#endif%> without %<#if%>"
! msgstr "#endif sin #if"
  
  #: directives.cc:2852
! #, fuzzy, gcc-internal-format
! #| msgid "missing '(' after predicate"
  msgid "missing %<(%> after predicate"
! msgstr "falta '(' después del predicado"
  
  #: directives.cc:2870
! #, fuzzy, gcc-internal-format
! #| msgid "missing ')' to complete answer"
  msgid "missing %<)%> to complete answer"
! msgstr "falta ')' para completar la respuesta"
  
  #: directives.cc:2882
! #, fuzzy, gcc-internal-format
! #| msgid "predicate's answer is empty"
  msgid "predicate%'s answer is empty"
  msgstr "la respuesta del predicado está vacía"
  
--- 577,632 ----
  msgstr "el fichero actual es más antiguo que %s"
  
  #: directives.cc:2321
! #, gcc-internal-format
  msgid "invalid %<#pragma GCC %s%> directive"
! msgstr "directiva %<#pragma GCC %s%> inválida"
  
  #: directives.cc:2541
! #, gcc-internal-format
  msgid "%<_Pragma%> takes a parenthesized string literal"
! msgstr "%<_Pragma%> lleva una cadena literal entre paréntesis"
  
  #: directives.cc:2624
! #, gcc-internal-format
  msgid "%<#else%> without %<#if%>"
! msgstr "%<#else%> sin %<#if%>"
  
  #: directives.cc:2629
! #, gcc-internal-format
  msgid "%<#else%> after %<#else%>"
! msgstr "%<#else%> después de %<#else%>"
  
  #: directives.cc:2631 directives.cc:2666
  msgid "the conditional began here"
  msgstr "el condicional empezó aquí"
  
  #: directives.cc:2657
! #, gcc-internal-format
  msgid "%<#%s%> without %<#if%>"
! msgstr "%<#%s%> sin %<#if%>"
  
  #: directives.cc:2663
! #, gcc-internal-format
  msgid "%<#%s%> after %<#else%>"
! msgstr "%<#%s%> después de %<#else%>"
  
  #: directives.cc:2767
! #, gcc-internal-format
  msgid "%<#endif%> without %<#if%>"
! msgstr "%<#endif%> sin %<#if%>"
  
  #: directives.cc:2852
! #, gcc-internal-format
  msgid "missing %<(%> after predicate"
! msgstr "falta %<(%> después del predicado"
  
  #: directives.cc:2870
! #, gcc-internal-format
  msgid "missing %<)%> to complete answer"
! msgstr "falta %<)%> para completar la respuesta"
  
  #: directives.cc:2882
! #, gcc-internal-format
  msgid "predicate%'s answer is empty"
  msgstr "la respuesta del predicado está vacía"
  
*************** msgid "predicate must be an identifier"
*** 717,726 ****
  msgstr "el predicado debe ser un identificador"
  
  #: directives.cc:2997
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" re-asserted"
  msgid "%qs re-asserted"
! msgstr "«%s» reafirmado"
  
  #: directives.cc:3305
  #, gcc-internal-format, gfc-internal-format
--- 639,647 ----
  msgstr "el predicado debe ser un identificador"
  
  #: directives.cc:2997
! #, gcc-internal-format
  msgid "%qs re-asserted"
! msgstr "%qs reafirmado"
  
  #: directives.cc:3305
  #, gcc-internal-format, gfc-internal-format
*************** msgid "fixed-point constants are a GCC e
*** 741,756 ****
  msgstr "las constantes de coma fija son una extensión GCC"
  
  #: expr.cc:721
! #, fuzzy, gcc-internal-format
! #| msgid "invalid prefix \"0b\" for floating constant"
  msgid "invalid prefix %<0b%> for floating constant"
! msgstr "prefijo «0b» inválido en la constante de coma flotante"
  
  #: expr.cc:727
! #, fuzzy, gcc-internal-format
! #| msgid "invalid prefix \"0b\" for floating constant"
  msgid "invalid prefix %<0o%> for floating constant"
! msgstr "prefijo «0b» inválido en la constante de coma flotante"
  
  #: expr.cc:740
  msgid "use of C++17 hexadecimal floating constant"
--- 662,675 ----
  msgstr "las constantes de coma fija son una extensión GCC"
  
  #: expr.cc:721
! #, gcc-internal-format
  msgid "invalid prefix %<0b%> for floating constant"
! msgstr "prefijo %<0b%> inválido en la constante de coma flotante"
  
  #: expr.cc:727
! #, gcc-internal-format
  msgid "invalid prefix %<0o%> for floating constant"
! msgstr "prefijo %<0o%> inválido en la constante de coma flotante"
  
  #: expr.cc:740
  msgid "use of C++17 hexadecimal floating constant"
*************** msgid "use of C99 hexadecimal floating c
*** 761,798 ****
  msgstr "uso de una constante de coma flotante hexadecimal C99"
  
  #: expr.cc:789
! #, fuzzy, gcc-internal-format
! #| msgid "invalid suffix \"%.*s\" on floating constant"
  msgid "invalid suffix %<%.*s%> on floating constant"
! msgstr "sufijo «%.*s» inválido en la constante de coma flotante"
  
  #: expr.cc:800 expr.cc:870
! #, fuzzy, gcc-internal-format
! #| msgid "traditional C rejects the \"%.*s\" suffix"
  msgid "traditional C rejects the %<%.*s%> suffix"
! msgstr "C tradicional rechaza «%.*s» como sufijo"
  
  #: expr.cc:809
  msgid "suffix for double constant is a GCC extension"
  msgstr "el sufijo para una constante doble es una extensión GCC"
  
  #: expr.cc:815
! #, fuzzy, gcc-internal-format
! #| msgid "invalid suffix \"%.*s\" with hexadecimal floating constant"
  msgid "invalid suffix %<%.*s%> with hexadecimal floating constant"
! msgstr "sufijo «%.*s» inválido en la constante de coma flotante hexadecimal"
  
  #: expr.cc:829 expr.cc:833
- #, fuzzy
- #| msgid "decimal float constants are a C23 feature"
  msgid "decimal floating constants are a C23 feature"
  msgstr "las constantes de coma flotante decimal son una característica de C23"
  
  #: expr.cc:853
! #, fuzzy, gcc-internal-format
! #| msgid "invalid suffix \"%.*s\" on integer constant"
  msgid "invalid suffix %<%.*s%> on integer constant"
! msgstr "sufijo «%.*s» inválido en la constante entera"
  
  #: expr.cc:878
  msgid "use of C++11 long long integer constant"
--- 680,711 ----
  msgstr "uso de una constante de coma flotante hexadecimal C99"
  
  #: expr.cc:789
! #, gcc-internal-format
  msgid "invalid suffix %<%.*s%> on floating constant"
! msgstr "sufijo %<%.*s%> inválido en una constante de coma flotante"
  
  #: expr.cc:800 expr.cc:870
! #, gcc-internal-format
  msgid "traditional C rejects the %<%.*s%> suffix"
! msgstr "C tradicional rechaza %<%.*s%> como sufijo"
  
  #: expr.cc:809
  msgid "suffix for double constant is a GCC extension"
  msgstr "el sufijo para una constante doble es una extensión GCC"
  
  #: expr.cc:815
! #, gcc-internal-format
  msgid "invalid suffix %<%.*s%> with hexadecimal floating constant"
! msgstr "sufijo %<%.*s%> inválido en una constante de coma flotante hexadecimal"
  
  #: expr.cc:829 expr.cc:833
  msgid "decimal floating constants are a C23 feature"
  msgstr "las constantes de coma flotante decimal son una característica de C23"
  
  #: expr.cc:853
! #, gcc-internal-format
  msgid "invalid suffix %<%.*s%> on integer constant"
! msgstr "sufijo %<%.*s%> inválido en una constante entera"
  
  #: expr.cc:878
  msgid "use of C++11 long long integer constant"
*************** msgid "imaginary constants are a GCC ext
*** 822,841 ****
  msgstr "las constantes imaginarias son una extensión de GCC"
  
  #: expr.cc:939
- #, fuzzy
- #| msgid "binary constants are a C23 feature or GCC extension"
  msgid "imaginary constants are a C2Y feature or GCC extension"
! msgstr "las constantes binarias son una característica de C23 o una extensión de GCC"
  
  #: expr.cc:944
- #, fuzzy
- #| msgid "binary constants are a C23 feature"
  msgid "imaginary constants are a C2Y feature"
! msgstr "las constantes binarias son una característica de C23"
  
  #: expr.cc:956
  msgid "binary constants are a C++14 feature or GCC extension"
! msgstr "las constantes binarias son una característica C++14 o una extensión de GCC"
  
  #: expr.cc:961
  msgid "binary constants are a C23 feature or GCC extension"
--- 735,750 ----
  msgstr "las constantes imaginarias son una extensión de GCC"
  
  #: expr.cc:939
  msgid "imaginary constants are a C2Y feature or GCC extension"
! msgstr "las constantes binarias son una característica de C2Y o una extensión de GCC"
  
  #: expr.cc:944
  msgid "imaginary constants are a C2Y feature"
! msgstr "las constantes imaginarias son una característica de C2Y"
  
  #: expr.cc:956
  msgid "binary constants are a C++14 feature or GCC extension"
! msgstr "las constantes binarias son una característica de C++14 o una extensión de GCC"
  
  #: expr.cc:961
  msgid "binary constants are a C23 feature or GCC extension"
*************** msgid "binary constants are a C23 featur
*** 846,861 ****
  msgstr "las constantes binarias son una característica de C23"
  
  #: expr.cc:974
! #, fuzzy, gcc-internal-format
! #| msgid "binary constants are a C23 feature or GCC extension"
  msgid "%<0o%> prefixed constants are a C2Y feature or GCC extension"
! msgstr "las constantes binarias son una característica de C23 o una extensión de GCC"
  
  #: expr.cc:979
! #, fuzzy, gcc-internal-format
! #| msgid "binary constants are a C23 feature"
  msgid "%<0o%> prefixed constants are a C2Y feature"
! msgstr "las constantes binarias son una característica de C23"
  
  #: expr.cc:1077
  msgid "integer constant is too large for its type"
--- 755,768 ----
  msgstr "las constantes binarias son una característica de C23"
  
  #: expr.cc:974
! #, gcc-internal-format
  msgid "%<0o%> prefixed constants are a C2Y feature or GCC extension"
! msgstr "las constantes con prefijo %<0o%> son una característica de C2Y o una extensión de GCC"
  
  #: expr.cc:979
! #, gcc-internal-format
  msgid "%<0o%> prefixed constants are a C2Y feature"
! msgstr "las constantes con prefijo %<0o%> son una característica de C2Y"
  
  #: expr.cc:1077
  msgid "integer constant is too large for its type"
*************** msgstr "la constante entera es tan grand
*** 868,898 ****
  #: expr.cc:1189
  #, gcc-internal-format
  msgid "%<defined%> in %<#embed%> parameter"
! msgstr ""
  
  #: expr.cc:1206
! #, fuzzy, gcc-internal-format
! #| msgid "missing ')' after \"defined\""
  msgid "missing %<)%> after %<defined%>"
! msgstr "falta ')' después de «defined»"
  
  #: expr.cc:1213
! #, fuzzy, gcc-internal-format
! #| msgid "operator \"defined\" requires an identifier"
  msgid "operator %<defined%> requires an identifier"
! msgstr "el operador «defined» requiere un identificador"
  
  #: expr.cc:1221
! #, fuzzy, gcc-internal-format
! #| msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
  msgid "(%qs is an alternative token for %qs in C++)"
! msgstr "(«%s» es un elemento alternativo para «%s» en C++)"
  
  #: expr.cc:1234
! #, fuzzy, gcc-internal-format
! #| msgid "this use of \"defined\" may not be portable"
  msgid "this use of %<defined%> may not be portable"
! msgstr "este uso de «defined» puede no ser transportable"
  
  #: expr.cc:1279
  msgid "user-defined literal in preprocessor expression"
--- 775,801 ----
  #: expr.cc:1189
  #, gcc-internal-format
  msgid "%<defined%> in %<#embed%> parameter"
! msgstr "%<defined%> en un parámetro %<#embed%>"
  
  #: expr.cc:1206
! #, gcc-internal-format
  msgid "missing %<)%> after %<defined%>"
! msgstr "falta %<)%> después de %<defined%>"
  
  #: expr.cc:1213
! #, gcc-internal-format
  msgid "operator %<defined%> requires an identifier"
! msgstr "el operador %<defined%> requiere un identificador"
  
  #: expr.cc:1221
! #, gcc-internal-format
  msgid "(%qs is an alternative token for %qs in C++)"
! msgstr "(%qs es un elemento alternativo para %qs en C++)"
  
  #: expr.cc:1234
! #, gcc-internal-format
  msgid "this use of %<defined%> may not be portable"
! msgstr "este uso de %<defined%> puede no ser transportable"
  
  #: expr.cc:1279
  msgid "user-defined literal in preprocessor expression"
*************** msgid "imaginary number in preprocessor
*** 907,916 ****
  msgstr "número imaginario en una expresión del preprocesador"
  
  #: expr.cc:1339
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" is not defined, evaluates to 0"
  msgid "%qs is not defined, evaluates to %<0%>"
! msgstr "«%s» no está definido, evalúa a 0"
  
  #: expr.cc:1351
  msgid "assertions are a GCC extension"
--- 810,818 ----
  msgstr "número imaginario en una expresión del preprocesador"
  
  #: expr.cc:1339
! #, gcc-internal-format
  msgid "%qs is not defined, evaluates to %<0%>"
! msgstr "%qs no está definido, evalúa a %<0%>"
  
  #: expr.cc:1351
  msgid "assertions are a GCC extension"
*************** msgstr "pila desbalanceada en %s"
*** 927,1008 ****
  
  #: expr.cc:1633
  msgid "negative embed parameter operand"
! msgstr ""
  
  #: expr.cc:1639
  msgid "too large embed parameter operand"
! msgstr ""
  
  #: expr.cc:1658
  #, gcc-internal-format, gfc-internal-format
  msgid "impossible operator '%u'"
! msgstr "operador '%u' imposible"
  
  #: expr.cc:1759
! #, fuzzy, gcc-internal-format
! #| msgid "missing ')' in expression"
  msgid "missing %<)%> in expression"
! msgstr "falta ')' en la expresión"
  
  #: expr.cc:1788
! #, fuzzy, gcc-internal-format
! #| msgid "'?' without following ':'"
  msgid "%<?%> without following %<:%>"
! msgstr "'?' sin ':' a continuación"
  
  #: expr.cc:1798
  msgid "integer overflow in preprocessor expression"
! msgstr "desbordamiento entero en expresión del preprocesador"
  
  #: expr.cc:1803
! #, fuzzy, gcc-internal-format
! #| msgid "missing '(' in expression"
  msgid "missing %<(%> in expression"
! msgstr "falta '(' en la expresión"
  
  #: expr.cc:1835
! #, fuzzy, gcc-internal-format
! #| msgid "the left operand of \"%s\" changes sign when promoted"
  msgid "the left operand of %qs changes sign when promoted"
! msgstr "el operando izquierdo de «%s» cambia de signo cuando es promovido"
  
  #: expr.cc:1840
! #, fuzzy, gcc-internal-format
! #| msgid "the right operand of \"%s\" changes sign when promoted"
  msgid "the right operand of %qs changes sign when promoted"
! msgstr "el operando derecho de «%s» cambia de signo cuando es promovido"
  
  #: expr.cc:2099
  msgid "traditional C rejects the unary plus operator"
! msgstr "C tradicional rechaza el operador unario mas"
  
  #: expr.cc:2197
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "comma operator in operand of #if"
  msgid "comma operator in operand of #%s"
! msgstr "operador coma en operando de #if"
  
  #: expr.cc:2335
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "division by zero in #if"
  msgid "division by zero in #%s"
! msgstr "división entre cero en #if"
  
  #: files.cc:530
! #, fuzzy, gcc-internal-format
! #| msgid "NULL directory in find_file"
  msgid "NULL directory in %<find_file%>"
! msgstr "directorio NULL en find_file"
  
  #: files.cc:603
  msgid "one or more PCH files were found, but they were invalid"
! msgstr "se encontró uno o más ficheros PCH, pero eran inválidos"
  
  #: files.cc:607
! #, fuzzy, gcc-internal-format
! #| msgid "use -Winvalid-pch for more information"
  msgid "use %<-Winvalid-pch%> for more information"
! msgstr "use -Winvalid-pch para más información"
  
  #: files.cc:737 files.cc:1661
  #, gcc-internal-format, gfc-internal-format
--- 829,901 ----
  
  #: expr.cc:1633
  msgid "negative embed parameter operand"
! msgstr "operando de parámetro imbuído negativo"
  
  #: expr.cc:1639
  msgid "too large embed parameter operand"
! msgstr "operando de parámetro imbuído demasiado grande"
  
  #: expr.cc:1658
  #, gcc-internal-format, gfc-internal-format
  msgid "impossible operator '%u'"
! msgstr "operador «%u» imposible"
  
  #: expr.cc:1759
! #, gcc-internal-format
  msgid "missing %<)%> in expression"
! msgstr "falta %<)%> en la expresión"
  
  #: expr.cc:1788
! #, gcc-internal-format
  msgid "%<?%> without following %<:%>"
! msgstr "%<?%> sin %<:%> a continuación"
  
  #: expr.cc:1798
  msgid "integer overflow in preprocessor expression"
! msgstr "desbordamiento entero en una expresión del preprocesador"
  
  #: expr.cc:1803
! #, gcc-internal-format
  msgid "missing %<(%> in expression"
! msgstr "falta %<(%> en la expresión"
  
  #: expr.cc:1835
! #, gcc-internal-format
  msgid "the left operand of %qs changes sign when promoted"
! msgstr "el operando izquierdo de %qs cambia de signo cuando es promovido"
  
  #: expr.cc:1840
! #, gcc-internal-format
  msgid "the right operand of %qs changes sign when promoted"
! msgstr "el operando derecho de %qs cambia de signo cuando es promovido"
  
  #: expr.cc:2099
  msgid "traditional C rejects the unary plus operator"
! msgstr "C tradicional rechaza el operador unario más"
  
  #: expr.cc:2197
! #, gcc-internal-format, gfc-internal-format
  msgid "comma operator in operand of #%s"
! msgstr "operador coma en operando de #%s"
  
  #: expr.cc:2335
! #, gcc-internal-format, gfc-internal-format
  msgid "division by zero in #%s"
! msgstr "división entre cero en #%s"
  
  #: files.cc:530
! #, gcc-internal-format
  msgid "NULL directory in %<find_file%>"
! msgstr "directorio NULL en %<find_file%>"
  
  #: files.cc:603
  msgid "one or more PCH files were found, but they were invalid"
! msgstr "se encontraron uno o más ficheros PCH, pero eran inválidos"
  
  #: files.cc:607
! #, gcc-internal-format
  msgid "use %<-Winvalid-pch%> for more information"
! msgstr "use %<-Winvalid-pch%> para más información"
  
  #: files.cc:737 files.cc:1661
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "no hay ruta de inclusión en la
*** 1027,1038 ****
  #: files.cc:1455
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter can be only used with %<\".\"%>"
! msgstr ""
  
  #: files.cc:1472
  #, gcc-internal-format
  msgid "%<gnu::base64%> argument not valid base64 encoded string"
! msgstr ""
  
  #: files.cc:2228
  msgid "Multiple include guards may be useful for:\n"
--- 920,931 ----
  #: files.cc:1455
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter can be only used with %<\".\"%>"
! msgstr "el parámetro %<gnu::base64%> solamente se puede usar con %<\".\"%>"
  
  #: files.cc:1472
  #, gcc-internal-format
  msgid "%<gnu::base64%> argument not valid base64 encoded string"
! msgstr "el argumento de %<gnu::base64%> no es una cadena codificada en base64 válida"
  
  #: files.cc:2228
  msgid "Multiple include guards may be useful for:\n"
*************** msgstr "Guardias múltiples de include p
*** 1041,1058 ****
  #: files.cc:2306
  #, gcc-internal-format
  msgid "header guard %qs followed by %<#define%> of a different macro"
! msgstr ""
  
  #: files.cc:2310
  #, gcc-internal-format
  msgid "%qs is defined here; did you mean %qs?"
! msgstr ""
  
  #: init.cc:676
! #, fuzzy, gcc-internal-format
! #| msgid "cppchar_t must be an unsigned type"
  msgid "%<cppchar_t%> must be an unsigned type"
! msgstr "cppchar_t debe ser de un tipo unsigned"
  
  #: init.cc:680
  #, gcc-internal-format, gfc-internal-format
--- 934,950 ----
  #: files.cc:2306
  #, gcc-internal-format
  msgid "header guard %qs followed by %<#define%> of a different macro"
! msgstr "guarda de cabecera %qs seguida por %<#define%> de un macro diferente"
  
  #: files.cc:2310
  #, gcc-internal-format
  msgid "%qs is defined here; did you mean %qs?"
! msgstr "%qs se define aquí; ¿quiso decir %qs?"
  
  #: init.cc:676
! #, gcc-internal-format
  msgid "%<cppchar_t%> must be an unsigned type"
! msgstr "%<cppchar_t%> debe ser de un tipo unsigned"
  
  #: init.cc:680
  #, gcc-internal-format, gfc-internal-format
*************** msgid "preprocessor arithmetic has maxim
*** 1060,1087 ****
  msgstr "la aritmética del preprocesador tiene una precisión máxima de %lu bits; el objetivo requiere de %lu bits"
  
  #: init.cc:687
! #, fuzzy, gcc-internal-format
! #| msgid "CPP arithmetic must be at least as precise as a target int"
  msgid "CPP arithmetic must be at least as precise as a target %<int%>"
! msgstr "la aritmética de CPP debe se al menos tan precisa como un int del objetivo"
  
  #: init.cc:691
! #, fuzzy, gcc-internal-format
! #| msgid "target char is less than 8 bits wide"
  msgid "target %<char%> is less than 8 bits wide"
! msgstr "el char del objetivo tiene menos de 8 bits de ancho"
  
  #: init.cc:695
! #, fuzzy, gcc-internal-format
! #| msgid "target wchar_t is narrower than target char"
  msgid "target %<wchar_t%> is narrower than target %<char%>"
! msgstr "el wchar_t del objetivo es más estrecho que el char del objetivo"
  
  #: init.cc:699
! #, fuzzy, gcc-internal-format
! #| msgid "target int is narrower than target char"
  msgid "target %<int%> is narrower than target %<char%>"
! msgstr "el int del objetivo es más estrecho que el char del objetivo"
  
  #: init.cc:704
  msgid "CPP half-integer narrower than CPP character"
--- 952,975 ----
  msgstr "la aritmética del preprocesador tiene una precisión máxima de %lu bits; el objetivo requiere de %lu bits"
  
  #: init.cc:687
! #, gcc-internal-format
  msgid "CPP arithmetic must be at least as precise as a target %<int%>"
! msgstr "la aritmética de CPP debe ser al menos tan precisa como un %<int%> del objetivo"
  
  #: init.cc:691
! #, gcc-internal-format
  msgid "target %<char%> is less than 8 bits wide"
! msgstr "el %<char%> del objetivo tiene menos de 8 bits de ancho"
  
  #: init.cc:695
! #, gcc-internal-format
  msgid "target %<wchar_t%> is narrower than target %<char%>"
! msgstr "el %<wchar_t%> del objetivo es más estrecho que el %<char%> del objetivo"
  
  #: init.cc:699
! #, gcc-internal-format
  msgid "target %<int%> is narrower than target %<char%>"
! msgstr "el %<int%> del objetivo es más estrecho que el %<char%> del objetivo"
  
  #: init.cc:704
  msgid "CPP half-integer narrower than CPP character"
*************** msgstr "caracteres de barra invertida y
*** 1098,1140 ****
  
  #: lex.cc:1109 lex.cc:1145
  msgid "trailing whitespace"
! msgstr ""
  
  #: lex.cc:1116
  msgid "backslash-newline at end of file"
  msgstr "no hay caractér de barra invertida o fin de línea al final del fichero"
  
  #: lex.cc:1132
! #, fuzzy, gcc-internal-format
! #| msgid "trigraph ??%c converted to %c"
  msgid "trigraph %<??%c%> converted to %<%c%>"
! msgstr "se convierte el trigrafo ??%c a %c"
  
  #: lex.cc:1138
! #, fuzzy, gcc-internal-format
! #| msgid "trigraph ??%c ignored, use -trigraphs to enable"
  msgid "trigraph %<??%c%> ignored, use %<-trigraphs%> to enable"
! msgstr "se descarta el trigrafo ??%c, use -trigraphs para reconocerlo"
  
  #: lex.cc:1149
  msgid "too many consecutive spaces in leading whitespace"
! msgstr ""
  
  #: lex.cc:1154
  msgid "tab after space in leading whitespace"
! msgstr ""
  
  #: lex.cc:1161
  msgid "whitespace other than spaces in leading whitespace"
! msgstr ""
  
  #: lex.cc:1167
  msgid "whitespace other than tabs in leading whitespace"
! msgstr ""
  
  #: lex.cc:1173
  msgid "whitespace other than spaces and tabs in leading whitespace"
! msgstr ""
  
  #: lex.cc:1623
  msgid "end of bidirectional context"
--- 986,1026 ----
  
  #: lex.cc:1109 lex.cc:1145
  msgid "trailing whitespace"
! msgstr "espacio en blanco al final"
  
  #: lex.cc:1116
  msgid "backslash-newline at end of file"
  msgstr "no hay caractér de barra invertida o fin de línea al final del fichero"
  
  #: lex.cc:1132
! #, gcc-internal-format
  msgid "trigraph %<??%c%> converted to %<%c%>"
! msgstr "se convierte el trigrafo %<??%c%> a %<%c%>"
  
  #: lex.cc:1138
! #, gcc-internal-format
  msgid "trigraph %<??%c%> ignored, use %<-trigraphs%> to enable"
! msgstr "se descarta el trigrafo %<??%c%>, use %<-trigraphs%> para reconocerlo"
  
  #: lex.cc:1149
  msgid "too many consecutive spaces in leading whitespace"
! msgstr "demasiados espacios consecutivos en un espacio en blanco al inicio"
  
  #: lex.cc:1154
  msgid "tab after space in leading whitespace"
! msgstr "tabulador después de espacio en un espacio en blanco al inicio"
  
  #: lex.cc:1161
  msgid "whitespace other than spaces in leading whitespace"
! msgstr "espacio en blanco diferente a espacios en un espacio en blanco al inicio"
  
  #: lex.cc:1167
  msgid "whitespace other than tabs in leading whitespace"
! msgstr "espacio en blanco diferente a tabuladores en un espacio en blanco al inicio"
  
  #: lex.cc:1173
  msgid "whitespace other than spaces and tabs in leading whitespace"
! msgstr "espacio en blanco diferente a espacios y tabuladores en un espacio en blanco al inicio"
  
  #: lex.cc:1623
  msgid "end of bidirectional context"
*************** msgid "unpaired UTF-8 bidirectional cont
*** 1149,1200 ****
  msgstr "se detectó un carácter de control bidireccional UTF-8 sin emparejar"
  
  #: lex.cc:1706
! #, fuzzy, gcc-internal-format
! #| msgid "UTF-8 vs UCN mismatch when closing a context by \"%s\""
  msgid "UTF-8 vs UCN mismatch when closing a context by %qs"
! msgstr "no coincide UTF-8 vs UCN al cerrar un contexto por «%s»"
  
  #: lex.cc:1715
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" is closing an unopened context"
  msgid "%qs is closing an unopened context"
! msgstr "«%s» está cerrando un contexto sin abrir"
  
  #: lex.cc:1719
! #, fuzzy, gcc-internal-format
! #| msgid "found problematic Unicode character \"%s\""
  msgid "found problematic Unicode character %qs"
! msgstr "se encontró el carácter Unicode problemático «%s»"
  
  #: lex.cc:1749 lex.cc:1755
! #, fuzzy, gcc-internal-format
! #| msgid "invalid UTF-8 character <%x><%x>"
  msgid "invalid UTF-8 character %<<%x>%>"
! msgstr "carácter UTF-8 <%x><%x> inválido"
  
  #: lex.cc:1765 lex.cc:1771
! #, fuzzy, gcc-internal-format
! #| msgid "invalid UTF-8 character <%x><%x><%x>"
  msgid "invalid UTF-8 character %<<%x><%x>%>"
! msgstr "carácter UTF-8 <%x><%x><%x> inválido"
  
  #: lex.cc:1781 lex.cc:1787
! #, fuzzy, gcc-internal-format
! #| msgid "invalid UTF-8 character <%x><%x><%x><%x>"
  msgid "invalid UTF-8 character %<<%x><%x><%x>%>"
! msgstr "carácter UTF-8 <%x><%x><%x><%x> inválido"
  
  #: lex.cc:1797 lex.cc:1803
! #, fuzzy, gcc-internal-format
! #| msgid "invalid UTF-8 character <%x><%x><%x><%x>"
  msgid "invalid UTF-8 character %<<%x><%x><%x><%x>%>"
! msgstr "carácter UTF-8 <%x><%x><%x><%x> inválido"
  
  #: lex.cc:1885
! #, fuzzy, gcc-internal-format
! #| msgid "\"/*\" within comment"
  msgid "%</*%> within comment"
! msgstr "«/*» dentro de un comentario"
  
  #: lex.cc:1990
  #, gcc-internal-format, gfc-internal-format
--- 1035,1078 ----
  msgstr "se detectó un carácter de control bidireccional UTF-8 sin emparejar"
  
  #: lex.cc:1706
! #, gcc-internal-format
  msgid "UTF-8 vs UCN mismatch when closing a context by %qs"
! msgstr "no coincide UTF-8 vs UCN al cerrar un contexto por %qs"
  
  #: lex.cc:1715
! #, gcc-internal-format
  msgid "%qs is closing an unopened context"
! msgstr "%qs está cerrando un contexto sin abrir"
  
  #: lex.cc:1719
! #, gcc-internal-format
  msgid "found problematic Unicode character %qs"
! msgstr "se encontró el carácter Unicode problemático %qs"
  
  #: lex.cc:1749 lex.cc:1755
! #, gcc-internal-format
  msgid "invalid UTF-8 character %<<%x>%>"
! msgstr "carácter UTF-8 %<<%x>%> inválido"
  
  #: lex.cc:1765 lex.cc:1771
! #, gcc-internal-format
  msgid "invalid UTF-8 character %<<%x><%x>%>"
! msgstr "carácter UTF-8 %<<%x><%x>%> inválido"
  
  #: lex.cc:1781 lex.cc:1787
! #, gcc-internal-format
  msgid "invalid UTF-8 character %<<%x><%x><%x>%>"
! msgstr "carácter UTF-8 %<<%x><%x><%x>%> inválido"
  
  #: lex.cc:1797 lex.cc:1803
! #, gcc-internal-format
  msgid "invalid UTF-8 character %<<%x><%x><%x><%x>%>"
! msgstr "carácter UTF-8 %<<%x><%x><%x><%x>%> inválido"
  
  #: lex.cc:1885
! #, gcc-internal-format
  msgid "%</*%> within comment"
! msgstr "%</*%> dentro de un comentario"
  
  #: lex.cc:1990
  #, gcc-internal-format, gfc-internal-format
*************** msgid "null character(s) ignored"
*** 1206,1267 ****
  msgstr "se descarta(n) caracter(es) nulo(s)"
  
  #: lex.cc:2063
! #, fuzzy, gcc-internal-format
! #| msgid "`%.*s' is not in NFKC"
  msgid "%<%.*s%> is not in NFKC"
! msgstr "`%.*s' no está en NFKC"
  
  #: lex.cc:2066 lex.cc:2069
! #, fuzzy, gcc-internal-format
! #| msgid "`%.*s' is not in NFC"
  msgid "%<%.*s%> is not in NFC"
! msgstr "`%.*s' no está en NFC"
  
  #: lex.cc:2158
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ is not available until C++20"
  msgid "%<__VA_OPT__%> is not available until C++20"
! msgstr "__VA_OPT__ no está disponible hasta C++20"
  
  #: lex.cc:2161
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ is not available until C23"
  msgid "%<__VA_OPT__%> is not available until C23"
! msgstr "__VA_OPT__ no está disponible hasta C23"
  
  #: lex.cc:2169
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ can only appear in the expansion of a C++20 variadic macro"
  msgid "%<__VA_OPT__%> can only appear in the expansion of a C++20 variadic macro"
! msgstr "__VA_OPT__ solamente puede aparecer en la expansión de una macro variadic de C++20"
  
  #: lex.cc:2186
! #, fuzzy, gcc-internal-format
! #| msgid "attempt to use poisoned \"%s\""
  msgid "attempt to use poisoned %qs"
! msgstr "intento de utilizar «%s» envenenado"
  
  #: lex.cc:2191
  msgid "poisoned here"
  msgstr "envenenado aquí"
  
  #: lex.cc:2201
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_ARGS__ can only appear in the expansion of a C++11 variadic macro"
  msgid "%<__VA_ARGS__%> can only appear in the expansion of a C++11 variadic macro"
! msgstr "__VA_ARGS__ solamente puede aparecer en la expansión de una macro variadic C++11"
  
  #: lex.cc:2205
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
  msgid "%<__VA_ARGS__%> can only appear in the expansion of a C99 variadic macro"
! msgstr "__VA_ARGS__ solamente puede aparecer en la expansión de una macro variadic C99"
  
  #: lex.cc:2217
! #, fuzzy, gcc-internal-format
! #| msgid "identifier \"%s\" is a special operator name in C++"
  msgid "identifier %qs is a special operator name in C++"
! msgstr "el identificador «%s» es un nombre de operador especial en C++"
  
  #: lex.cc:2353
  msgid "adjacent digit separators"
--- 1084,1136 ----
  msgstr "se descarta(n) caracter(es) nulo(s)"
  
  #: lex.cc:2063
! #, gcc-internal-format
  msgid "%<%.*s%> is not in NFKC"
! msgstr "%<%.*s%> no está en NFKC"
  
  #: lex.cc:2066 lex.cc:2069
! #, gcc-internal-format
  msgid "%<%.*s%> is not in NFC"
! msgstr "%<%.*s%> no está en NFC"
  
  #: lex.cc:2158
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> is not available until C++20"
! msgstr "%<__VA_OPT__%> no está disponible hasta C++20"
  
  #: lex.cc:2161
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> is not available until C23"
! msgstr "%<__VA_OPT__%> no está disponible hasta C23"
  
  #: lex.cc:2169
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> can only appear in the expansion of a C++20 variadic macro"
! msgstr "%<__VA_OPT__%> solamente puede aparecer en la expansión de una macro variadic de C++20"
  
  #: lex.cc:2186
! #, gcc-internal-format
  msgid "attempt to use poisoned %qs"
! msgstr "se intenta usar %qs envenenado"
  
  #: lex.cc:2191
  msgid "poisoned here"
  msgstr "envenenado aquí"
  
  #: lex.cc:2201
! #, gcc-internal-format
  msgid "%<__VA_ARGS__%> can only appear in the expansion of a C++11 variadic macro"
! msgstr "%<__VA_ARGS__%> solamente puede aparecer en la expansión de una macro variadic C++11"
  
  #: lex.cc:2205
! #, gcc-internal-format
  msgid "%<__VA_ARGS__%> can only appear in the expansion of a C99 variadic macro"
! msgstr "%<__VA_ARGS__%> solamente puede aparecer en la expansión de una macro variadic C99"
  
  #: lex.cc:2217
! #, gcc-internal-format
  msgid "identifier %qs is a special operator name in C++"
! msgstr "el identificador %qs es un nombre de operador especial en C++"
  
  #: lex.cc:2353
  msgid "adjacent digit separators"
*************** msgstr "carácter inválido nueva línea
*** 1282,1288 ****
  #: lex.cc:2731 lex.cc:5671
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid character '%c' in raw string delimiter"
! msgstr "carácter inválido '%c' en un delimitador de cadena cruda"
  
  #: lex.cc:2770 lex.cc:2793
  msgid "unterminated raw string"
--- 1151,1157 ----
  #: lex.cc:2731 lex.cc:5671
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid character '%c' in raw string delimiter"
! msgstr "carácter inválido «%c» en un delimitador de cadena cruda"
  
  #: lex.cc:2770 lex.cc:2793
  msgid "unterminated raw string"
*************** msgstr "falta el carácter de terminaci�
*** 1299,1338 ****
  
  #: lex.cc:2986
  msgid "C++11 requires a space between string literal and macro"
! msgstr "C++11 requiere un espacio entre cadena literal y macro"
  
  #: lex.cc:3579
  msgid "module control-line cannot be in included file"
  msgstr "la línea de control del módulo no puede estar en un fichero incluido"
  
  #: lex.cc:3593
! #, fuzzy, gcc-internal-format
! #| msgid "module control-line \"%s\" cannot be an object-like macro"
  msgid "module control-line %qs cannot be an object-like macro"
! msgstr "la línea de control del módulo «%s» no puede ser una macro de tipo objeto"
  
  #: lex.cc:3631
! #, fuzzy, gcc-internal-format
! #| msgid "module control-line \"%s\" cannot be an object-like macro"
  msgid "module name %qs cannot be an object-like macro"
! msgstr "la línea de control del módulo «%s» no puede ser una macro de tipo objeto"
  
  #: lex.cc:3637
! #, fuzzy, gcc-internal-format
! #| msgid "module control-line \"%s\" cannot be an object-like macro"
  msgid "module partition %qs cannot be an object-like macro"
! msgstr "la línea de control del módulo «%s» no puede ser una macro de tipo objeto"
  
  #: lex.cc:3658
! #, fuzzy, gcc-internal-format
! #| msgid "'\\o' not followed by '{'"
  msgid "module name followed by %<(%>"
! msgstr "'\\o' no tiene una '{' a continuación"
  
  #: lex.cc:3662
  #, gcc-internal-format
  msgid "module partition followed by %<(%>"
! msgstr ""
  
  #: lex.cc:4071 lex.cc:5504 traditional.cc:174
  msgid "unterminated comment"
--- 1168,1203 ----
  
  #: lex.cc:2986
  msgid "C++11 requires a space between string literal and macro"
! msgstr "C++11 requiere un espacio entre una cadena literal y un macro"
  
  #: lex.cc:3579
  msgid "module control-line cannot be in included file"
  msgstr "la línea de control del módulo no puede estar en un fichero incluido"
  
  #: lex.cc:3593
! #, gcc-internal-format
  msgid "module control-line %qs cannot be an object-like macro"
! msgstr "la línea de control del módulo %qs no puede ser un macro de tipo objeto"
  
  #: lex.cc:3631
! #, gcc-internal-format
  msgid "module name %qs cannot be an object-like macro"
! msgstr "el nombre de módulo %qs no puede ser una macro de tipo objeto"
  
  #: lex.cc:3637
! #, gcc-internal-format
  msgid "module partition %qs cannot be an object-like macro"
! msgstr "la partición de módulo %qs no puede ser un macro de tipo objeto"
  
  #: lex.cc:3658
! #, gcc-internal-format
  msgid "module name followed by %<(%>"
! msgstr "nombre de módulo seguido por %<(%>"
  
  #: lex.cc:3662
  #, gcc-internal-format
  msgid "module partition followed by %<(%>"
! msgstr "partición de módulo seguido por %<(%>"
  
  #: lex.cc:4071 lex.cc:5504 traditional.cc:174
  msgid "unterminated comment"
*************** msgid "'##' cannot appear at either end
*** 1373,1442 ****
  msgstr "'##' no puede aparecer o en el final de una __VA_OPT__"
  
  #: macro.cc:144
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ may not appear in a __VA_OPT__"
  msgid "%<__VA_OPT__%> may not appear in a %<__VA_OPT__%>"
! msgstr "__VA_OPT__ no puede aparecer en un __VA_OPT__"
  
  #: macro.cc:157
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ must be followed by an open parenthesis"
  msgid "%<__VA_OPT__%> must be followed by an open parenthesis"
! msgstr "__VA_OPT__ debe estar seguido por un paréntesis abierto"
  
  #: macro.cc:235
! #, fuzzy, gcc-internal-format
! #| msgid "unterminated __VA_OPT__"
  msgid "unterminated %<__VA_OPT__%>"
! msgstr "__VA_OPT__ sin terminar"
  
  #: macro.cc:396
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" used outside of preprocessing directive"
  msgid "%qs used outside of preprocessing directive"
! msgstr "se ha utilizado «%s» fuera de una directiva de preprocesamiento"
  
  #: macro.cc:407
! #, fuzzy, gcc-internal-format
! #| msgid "missing '(' before \"%s\" operand"
  msgid "missing %<(%> before %qs operand"
! msgstr "falta '(' antes del operando «%s»"
  
  #: macro.cc:425
! #, fuzzy, gcc-internal-format
! #| msgid "operator \"%s\" requires a header-name"
  msgid "operator %qs requires a header-name"
! msgstr "el operador «%s» requiere un nombre cabecera"
  
  #: macro.cc:454
! #, fuzzy, gcc-internal-format
! #| msgid "missing ')' after \"%s\" operand"
  msgid "missing %<)%> after %qs operand"
! msgstr "falta ')' después del operando «%s»"
  
  #: macro.cc:499
! #, fuzzy, gcc-internal-format
! #| msgid "empty filename in #%s"
  msgid "empty filename in %qs"
! msgstr "nombre de fichero vacío en #%s"
  
  #: macro.cc:533
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" is not used"
  msgid "macro %qs is not used"
! msgstr "el macro «%s» no se utiliza"
  
  #: macro.cc:572 macro.cc:888
! #, fuzzy, gcc-internal-format
! #| msgid "invalid built-in macro \"%s\""
  msgid "invalid built-in macro %qs"
! msgstr "macro interna «%s» inválida"
  
  #: macro.cc:579 macro.cc:687
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" might prevent reproducible builds"
  msgid "macro %qs might prevent reproducible builds"
! msgstr "macro «%s» quizá previene compilaciones reproducibles"
  
  #: macro.cc:610
  msgid "could not determine file timestamp"
--- 1238,1296 ----
  msgstr "'##' no puede aparecer o en el final de una __VA_OPT__"
  
  #: macro.cc:144
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> may not appear in a %<__VA_OPT__%>"
! msgstr "%<__VA_OPT__%> no puede aparecer en un %<__VA_OPT__%>"
  
  #: macro.cc:157
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> must be followed by an open parenthesis"
! msgstr "%<__VA_OPT__%> debe estar seguido por un paréntesis abierto"
  
  #: macro.cc:235
! #, gcc-internal-format
  msgid "unterminated %<__VA_OPT__%>"
! msgstr "%<__VA_OPT__%> sin terminar"
  
  #: macro.cc:396
! #, gcc-internal-format
  msgid "%qs used outside of preprocessing directive"
! msgstr "se ha utilizado %qs fuera de una directiva de preprocesamiento"
  
  #: macro.cc:407
! #, gcc-internal-format
  msgid "missing %<(%> before %qs operand"
! msgstr "falta %<(%> antes del operando %qs"
  
  #: macro.cc:425
! #, gcc-internal-format
  msgid "operator %qs requires a header-name"
! msgstr "el operador %qs requiere un nombre-de-cabecera"
  
  #: macro.cc:454
! #, gcc-internal-format
  msgid "missing %<)%> after %qs operand"
! msgstr "falta %<)%> después del operando %qs"
  
  #: macro.cc:499
! #, gcc-internal-format
  msgid "empty filename in %qs"
! msgstr "nombre de fichero vacío en %qs"
  
  #: macro.cc:533
! #, gcc-internal-format
  msgid "macro %qs is not used"
! msgstr "el macro %qs no se utiliza"
  
  #: macro.cc:572 macro.cc:888
! #, gcc-internal-format
  msgid "invalid built-in macro %qs"
! msgstr "macro interna %qs inválida"
  
  #: macro.cc:579 macro.cc:687
! #, gcc-internal-format
  msgid "macro %qs might prevent reproducible builds"
! msgstr "el macro %qs quizá previene compilaciones reproducibles"
  
  #: macro.cc:610
  msgid "could not determine file timestamp"
*************** msgid "could not determine date and time
*** 1447,1468 ****
  msgstr "no se puede determinar la fecha y la hora"
  
  #: macro.cc:733
! #, fuzzy, gcc-internal-format
! #| msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
  msgid "%<__COUNTER__%> expanded inside directive with %<-fdirectives-only%>"
! msgstr "se expande __COUNTER__ dentro de una directiva con -fdirectives-only"
  
  #: macro.cc:760
! #, fuzzy, gcc-internal-format
! #| msgid "suggest not using #elif in traditional C"
  msgid "%<__has_embed%> not supported in traditional C"
! msgstr "se sugiere no usar #elif en C tradicional"
  
  #: macro.cc:1007
! #, fuzzy, gcc-internal-format
! #| msgid "invalid string literal, ignoring final '\\'"
  msgid "invalid string literal, ignoring final %<\\%>"
! msgstr "cadena literal inválida, se descarta el '\\' final"
  
  #: macro.cc:1071
  #, gcc-internal-format
--- 1301,1319 ----
  msgstr "no se puede determinar la fecha y la hora"
  
  #: macro.cc:733
! #, gcc-internal-format
  msgid "%<__COUNTER__%> expanded inside directive with %<-fdirectives-only%>"
! msgstr "se expande %<__COUNTER__%> dentro de una directiva con %<-fdirectives-only%>"
  
  #: macro.cc:760
! #, gcc-internal-format
  msgid "%<__has_embed%> not supported in traditional C"
! msgstr "no se admite %<__has_embed%> en C tradicional"
  
  #: macro.cc:1007
! #, gcc-internal-format
  msgid "invalid string literal, ignoring final %<\\%>"
! msgstr "cadena literal inválida, se descarta el %<\\%> final"
  
  #: macro.cc:1071
  #, gcc-internal-format
*************** msgid "pasting \"%.*s\" and \"%.*s\" doe
*** 1470,1515 ****
  msgstr "pegar «%.*s» y «%.*s» no da un elemento válido de preprocesamiento"
  
  #: macro.cc:1203
! #, fuzzy, gcc-internal-format
! #| msgid "ISO C++11 requires at least one argument for the \"...\" in a variadic macro"
  msgid "ISO C++11 requires at least one argument for the %<...%> in a variadic macro"
! msgstr "ISO C++ requiere al menos un argumento: para la «...» en una macro variadic"
  
  #: macro.cc:1207
! #, fuzzy, gcc-internal-format
! #| msgid "ISO C99 requires at least one argument for the \"...\" in a variadic macro"
  msgid "ISO C99 requires at least one argument for the %<...%> in a variadic macro"
! msgstr "ISO C99 requiere al menos un argumento para la «...» en una macro variadic"
  
  #: macro.cc:1214
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" requires %u arguments, but only %u given"
  msgid "macro %qs requires %u arguments, but only %u given"
! msgstr "el macro «%s» requiere %u argumentos, pero solo se proporcionan %u"
  
  #: macro.cc:1219
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" passed %u arguments, but takes just %u"
  msgid "macro %qs passed %u arguments, but takes just %u"
! msgstr "el macro «%s» pasó %u argumentos, pero solamente toma %u"
  
  #: macro.cc:1223
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" defined here"
  msgid "macro %qs defined here"
! msgstr "el macro «%s» se definió aquí"
  
  #: macro.cc:1417 traditional.cc:822
! #, fuzzy, gcc-internal-format
! #| msgid "unterminated argument list invoking macro \"%s\""
  msgid "unterminated argument list invoking macro %qs"
! msgstr "lista de argumentos sin terminar al invocar el macro «%s»"
  
  #: macro.cc:1563
! #, fuzzy, gcc-internal-format
! #| msgid "function-like macro \"%s\" must be used with arguments in traditional C"
  msgid "function-like macro %qs must be used with arguments in traditional C"
! msgstr "la función de macro «%s» se debe usar con argumentos en C tradicional"
  
  #: macro.cc:2398
  #, gcc-internal-format, gfc-internal-format
--- 1321,1359 ----
  msgstr "pegar «%.*s» y «%.*s» no da un elemento válido de preprocesamiento"
  
  #: macro.cc:1203
! #, gcc-internal-format
  msgid "ISO C++11 requires at least one argument for the %<...%> in a variadic macro"
! msgstr "ISO C++ requiere al menos un argumento para la %<...%> en una macro variadic"
  
  #: macro.cc:1207
! #, gcc-internal-format
  msgid "ISO C99 requires at least one argument for the %<...%> in a variadic macro"
! msgstr "ISO C99 requiere al menos un argumento para la %<...%> en una macro variadic"
  
  #: macro.cc:1214
! #, gcc-internal-format
  msgid "macro %qs requires %u arguments, but only %u given"
! msgstr "el macro %qs requiere %u argumentos, pero solo se proporcionan %u"
  
  #: macro.cc:1219
! #, gcc-internal-format
  msgid "macro %qs passed %u arguments, but takes just %u"
! msgstr "el macro %qs pasó %u argumentos, pero solamente toma %u"
  
  #: macro.cc:1223
! #, gcc-internal-format
  msgid "macro %qs defined here"
! msgstr "el macro %qs se definió aquí"
  
  #: macro.cc:1417 traditional.cc:822
! #, gcc-internal-format
  msgid "unterminated argument list invoking macro %qs"
! msgstr "lista de argumentos sin terminar al invocar el macro %qs"
  
  #: macro.cc:1563
! #, gcc-internal-format
  msgid "function-like macro %qs must be used with arguments in traditional C"
! msgstr "la función de tipo macro %qs se debe usar con argumentos en C tradicional"
  
  #: macro.cc:2398
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "al invocar el macro %s argumento
*** 1524,1568 ****
  #: macro.cc:3238
  #, gcc-internal-format
  msgid "%qc in module name or partition comes from or after macro expansion"
! msgstr ""
  
  #: macro.cc:3481
! #, fuzzy, gcc-internal-format
! #| msgid "duplicate macro parameter \"%s\""
  msgid "duplicate macro parameter %qs"
! msgstr "parámetro de macro «%s» duplicado"
  
  #: macro.cc:3563
! #, fuzzy, gcc-internal-format
! #| msgid "expected parameter name, found \"%s\""
  msgid "expected parameter name, found %qs"
! msgstr "se esperaba un nombre de parámetro; se ha encontrado «%s»"
  
  #: macro.cc:3564
! #, fuzzy, gcc-internal-format
! #| msgid "expected ',' or ')', found \"%s\""
  msgid "expected %<,%> or %<)%>, found %qs"
! msgstr "se esperaba ',' o ')'; se ha encontrado «%s»"
  
  #: macro.cc:3565
  msgid "expected parameter name before end of line"
  msgstr "se esperaba un nombre de parámetro antes del fin de línea"
  
  #: macro.cc:3566
! #, fuzzy, gcc-internal-format
! #| msgid "expected ')' before end of line"
  msgid "expected %<)%> before end of line"
! msgstr "se esperaba ')' antes del fin de línea"
  
  #: macro.cc:3567
! #, fuzzy, gcc-internal-format
! #| msgid "expected ')' after \"...\""
  msgid "expected %<)%> after %<...%>"
! msgstr "se esperaba ')' después de «...»"
  
  #: macro.cc:3624
  msgid "anonymous variadic macros were introduced in C++11"
! msgstr "las macros variadic anónimas se introdujeron en C++11"
  
  #: macro.cc:3625 macro.cc:3629
  msgid "anonymous variadic macros were introduced in C99"
--- 1368,1407 ----
  #: macro.cc:3238
  #, gcc-internal-format
  msgid "%qc in module name or partition comes from or after macro expansion"
! msgstr "%qc en el nombre o partición del módulo viene de o después de una expansión de macro"
  
  #: macro.cc:3481
! #, gcc-internal-format
  msgid "duplicate macro parameter %qs"
! msgstr "parámetro de macro %qs duplicado"
  
  #: macro.cc:3563
! #, gcc-internal-format
  msgid "expected parameter name, found %qs"
! msgstr "se esperaba un nombre de parámetro, se encontró %qs"
  
  #: macro.cc:3564
! #, gcc-internal-format
  msgid "expected %<,%> or %<)%>, found %qs"
! msgstr "se esperaba %<,%> o %<)%>, se encontró %qs"
  
  #: macro.cc:3565
  msgid "expected parameter name before end of line"
  msgstr "se esperaba un nombre de parámetro antes del fin de línea"
  
  #: macro.cc:3566
! #, gcc-internal-format
  msgid "expected %<)%> before end of line"
! msgstr "se esperaba %<)%> antes del fin de línea"
  
  #: macro.cc:3567
! #, gcc-internal-format
  msgid "expected %<)%> after %<...%>"
! msgstr "se esperaba %<)%> después de %<...%>"
  
  #: macro.cc:3624
  msgid "anonymous variadic macros were introduced in C++11"
! msgstr "los macros variadic anónimos se introdujeron en C++11"
  
  #: macro.cc:3625 macro.cc:3629
  msgid "anonymous variadic macros were introduced in C99"
*************** msgid "ISO C does not permit named varia
*** 1577,1586 ****
  msgstr "ISO C no permite macros variadic nombrados"
  
  #: macro.cc:3682
! #, fuzzy, gcc-internal-format
! #| msgid "'##' cannot appear at either end of a macro expansion"
  msgid "%<##%> cannot appear at either end of a macro expansion"
! msgstr "'##' no puede aparece en o al final de una expansión de macro"
  
  #: macro.cc:3720
  msgid "ISO C++11 requires whitespace after the macro name"
--- 1416,1424 ----
  msgstr "ISO C no permite macros variadic nombrados"
  
  #: macro.cc:3682
! #, gcc-internal-format
  msgid "%<##%> cannot appear at either end of a macro expansion"
! msgstr "%<##%> no puede aparece en o al final de una expansión de macro"
  
  #: macro.cc:3720
  msgid "ISO C++11 requires whitespace after the macro name"
*************** msgid "missing whitespace after the macr
*** 1595,1664 ****
  msgstr "faltan espacios en blanco después del nombre de macro"
  
  #: macro.cc:3798
! #, fuzzy, gcc-internal-format
! #| msgid "'#' is not followed by a macro parameter"
  msgid "%<#%> is not followed by a macro parameter"
! msgstr "'#' no es seguido por un parámetro de macro"
  
  #: macro.cc:3961
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" redefined"
  msgid "%qs redefined"
! msgstr "«%s» redefinido"
  
  #: macro.cc:3965
  msgid "this is the location of the previous definition"
  msgstr "esta es la ubicación de la definición previa"
  
  #: macro.cc:4103
! #, fuzzy, gcc-internal-format
! #| msgid "macro argument \"%s\" would be stringified in traditional C"
  msgid "macro argument %qs would be stringified in traditional C"
! msgstr "el argumento de macro «%s» debería ser convertido a cadena en C tradicional"
  
  #: pch.cc:90 pch.cc:342 pch.cc:356 pch.cc:374 pch.cc:380 pch.cc:389 pch.cc:396
  msgid "while writing precompiled header"
! msgstr "al escribir el encabezado precompilado"
  
  #: pch.cc:616
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `%.*s' is poisoned"
  msgid "%s: not used because %<%.*s%> is poisoned"
! msgstr "%s: no se usa porque `%.*s' está envenenado"
  
  #: pch.cc:638
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `%.*s' not defined"
  msgid "%s: not used because %<%.*s%> not defined"
! msgstr "%s: no se usa porque `%.*s' no está definido"
  
  #: pch.cc:650
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `%.*s' defined as `%s' not `%.*s'"
  msgid "%s: not used because %<%.*s%> defined as %qs not %<%.*s%>"
! msgstr "%s: no se usa porque `%.*s' está definido como `%s' no como `%.*s'"
  
  #: pch.cc:693
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `%s' is defined"
  msgid "%s: not used because %qs is defined"
! msgstr "%s: no se usa porque `%s' está definido"
  
  #: pch.cc:713
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `__COUNTER__' is invalid"
  msgid "%s: not used because %<__COUNTER__%> is invalid"
! msgstr "%s: no se usa porque `__COUNTER__' es inválido"
  
  #: pch.cc:722 pch.cc:885
  msgid "while reading precompiled header"
! msgstr "al leer el encabezado precompilado"
  
  #: traditional.cc:891
! #, fuzzy, gcc-internal-format
! #| msgid "detected recursion whilst expanding macro \"%s\""
  msgid "detected recursion whilst expanding macro %qs"
! msgstr "se detectó recursión al expandir el macro «%s»"
  
  #: traditional.cc:1114
  msgid "syntax error in macro parameter list"
--- 1433,1493 ----
  msgstr "faltan espacios en blanco después del nombre de macro"
  
  #: macro.cc:3798
! #, gcc-internal-format
  msgid "%<#%> is not followed by a macro parameter"
! msgstr "%<#%> no es seguido por un parámetro de macro"
  
  #: macro.cc:3961
! #, gcc-internal-format
  msgid "%qs redefined"
! msgstr "se redefine %qs"
  
  #: macro.cc:3965
  msgid "this is the location of the previous definition"
  msgstr "esta es la ubicación de la definición previa"
  
  #: macro.cc:4103
! #, gcc-internal-format
  msgid "macro argument %qs would be stringified in traditional C"
! msgstr "el argumento de macro %qs debería ser convertido a cadena en C tradicional"
  
  #: pch.cc:90 pch.cc:342 pch.cc:356 pch.cc:374 pch.cc:380 pch.cc:389 pch.cc:396
  msgid "while writing precompiled header"
! msgstr "al escribir la cabecera precompilada"
  
  #: pch.cc:616
! #, gcc-internal-format
  msgid "%s: not used because %<%.*s%> is poisoned"
! msgstr "%s: no se usa porque %<%.*s%> está envenenado"
  
  #: pch.cc:638
! #, gcc-internal-format
  msgid "%s: not used because %<%.*s%> not defined"
! msgstr "%s: no se usa porque %<%.*s%> no está definido"
  
  #: pch.cc:650
! #, gcc-internal-format
  msgid "%s: not used because %<%.*s%> defined as %qs not %<%.*s%>"
! msgstr "%s: no se usa porque %<%.*s%> está definido como %qs y no como %<%.*s%>"
  
  #: pch.cc:693
! #, gcc-internal-format
  msgid "%s: not used because %qs is defined"
! msgstr "%s: no se usa porque %qs está definido"
  
  #: pch.cc:713
! #, gcc-internal-format
  msgid "%s: not used because %<__COUNTER__%> is invalid"
! msgstr "%s: no se usa porque %<__COUNTER__%> es inválido"
  
  #: pch.cc:722 pch.cc:885
  msgid "while reading precompiled header"
! msgstr "al leer la cabecera precompilada"
  
  #: traditional.cc:891
! #, gcc-internal-format
  msgid "detected recursion whilst expanding macro %qs"
! msgstr "se detectó recursión al expandir el macro %qs"
  
  #: traditional.cc:1114
  msgid "syntax error in macro parameter list"
*************** msgstr "error de sintaxis en la lista de
*** 1694,1700 ****
  #~ msgstr "#include anidado con demasiada profundidad"
  
  #~ msgid "missing ')' after \"__has_include__\""
! #~ msgstr "falta ')' tras \"__has_include__\""
  
  #~ msgid "\"%s\" may not appear in macro parameter list"
  #~ msgstr "«%s» podría faltar en la lista de parámetro de macro"
--- 1523,1529 ----
  #~ msgstr "#include anidado con demasiada profundidad"
  
  #~ msgid "missing ')' after \"__has_include__\""
! #~ msgstr "falta ')' después de \"__has_include__\""
  
  #~ msgid "\"%s\" may not appear in macro parameter list"
  #~ msgstr "«%s» podría faltar en la lista de parámetro de macro"
diff -Nrcpad gcc-16-20250511/libcpp/po/zh_CN.po gcc-16-20250518/libcpp/po/zh_CN.po
*** gcc-16-20250511/libcpp/po/zh_CN.po	Sun May 11 22:32:39 2025
--- gcc-16-20250518/libcpp/po/zh_CN.po	Sun May 18 22:32:56 2025
***************
*** 2,23 ****
  # Copyright (C) 2005 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
  # Meng Jie <zuxy.meng@gmail.com>, 2005-2010.
  # Zhanhaoxiang Zhang <zzhx2006@outlook.com>, 2024, 2025.
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: cpplib 15-b20250216\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-03-14 22:05+0000\n"
! "PO-Revision-Date: 2025-02-20 18:32+0800\n"
! "Last-Translator: Zhanhaoxiang Zhang <zzhx2006@outlook.com>\n"
  "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
  "Language: zh_CN\n"
  "MIME-Version: 1.0\n"
  "Content-Type: text/plain; charset=utf-8\n"
  "Content-Transfer-Encoding: 8bit\n"
  "X-Bugs: Report translation errors to the Language-Team address.\n"
! "X-Generator: Poedit 3.5\n"
  
  #: charset.cc:759
  #, gcc-internal-format, gfc-internal-format
--- 2,25 ----
  # Copyright (C) 2005 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
  # Meng Jie <zuxy.meng@gmail.com>, 2005-2010.
+ # Boyuan Yang <073plan@gmail.com>, 2025.
+ # Anbang LI <anbangli@foxmail.com>, 2025.
  # Zhanhaoxiang Zhang <zzhx2006@outlook.com>, 2024, 2025.
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: cpplib 15.1-b20250316\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-03-14 22:05+0000\n"
! "PO-Revision-Date: 2025-05-15 12:47-0400\n"
! "Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
  "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
  "Language: zh_CN\n"
  "MIME-Version: 1.0\n"
  "Content-Type: text/plain; charset=utf-8\n"
  "Content-Transfer-Encoding: 8bit\n"
  "X-Bugs: Report translation errors to the Language-Team address.\n"
! "X-Generator: Poedit 3.6\n"
  
  #: charset.cc:759
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "字符 0x%lx 在执行字符集�
*** 49,60 ****
  
  #: charset.cc:1549
  msgid "universal character names are only valid in C++ and C99"
! msgstr "Unicode 字符名只在 C++ 和 C99 中有效"
  
  #: charset.cc:1553
  #, gcc-internal-format
  msgid "C99%'s universal character names are incompatible with C90"
! msgstr "C99 的 Unicode 字符名与 C90 不兼容"
  
  #: charset.cc:1556
  #, gcc-internal-format
--- 51,62 ----
  
  #: charset.cc:1549
  msgid "universal character names are only valid in C++ and C99"
! msgstr "通用字符名只在 C++ 和 C99 中有效"
  
  #: charset.cc:1553
  #, gcc-internal-format
  msgid "C99%'s universal character names are incompatible with C90"
! msgstr "C99 的通用字符名与 C90 不兼容"
  
  #: charset.cc:1556
  #, gcc-internal-format
*************** msgstr "%<\\%c%> 的意义与在传统 C
*** 64,92 ****
  #: charset.cc:1595
  #, gcc-internal-format
  msgid "%<\\N%> not followed by %<{%>"
! msgstr "%<\\N%> 后没有 %<{%>"
  
  #: charset.cc:1625
  msgid "empty named universal character escape sequence; treating it as separate tokens"
! msgstr "空的命名 Unicode 字符转义序列；将其视为独立 token 处理"
  
  #: charset.cc:1632
  msgid "empty named universal character escape sequence"
! msgstr "空的命名 Unicode 字符转义序列"
  
  #: charset.cc:1639
  msgid "named universal character escapes are only valid in C++23"
! msgstr "命名 Unicode 字符转义序列(named universal character escapes)仅在 C++23 中有效"
  
  #: charset.cc:1659
  #, gcc-internal-format
  msgid "%<\\N{%.*s}%> is not a valid universal character; treating it as separate tokens"
! msgstr "%<\\N{%.*s}%> 不是一个有效的 Unicode 字符；将其视为独立 token 处理"
  
  #: charset.cc:1665
  #, gcc-internal-format
  msgid "%<\\N{%.*s}%> is not a valid universal character"
! msgstr "%<\\N{%.*s}%> 不是一个有效的 Unicode 字符"
  
  #: charset.cc:1675
  #, gcc-internal-format
--- 66,94 ----
  #: charset.cc:1595
  #, gcc-internal-format
  msgid "%<\\N%> not followed by %<{%>"
! msgstr "%<\\N%> 后面没有 %<{%>"
  
  #: charset.cc:1625
  msgid "empty named universal character escape sequence; treating it as separate tokens"
! msgstr "空命名通用字符转义序列; 将其视为单独的词元"
  
  #: charset.cc:1632
  msgid "empty named universal character escape sequence"
! msgstr "空的命名通用字符转义序列"
  
  #: charset.cc:1639
  msgid "named universal character escapes are only valid in C++23"
! msgstr "命名通用字符转义仅在 C++23 中有效"
  
  #: charset.cc:1659
  #, gcc-internal-format
  msgid "%<\\N{%.*s}%> is not a valid universal character; treating it as separate tokens"
! msgstr "%<\\N{%.*s}%> 不是有效的通用字符; 将其视为独立的词元"
  
  #: charset.cc:1665
  #, gcc-internal-format
  msgid "%<\\N{%.*s}%> is not a valid universal character"
! msgstr "%<\\N{%.*s}%> 不是一个有效的通用字符"
  
  #: charset.cc:1675
  #, gcc-internal-format
*************** msgstr "你是说 %<\\N{%s}%> 吗？"
*** 96,102 ****
  #: charset.cc:1693
  #, gcc-internal-format
  msgid "%<\\N{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "在 %.*s 之后 %<\\N{%> 未以 %<}%> 结束；将其视为独立 token 处理"
  
  #: charset.cc:1702
  #, gcc-internal-format
--- 98,104 ----
  #: charset.cc:1693
  #, gcc-internal-format
  msgid "%<\\N{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "在 %.*s 之后 %<\\N{%> 未以 %<}%> 结束；将其视为独立词元"
  
  #: charset.cc:1702
  #, gcc-internal-format
*************** msgstr "在 %<_cpp_valid_ucn%> 中但不
*** 110,116 ****
  
  #: charset.cc:1753
  msgid "empty delimited escape sequence; treating it as separate tokens"
! msgstr "空的带分隔符的转义序列；将其视为独立 token 处理"
  
  #: charset.cc:1760 charset.cc:2163 charset.cc:2280
  msgid "empty delimited escape sequence"
--- 112,118 ----
  
  #: charset.cc:1753
  msgid "empty delimited escape sequence; treating it as separate tokens"
! msgstr "空的带分隔符的转义序列；将其视为独立词元"
  
  #: charset.cc:1760 charset.cc:2163 charset.cc:2280
  msgid "empty delimited escape sequence"
*************** msgstr "带分隔符的转义序列仅�
*** 128,139 ****
  #: charset.cc:1794
  #, gcc-internal-format
  msgid "%<\\u{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "在 %.*s 之后 %<\\u{%> 未以 %<}%> 结束；将其视为独立 token 处理"
  
  #: charset.cc:1806
  #, gcc-internal-format
  msgid "incomplete universal character name %.*s"
! msgstr "不完全的 Unicode 字符名 %.*s"
  
  #: charset.cc:1810
  #, gcc-internal-format
--- 130,141 ----
  #: charset.cc:1794
  #, gcc-internal-format
  msgid "%<\\u{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "在 %.*s 之后 %<\\u{%> 未以 %<}%> 结束；将其视为独立词元"
  
  #: charset.cc:1806
  #, gcc-internal-format
  msgid "incomplete universal character name %.*s"
! msgstr "不完整的通用字符名 %.*s"
  
  #: charset.cc:1810
  #, gcc-internal-format
*************** msgstr "在 %.*s 之后 %<\\u{%> 未以
*** 143,154 ****
  #: charset.cc:1818
  #, gcc-internal-format
  msgid "%.*s is not a valid universal character"
! msgstr "%.*s 不是一个有效的 Unicode 字符"
  
  #: charset.cc:1834 charset.cc:1838
  #, gcc-internal-format
  msgid "%.*s is not a valid universal character name before C23"
! msgstr "在C23之前，%.*s 不是一个有效的 Unicode 字符名"
  
  #: charset.cc:1854 lex.cc:2096
  #, gcc-internal-format
--- 145,156 ----
  #: charset.cc:1818
  #, gcc-internal-format
  msgid "%.*s is not a valid universal character"
! msgstr "%.*s 不是一个有效的通用字符"
  
  #: charset.cc:1834 charset.cc:1838
  #, gcc-internal-format
  msgid "%.*s is not a valid universal character name before C23"
! msgstr "在C23之前，%.*s 不是一个有效的通用字符名"
  
  #: charset.cc:1854 lex.cc:2096
  #, gcc-internal-format
*************** msgstr "%<$%> 出现在标识符或数�
*** 158,174 ****
  #: charset.cc:1864
  #, gcc-internal-format
  msgid "universal character %.*s is not valid in an identifier"
! msgstr "Unicode 字符 %.*s 在标识符中无效"
  
  #: charset.cc:1868
  #, gcc-internal-format
  msgid "universal character %.*s is not valid at the start of an identifier"
! msgstr "Unicode 字符 %.*s 在标识符开头无效"
  
  #: charset.cc:1875
  #, gcc-internal-format
  msgid "%.*s is outside the UCS codespace"
! msgstr "%.*s 超出了 UCS 码空间"
  
  #: charset.cc:1919 charset.cc:3072
  msgid "converting UCN to source character set"
--- 160,176 ----
  #: charset.cc:1864
  #, gcc-internal-format
  msgid "universal character %.*s is not valid in an identifier"
! msgstr "通用字符 %.*s 在标识符中无效"
  
  #: charset.cc:1868
  #, gcc-internal-format
  msgid "universal character %.*s is not valid at the start of an identifier"
! msgstr "通用字符 %.*s 在标识符开头无效"
  
  #: charset.cc:1875
  #, gcc-internal-format
  msgid "%.*s is outside the UCS codespace"
! msgstr "%.*s 在 UCS 码空间之外"
  
  #: charset.cc:1919 charset.cc:3072
  msgid "converting UCN to source character set"
*************** msgstr "扩展字符 %.*s 在标识符�
*** 186,192 ****
  #: charset.cc:2007
  #, gcc-internal-format
  msgid "extended character %.*s is not valid at the start of an identifier"
! msgstr "扩展字符 %.*s 在标识符开头无效"
  
  #: charset.cc:2129
  #, gcc-internal-format
--- 188,194 ----
  #: charset.cc:2007
  #, gcc-internal-format
  msgid "extended character %.*s is not valid at the start of an identifier"
! msgstr "扩展字符 %.*s 在标识符的开头无效"
  
  #: charset.cc:2129
  #, gcc-internal-format
*************** msgid "hex escape sequence out of range"
*** 208,217 ****
  msgstr "16 进制转义序列越界"
  
  #: charset.cc:2247
! #, fuzzy, gcc-internal-format
! #| msgid "%<\\o%> not followed by %<}%>"
  msgid "%<\\o%> not followed by %<{%>"
! msgstr "%<\\o%> 后没有 %<}%>"
  
  #: charset.cc:2305
  #, gcc-internal-format
--- 210,218 ----
  msgstr "16 进制转义序列越界"
  
  #: charset.cc:2247
! #, gcc-internal-format
  msgid "%<\\o%> not followed by %<{%>"
! msgstr "%<\\o%> 后面没有 %<{%>"
  
  #: charset.cc:2305
  #, gcc-internal-format
*************** msgid "%<#embed%> not supported in tradi
*** 461,476 ****
  msgstr "在传统C中不支持 %<#embed%>"
  
  #: directives.cc:1370
! #, fuzzy, gcc-internal-format
! #| msgid "%<#%s%> before C++23 is a GCC extension"
  msgid "%<#%s%> before C++26 is a GCC extension"
! msgstr "%<#%s%> 在C++23以前是一个 GCC 扩展"
  
  #: directives.cc:1379
! #, fuzzy, gcc-internal-format
! #| msgid "%<#%s%> is a GCC extension"
  msgid "%<#%s%> is a C23 feature"
! msgstr "%<#%s%> 是一个 GCC 扩展"
  
  #: directives.cc:1436
  #, gcc-internal-format
--- 462,475 ----
  msgstr "在传统C中不支持 %<#embed%>"
  
  #: directives.cc:1370
! #, gcc-internal-format
  msgid "%<#%s%> before C++26 is a GCC extension"
! msgstr "%<#%s%> 在 C++26 以前是一个 GCC 扩展"
  
  #: directives.cc:1379
! #, gcc-internal-format
  msgid "%<#%s%> is a C23 feature"
! msgstr "%<#%s%> 是一个 C23 特性"
  
  #: directives.cc:1436
  #, gcc-internal-format
diff -Nrcpad gcc-16-20250511/libgcc/ChangeLog gcc-16-20250518/libgcc/ChangeLog
*** gcc-16-20250511/libgcc/ChangeLog	Sun May 11 22:32:39 2025
--- gcc-16-20250518/libgcc/ChangeLog	Sun May 18 22:32:56 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-05-17  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	* config/sh/lib1funcs.S (ashiftrt_r4_32): Increase alignment.
+ 	(movemem): Force alignment of the mova intruction.
+ 
  2025-04-25  Thomas Schwinge  <tschwinge@baylibre.com>
  
  	PR target/119853
diff -Nrcpad gcc-16-20250511/libgcc/config/libbid/ChangeLog gcc-16-20250518/libgcc/config/libbid/ChangeLog
*** gcc-16-20250511/libgcc/config/libbid/ChangeLog	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgcc/config/libbid/ChangeLog	Sun May 18 22:32:56 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-05-15  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* bid128_string.c (MIN_DIGITS): New macro.
+ 	(bid128_from_string): Bug fix. Conversion from very long input
+ 	string to decimal.
+ 
  2024-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
  
  	PR libgcc/117537
diff -Nrcpad gcc-16-20250511/libgcc/config/libbid/bid128_string.c gcc-16-20250518/libgcc/config/libbid/bid128_string.c
*** gcc-16-20250511/libgcc/config/libbid/bid128_string.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgcc/config/libbid/bid128_string.c	Sun May 18 22:32:56 2025
*************** see the files COPYING3 and COPYING.RUNTI
*** 31,36 ****
--- 31,38 ----
  #include "bid128_2_str.h"
  #include "bid128_2_str_macros.h"
  
+ #define MIN_DIGITS(a,b) ((a) < (b) ? (a) : (b))
+ 
  extern int bid128_coeff_2_string (UINT64 X_hi, UINT64 X_lo,
  				  char *char_ptr);
  
*************** bid128_from_string (char *ps _RND_MODE_P
*** 283,288 ****
--- 285,291 ----
    int ndigits_before, ndigits_after, ndigits_total, dec_expon, sgn_exp,
      i, d2, rdx_pt_enc;
    char c, buffer[MAX_STRING_DIGITS_128];
+   int min_digits, sticky_bit=0;
    int save_rnd_mode;
    int save_fpsf;
  
*************** bid128_from_string (char *ps _RND_MODE_P
*** 443,450 ****
    if (!rdx_pt_enc) {
      // investigate string (before radix point)
      while ((unsigned) (c - '0') <= 9
!            && ndigits_before < MAX_STRING_DIGITS_128) {
!       buffer[ndigits_before] = c;
        ps++;
        c = *ps;
        ndigits_before++;
--- 446,455 ----
    if (!rdx_pt_enc) {
      // investigate string (before radix point)
      while ((unsigned) (c - '0') <= 9
!            /*&& ndigits_before < MAX_STRING_DIGITS_128*/) {
!       if(ndigits_before < MAX_FORMAT_DIGITS_128) buffer[ndigits_before] = c;
!       else if(ndigits_before < MAX_STRING_DIGITS_128) { buffer[ndigits_before] = c; }
!       else if(c>'0') { sticky_bit = 1; }
        ps++;
        c = *ps;
        ndigits_before++;
*************** bid128_from_string (char *ps _RND_MODE_P
*** 457,464 ****
  
          // investigate string (after radix point)
          while ((unsigned) (c - '0') <= 9
!                && ndigits_total < MAX_STRING_DIGITS_128) {
!           buffer[ndigits_total] = c;
            ps++;
            c = *ps;
            ndigits_total++;
--- 462,471 ----
  
          // investigate string (after radix point)
          while ((unsigned) (c - '0') <= 9
!                /*&& ndigits_total < MAX_STRING_DIGITS_128*/) {
!           if(ndigits_total < MAX_FORMAT_DIGITS_128) buffer[ndigits_total] = c;
!           else if(ndigits_total < MAX_STRING_DIGITS_128) { buffer[ndigits_total] = c; }
! 	  else if(c>'0') { sticky_bit = 1; }
            ps++;
            c = *ps;
            ndigits_total++;
*************** bid128_from_string (char *ps _RND_MODE_P
*** 474,481 ****
      ndigits_total = 0;
      // investigate string (after radix point)
      while ((unsigned) (c - '0') <= 9
!            && ndigits_total < MAX_STRING_DIGITS_128) {
!       buffer[ndigits_total] = c;
        ps++;
        c = *ps;
        ndigits_total++;
--- 481,490 ----
      ndigits_total = 0;
      // investigate string (after radix point)
      while ((unsigned) (c - '0') <= 9
!            /*&& ndigits_total < MAX_STRING_DIGITS_128*/) {
!       if(ndigits_total < MAX_FORMAT_DIGITS_128)  buffer[ndigits_total] = c;
!       else if(ndigits_total < MAX_STRING_DIGITS_128)  { buffer[ndigits_total] = c; }
!       else if(c>'0') { sticky_bit = 1; }
        ps++;
        c = *ps;
        ndigits_total++;
*************** bid128_from_string (char *ps _RND_MODE_P
*** 594,650 ****
        coeff_l2 = coeff_low + coeff_low;
        coeff_low = (coeff_l2 << 2) + coeff_l2 + buffer[i] - '0';
      }
! 	switch(rnd_mode) {
! 	case ROUNDING_TO_NEAREST:
!     carry = ((unsigned) ('4' - buffer[i])) >> 31;
!     if ((buffer[i] == '5' && !(coeff_low & 1)) || dec_expon < 0) {
!       if (dec_expon >= 0) {
!         carry = 0;
!         i++;
!       }
!       for (; i < ndigits_total; i++) {
!         if (buffer[i] > '0') {
!           carry = 1;
!           break;
!         }
        }
!     }
! 	break;
  
! 	case ROUNDING_DOWN:
! 		if(sign_x)
!       for (; i < ndigits_total; i++) {
!         if (buffer[i] > '0') {
!           carry = 1;
!           break;
!         }
        }
! 		break;
! 	case ROUNDING_UP:
! 		if(!sign_x)
!       for (; i < ndigits_total; i++) {
!         if (buffer[i] > '0') {
!           carry = 1;
!           break;
!         }
        }
! 		break;
! 	case ROUNDING_TO_ZERO:
! 		carry=0;
! 		break;
! 	case ROUNDING_TIES_AWAY:
!     carry = ((unsigned) ('4' - buffer[i])) >> 31;
!     if (dec_expon < 0) {
!       for (; i < ndigits_total; i++) {
!         if (buffer[i] > '0') {
!           carry = 1;
!           break;
!         }
        }
!     }
! 		break;
! 
!         default: break; // default added to avoid compiler warning
  	}
      // now form the coefficient as coeff_high*10^17+coeff_low+carry
      scale_high = 100000000000000000ull;
--- 603,665 ----
        coeff_l2 = coeff_low + coeff_low;
        coeff_low = (coeff_l2 << 2) + coeff_l2 + buffer[i] - '0';
      }
!     switch(rnd_mode) {
!     case ROUNDING_TO_NEAREST:
!       carry = ((unsigned) ('4' - buffer[i])) >> 31;
!       if ((buffer[i] == '5' && !(coeff_low & 1) && !sticky_bit) || dec_expon < 0) {
! 	if (dec_expon >= 0) {
! 	  carry = 0;
! 	  i++;
! 	}
!         min_digits = MIN_DIGITS(ndigits_total, MAX_STRING_DIGITS_128);
! 	for (carry=sticky_bit; (!carry) && (i < min_digits); i++) {
! 	  if (buffer[i] > '0') {
! 	    carry = 1;
! 	    break;
! 	  }
! 	}
        }
!       break;
  
!     case ROUNDING_DOWN:
!       if(sign_x) {
!         min_digits = MIN_DIGITS(ndigits_total, MAX_STRING_DIGITS_128);
!         for (carry=sticky_bit; (!carry) && (i < min_digits); i++) {
! 	  if (buffer[i] > '0') {
! 	    carry = 1;
! 	    break;
! 	  }
! 	}
        }
!       break;
!     case ROUNDING_UP:
!       if(!sign_x) {
! 	min_digits = MIN_DIGITS(ndigits_total, MAX_STRING_DIGITS_128);
!         for (carry=sticky_bit; (!carry) && (i < min_digits); i++) {
! 	  if (buffer[i] > '0') {
! 	    carry = 1;
! 	    break;
! 	  }
! 	}
        }
!       break;
!     case ROUNDING_TO_ZERO:
!       carry=0;
!       break;
!     case ROUNDING_TIES_AWAY:
!       carry = ((unsigned) ('4' - buffer[i])) >> 31;
!       if (dec_expon < 0) {
!         min_digits = MIN_DIGITS(ndigits_total, MAX_STRING_DIGITS_128);
!         for (carry=sticky_bit; (!carry) && (i < min_digits); i++) {
! 	  if (buffer[i] > '0') {
! 	    carry = 1;
! 	    break;
! 	  }
! 	}
        }
!       break;
!       
!     default: break; // default added to avoid compiler warning
  	}
      // now form the coefficient as coeff_high*10^17+coeff_low+carry
      scale_high = 100000000000000000ull;
diff -Nrcpad gcc-16-20250511/libgcc/config/sh/lib1funcs.S gcc-16-20250518/libgcc/config/sh/lib1funcs.S
*** gcc-16-20250511/libgcc/config/sh/lib1funcs.S	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgcc/config/sh/lib1funcs.S	Sun May 18 22:32:56 2025
*************** see the files COPYING3 and COPYING.RUNTI
*** 115,121 ****
  	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_31))
  	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_32))
  
! 	.align	1
  GLOBAL(ashiftrt_r4_32):
  GLOBAL(ashiftrt_r4_31):
  	rotcl	r4
--- 115,121 ----
  	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_31))
  	HIDDEN_FUNC(GLOBAL(ashiftrt_r4_32))
  
! 	.align	4
  GLOBAL(ashiftrt_r4_32):
  GLOBAL(ashiftrt_r4_31):
  	rotcl	r4
*************** LOCAL(movmem_loop): /* Reached with rts
*** 764,769 ****
--- 764,770 ----
  	bt	GLOBAL(movmemSI52)
  ! done all the large groups, do the remainder
  ! jump to movmem+
+ 	.balign	4
  	mova	GLOBAL(movmemSI4)+4,r0
  	add	r6,r0
  	jmp	@r0
diff -Nrcpad gcc-16-20250511/libgcobol/ChangeLog gcc-16-20250518/libgcobol/ChangeLog
*** gcc-16-20250511/libgcobol/ChangeLog	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgcobol/ChangeLog	Sun May 18 22:32:56 2025
***************
*** 1,3 ****
--- 1,19 ----
+ 2025-05-16  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* common-defs.h (struct cbl_declarative_t): Eliminate blobl.
+ 	* libgcobol.cc (__gg__set_env_name): Code for ENVIRONMENT-NAME/VALUE.
+ 	(__gg__set_env_value): Likewise.
+ 
+ 2025-05-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* libgcobol.cc [!LOG_PERROR] (LOG_PERROR): Provide fallback.
+ 
+ 2025-05-11  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119377
+ 	* common-defs.h: (struct cbl_declaratives_t): Change "bool global" to
+ 	"uint32_t global".
+ 
  2025-05-10  Robert Dubner  <rdubner@symas.com>
  
  	* common-defs.h (ec_cmp): Delete "getenv("match_declarative")" calls.
diff -Nrcpad gcc-16-20250511/libgcobol/common-defs.h gcc-16-20250518/libgcobol/common-defs.h
*** gcc-16-20250511/libgcobol/common-defs.h	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgcobol/common-defs.h	Sun May 18 22:32:56 2025
*************** struct cbl_enabled_exception_t {
*** 458,482 ****
  struct cbl_declarative_t {
    enum { files_max = 16 };
    size_t section; // implies program
!   uint32_t global;  // See the note below
    ec_type_t type;
    uint32_t nfile, files[files_max];
    cbl_file_mode_t mode;
  
- /*  The ::global member originally was "bool global".  A bool, however, occupies
-     only one byte of storage.  The structure, in turn, is constructed on
-     four-byte boundaries for members, so there were three padding bytes between
-     the single byte of global and the ::type member.
- 
-     When used to create a "blob", where the structure was treated as a stream
-     of bytes that were used to create a constructor for an array of bytes,
-     valgrind noticed that those three padding bytes were not initialized, and
-     generated the appropriate error message.  This made it hard to find other
-     problems.
- 
-     Changing the declaration from "bool" to "uint32_t" seems to have eliminated
-     the valgrind error without affecting overall performance.  */
- 
    cbl_declarative_t( cbl_file_mode_t mode = file_mode_none_e )
      : section(0), global(false)
      , type(ec_none_e)
--- 458,468 ----
  struct cbl_declarative_t {
    enum { files_max = 16 };
    size_t section; // implies program
!   bool global;
    ec_type_t type;
    uint32_t nfile, files[files_max];
    cbl_file_mode_t mode;
  
    cbl_declarative_t( cbl_file_mode_t mode = file_mode_none_e )
      : section(0), global(false)
      , type(ec_none_e)
*************** struct cbl_declarative_t {
*** 524,530 ****
    constexpr cbl_declarative_t& operator=(const cbl_declarative_t&) = default;
  
    std::vector<uint64_t> encode() const;
-   void decode( const std::vector<uint64_t>& encoded );
  
    /*
     * Sort file names before file modes, and file modes before non-IO.
--- 510,515 ----
diff -Nrcpad gcc-16-20250511/libgcobol/libgcobol.cc gcc-16-20250518/libgcobol/libgcobol.cc
*** gcc-16-20250511/libgcobol/libgcobol.cc	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgcobol/libgcobol.cc	Sun May 18 22:32:56 2025
***************
*** 75,80 ****
--- 75,85 ----
  
  #include "exceptl.h"
  
+ /* BSD extension.  */
+ #if !defined(LOG_PERROR)
+ #define LOG_PERROR 0
+ #endif
+ 
  #if !defined (HAVE_STRFROMF32)
  # if __FLT_MANT_DIG__ == 24 && __FLT_MAX_EXP__ == 128
  static int
*************** __gg__set_exception_environment( uint64_
*** 13103,13105 ****
--- 13108,13165 ----
    prior.dcls = dcls;
    }
  
+ static char *sv_envname = NULL;
+ 
+ extern "C"
+ void
+ __gg__set_env_name( cblc_field_t   *var,
+                     size_t          offset,
+                     size_t          length )
+   {
+   free(sv_envname);
+   sv_envname = (char *)malloc(length+1);
+   memcpy(sv_envname, var->data+offset, length);
+   sv_envname[length] = '\0';
+   }
+ 
+ extern "C"
+ void
+ __gg__set_env_value(cblc_field_t   *value,
+                     size_t          offset,
+                     size_t          length )
+   {
+   size_t name_length  = strlen(sv_envname);
+   size_t value_length = length;
+ 
+   static char   *env        = NULL;
+   static size_t  env_length = 0;
+   static char   *val        = NULL;
+   static size_t  val_length = 0;
+   if( env_length < name_length+1 )
+     {
+     env_length = name_length+1;
+     env = (char *)realloc(env, env_length);
+     }
+   if( val_length < value_length+1 )
+     {
+     val_length = value_length+1;
+     val = (char *)realloc(val, val_length);
+     }
+ 
+   // The name and the value arrive in the internal codeset:
+   memcpy(env, sv_envname, name_length);
+   env[name_length] = '\0';
+   memcpy(val, value->data+offset, value_length);
+   val[value_length] = '\0';
+ 
+   // Get rid of leading and trailing internal_space characters
+   char *trimmed_env = brute_force_trim(env);
+   char *trimmed_val = brute_force_trim(val);
+ 
+   // Conver them to the console codeset
+   __gg__internal_to_console_in_place(trimmed_env, strlen(trimmed_env));
+   __gg__internal_to_console_in_place(trimmed_val, strlen(trimmed_val));
+ 
+   // And now, anticlimactically, set the variable:
+   setenv(trimmed_env, trimmed_val, 1);
+   }
diff -Nrcpad gcc-16-20250511/libgfortran/ChangeLog gcc-16-20250518/libgfortran/ChangeLog
*** gcc-16-20250511/libgfortran/ChangeLog	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/ChangeLog	Sun May 18 22:32:56 2025
***************
*** 1,3 ****
--- 1,48 ----
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libfortran/120196
+ 	* m4/ifindloc2.m4 (header1, header2): For back use i > 0 rather than
+ 	i >= 0 as for condition.
+ 	* generated/findloc2_s1.c: Regenerate.
+ 	* generated/findloc2_s4.c: Regenerate.
+ 
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/120191
+ 	* m4/ifunction-s.m4 (SCALAR_ARRAY_FUNCTION): Don't multiply
+ 	GFC_DESCRIPTOR_EXTENT(array,) by string_len.
+ 	* generated/maxloc1_4_s1.c: Regenerate.
+ 	* generated/maxloc1_4_s4.c: Regenerate.
+ 	* generated/maxloc1_8_s1.c: Regenerate.
+ 	* generated/maxloc1_8_s4.c: Regenerate.
+ 	* generated/maxloc1_16_s1.c: Regenerate.
+ 	* generated/maxloc1_16_s4.c: Regenerate.
+ 	* generated/minloc1_4_s1.c: Regenerate.
+ 	* generated/minloc1_4_s4.c: Regenerate.
+ 	* generated/minloc1_8_s1.c: Regenerate.
+ 	* generated/minloc1_8_s4.c: Regenerate.
+ 	* generated/minloc1_16_s1.c: Regenerate.
+ 	* generated/minloc1_16_s4.c: Regenerate.
+ 
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/120191
+ 	* m4/maxloc2s.m4: For smaxloc2 call maxloc2 if mask is NULL or *mask.
+ 	Swap back and len arguments.
+ 	* m4/minloc2s.m4: Likewise.
+ 	* generated/maxloc2_4_s1.c: Regenerate.
+ 	* generated/maxloc2_4_s4.c: Regenerate.
+ 	* generated/maxloc2_8_s1.c: Regenerate.
+ 	* generated/maxloc2_8_s4.c: Regenerate.
+ 	* generated/maxloc2_16_s1.c: Regenerate.
+ 	* generated/maxloc2_16_s4.c: Regenerate.
+ 	* generated/minloc2_4_s1.c: Regenerate.
+ 	* generated/minloc2_4_s4.c: Regenerate.
+ 	* generated/minloc2_8_s1.c: Regenerate.
+ 	* generated/minloc2_8_s4.c: Regenerate.
+ 	* generated/minloc2_16_s1.c: Regenerate.
+ 	* generated/minloc2_16_s4.c: Regenerate.
+ 
  2025-05-10  Yuao Ma  <c8ef@outlook.com>
  
  	* io/read.c (read_f): Comment typo, explict -> explicit.
diff -Nrcpad gcc-16-20250511/libgfortran/generated/findloc2_s1.c gcc-16-20250518/libgfortran/generated/findloc2_s1.c
*** gcc-16-20250511/libgfortran/generated/findloc2_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/findloc2_s1.c	Sun May 18 22:32:56 2025
*************** findloc2_s1 (gfc_array_s1 * const restri
*** 49,55 ****
    if (back)
      {
        src = array->base_addr + (extent - 1) * sstride;
!       for (i = extent; i >= 0; i--)
  	{
  	  if (compare_string (len_array, (char *) src, len_value, (char *) value) == 0)
  	    return i;
--- 49,55 ----
    if (back)
      {
        src = array->base_addr + (extent - 1) * sstride;
!       for (i = extent; i > 0; i--)
  	{
  	  if (compare_string (len_array, (char *) src, len_value, (char *) value) == 0)
  	    return i;
*************** mfindloc2_s1 (gfc_array_s1 * const restr
*** 112,118 ****
      {
        src = array->base_addr + (extent - 1) * sstride;
        mbase += (extent - 1) * mstride;
!       for (i = extent; i >= 0; i--)
  	{
  	  if (*mbase && (compare_string (len_array, (char *) src, len_value, (char *) value) == 0))
  	    return i;
--- 112,118 ----
      {
        src = array->base_addr + (extent - 1) * sstride;
        mbase += (extent - 1) * mstride;
!       for (i = extent; i > 0; i--)
  	{
  	  if (*mbase && (compare_string (len_array, (char *) src, len_value, (char *) value) == 0))
  	    return i;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/findloc2_s4.c gcc-16-20250518/libgfortran/generated/findloc2_s4.c
*** gcc-16-20250511/libgfortran/generated/findloc2_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/findloc2_s4.c	Sun May 18 22:32:56 2025
*************** findloc2_s4 (gfc_array_s4 * const restri
*** 49,55 ****
    if (back)
      {
        src = array->base_addr + (extent - 1) * sstride;
!       for (i = extent; i >= 0; i--)
  	{
  	  if (compare_string_char4 (len_array, src, len_value, value) == 0)
  	    return i;
--- 49,55 ----
    if (back)
      {
        src = array->base_addr + (extent - 1) * sstride;
!       for (i = extent; i > 0; i--)
  	{
  	  if (compare_string_char4 (len_array, src, len_value, value) == 0)
  	    return i;
*************** mfindloc2_s4 (gfc_array_s4 * const restr
*** 112,118 ****
      {
        src = array->base_addr + (extent - 1) * sstride;
        mbase += (extent - 1) * mstride;
!       for (i = extent; i >= 0; i--)
  	{
  	  if (*mbase && (compare_string_char4 (len_array, src, len_value, value) == 0))
  	    return i;
--- 112,118 ----
      {
        src = array->base_addr + (extent - 1) * sstride;
        mbase += (extent - 1) * mstride;
!       for (i = extent; i > 0; i--)
  	{
  	  if (*mbase && (compare_string_char4 (len_array, src, len_value, value) == 0))
  	    return i;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc1_16_s1.c gcc-16-20250518/libgfortran/generated/maxloc1_16_s1.c
*** gcc-16-20250511/libgfortran/generated/maxloc1_16_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc1_16_s1.c	Sun May 18 22:32:56 2025
*************** smaxloc1_16_s1 (gfc_array_i16 * const re
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** smaxloc1_16_s1 (gfc_array_i16 * const re
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc1_16_s4.c gcc-16-20250518/libgfortran/generated/maxloc1_16_s4.c
*** gcc-16-20250511/libgfortran/generated/maxloc1_16_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc1_16_s4.c	Sun May 18 22:32:56 2025
*************** smaxloc1_16_s4 (gfc_array_i16 * const re
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** smaxloc1_16_s4 (gfc_array_i16 * const re
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc1_4_s1.c gcc-16-20250518/libgfortran/generated/maxloc1_4_s1.c
*** gcc-16-20250511/libgfortran/generated/maxloc1_4_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc1_4_s1.c	Sun May 18 22:32:56 2025
*************** smaxloc1_4_s1 (gfc_array_i4 * const rest
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** smaxloc1_4_s1 (gfc_array_i4 * const rest
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc1_4_s4.c gcc-16-20250518/libgfortran/generated/maxloc1_4_s4.c
*** gcc-16-20250511/libgfortran/generated/maxloc1_4_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc1_4_s4.c	Sun May 18 22:32:56 2025
*************** smaxloc1_4_s4 (gfc_array_i4 * const rest
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** smaxloc1_4_s4 (gfc_array_i4 * const rest
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc1_8_s1.c gcc-16-20250518/libgfortran/generated/maxloc1_8_s1.c
*** gcc-16-20250511/libgfortran/generated/maxloc1_8_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc1_8_s1.c	Sun May 18 22:32:56 2025
*************** smaxloc1_8_s1 (gfc_array_i8 * const rest
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** smaxloc1_8_s1 (gfc_array_i8 * const rest
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc1_8_s4.c gcc-16-20250518/libgfortran/generated/maxloc1_8_s4.c
*** gcc-16-20250511/libgfortran/generated/maxloc1_8_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc1_8_s4.c	Sun May 18 22:32:56 2025
*************** smaxloc1_8_s4 (gfc_array_i8 * const rest
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** smaxloc1_8_s4 (gfc_array_i8 * const rest
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc2_16_s1.c gcc-16-20250518/libgfortran/generated/maxloc2_16_s1.c
*** gcc-16-20250511/libgfortran/generated/maxloc2_16_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc2_16_s1.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_16
*** 152,159 ****
  smaxloc2_16_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return maxloc2_16_s1 (array, len, back);
    else
      return 0;
  }
--- 152,159 ----
  smaxloc2_16_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return maxloc2_16_s1 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc2_16_s4.c gcc-16-20250518/libgfortran/generated/maxloc2_16_s4.c
*** gcc-16-20250511/libgfortran/generated/maxloc2_16_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc2_16_s4.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_16
*** 152,159 ****
  smaxloc2_16_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return maxloc2_16_s4 (array, len, back);
    else
      return 0;
  }
--- 152,159 ----
  smaxloc2_16_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return maxloc2_16_s4 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc2_4_s1.c gcc-16-20250518/libgfortran/generated/maxloc2_4_s1.c
*** gcc-16-20250511/libgfortran/generated/maxloc2_4_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc2_4_s1.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_4
*** 152,159 ****
  smaxloc2_4_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return maxloc2_4_s1 (array, len, back);
    else
      return 0;
  }
--- 152,159 ----
  smaxloc2_4_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return maxloc2_4_s1 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc2_4_s4.c gcc-16-20250518/libgfortran/generated/maxloc2_4_s4.c
*** gcc-16-20250511/libgfortran/generated/maxloc2_4_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc2_4_s4.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_4
*** 152,159 ****
  smaxloc2_4_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return maxloc2_4_s4 (array, len, back);
    else
      return 0;
  }
--- 152,159 ----
  smaxloc2_4_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return maxloc2_4_s4 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc2_8_s1.c gcc-16-20250518/libgfortran/generated/maxloc2_8_s1.c
*** gcc-16-20250511/libgfortran/generated/maxloc2_8_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc2_8_s1.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_8
*** 152,159 ****
  smaxloc2_8_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return maxloc2_8_s1 (array, len, back);
    else
      return 0;
  }
--- 152,159 ----
  smaxloc2_8_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return maxloc2_8_s1 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/maxloc2_8_s4.c gcc-16-20250518/libgfortran/generated/maxloc2_8_s4.c
*** gcc-16-20250511/libgfortran/generated/maxloc2_8_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/maxloc2_8_s4.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_8
*** 152,159 ****
  smaxloc2_8_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return maxloc2_8_s4 (array, len, back);
    else
      return 0;
  }
--- 152,159 ----
  smaxloc2_8_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return maxloc2_8_s4 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc1_16_s1.c gcc-16-20250518/libgfortran/generated/minloc1_16_s1.c
*** gcc-16-20250511/libgfortran/generated/minloc1_16_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc1_16_s1.c	Sun May 18 22:32:56 2025
*************** sminloc1_16_s1 (gfc_array_i16 * const re
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** sminloc1_16_s1 (gfc_array_i16 * const re
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc1_16_s4.c gcc-16-20250518/libgfortran/generated/minloc1_16_s4.c
*** gcc-16-20250511/libgfortran/generated/minloc1_16_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc1_16_s4.c	Sun May 18 22:32:56 2025
*************** sminloc1_16_s4 (gfc_array_i16 * const re
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** sminloc1_16_s4 (gfc_array_i16 * const re
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc1_4_s1.c gcc-16-20250518/libgfortran/generated/minloc1_4_s1.c
*** gcc-16-20250511/libgfortran/generated/minloc1_4_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc1_4_s1.c	Sun May 18 22:32:56 2025
*************** sminloc1_4_s1 (gfc_array_i4 * const rest
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** sminloc1_4_s1 (gfc_array_i4 * const rest
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc1_4_s4.c gcc-16-20250518/libgfortran/generated/minloc1_4_s4.c
*** gcc-16-20250511/libgfortran/generated/minloc1_4_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc1_4_s4.c	Sun May 18 22:32:56 2025
*************** sminloc1_4_s4 (gfc_array_i4 * const rest
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** sminloc1_4_s4 (gfc_array_i4 * const rest
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc1_8_s1.c gcc-16-20250518/libgfortran/generated/minloc1_8_s1.c
*** gcc-16-20250511/libgfortran/generated/minloc1_8_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc1_8_s1.c	Sun May 18 22:32:56 2025
*************** sminloc1_8_s1 (gfc_array_i8 * const rest
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** sminloc1_8_s1 (gfc_array_i8 * const rest
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc1_8_s4.c gcc-16-20250518/libgfortran/generated/minloc1_8_s4.c
*** gcc-16-20250511/libgfortran/generated/minloc1_8_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc1_8_s4.c	Sun May 18 22:32:56 2025
*************** sminloc1_8_s4 (gfc_array_i8 * const rest
*** 457,463 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 457,463 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** sminloc1_8_s4 (gfc_array_i8 * const rest
*** 465,472 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 465,471 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc2_16_s1.c gcc-16-20250518/libgfortran/generated/minloc2_16_s1.c
*** gcc-16-20250511/libgfortran/generated/minloc2_16_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc2_16_s1.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_16
*** 154,161 ****
  sminloc2_16_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return minloc2_16_s1 (array, len, back);
    else
      return 0;
  }
--- 154,161 ----
  sminloc2_16_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return minloc2_16_s1 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc2_16_s4.c gcc-16-20250518/libgfortran/generated/minloc2_16_s4.c
*** gcc-16-20250511/libgfortran/generated/minloc2_16_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc2_16_s4.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_16
*** 154,161 ****
  sminloc2_16_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return minloc2_16_s4 (array, len, back);
    else
      return 0;
  }
--- 154,161 ----
  sminloc2_16_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return minloc2_16_s4 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc2_4_s1.c gcc-16-20250518/libgfortran/generated/minloc2_4_s1.c
*** gcc-16-20250511/libgfortran/generated/minloc2_4_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc2_4_s1.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_4
*** 154,161 ****
  sminloc2_4_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return minloc2_4_s1 (array, len, back);
    else
      return 0;
  }
--- 154,161 ----
  sminloc2_4_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return minloc2_4_s1 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc2_4_s4.c gcc-16-20250518/libgfortran/generated/minloc2_4_s4.c
*** gcc-16-20250511/libgfortran/generated/minloc2_4_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc2_4_s4.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_4
*** 154,161 ****
  sminloc2_4_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return minloc2_4_s4 (array, len, back);
    else
      return 0;
  }
--- 154,161 ----
  sminloc2_4_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return minloc2_4_s4 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc2_8_s1.c gcc-16-20250518/libgfortran/generated/minloc2_8_s1.c
*** gcc-16-20250511/libgfortran/generated/minloc2_8_s1.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc2_8_s1.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_8
*** 154,161 ****
  sminloc2_8_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return minloc2_8_s1 (array, len, back);
    else
      return 0;
  }
--- 154,161 ----
  sminloc2_8_s1 (gfc_array_s1 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return minloc2_8_s1 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/generated/minloc2_8_s4.c gcc-16-20250518/libgfortran/generated/minloc2_8_s4.c
*** gcc-16-20250511/libgfortran/generated/minloc2_8_s4.c	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/generated/minloc2_8_s4.c	Sun May 18 22:32:56 2025
*************** GFC_INTEGER_8
*** 154,161 ****
  sminloc2_8_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask)
!     return minloc2_8_s4 (array, len, back);
    else
      return 0;
  }
--- 154,161 ----
  sminloc2_8_s4 (gfc_array_s4 * const restrict array,
  				 GFC_LOGICAL_4 *mask, GFC_LOGICAL_4 back, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return minloc2_8_s4 (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/m4/ifindloc2.m4 gcc-16-20250518/libgfortran/m4/ifindloc2.m4
*** gcc-16-20250511/libgfortran/m4/ifindloc2.m4	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/m4/ifindloc2.m4	Sun May 18 22:32:56 2025
*************** see the files COPYING3 and COPYING.RUNTI
*** 41,47 ****
    if (back)
      {
        src = array->base_addr + (extent - 1) * sstride;
!       for (i = extent; i >= 0; i--)
  	{
  	  if ('comparison`'`)
  	    return i;
--- 41,47 ----
    if (back)
      {
        src = array->base_addr + (extent - 1) * sstride;
!       for (i = extent; i > 0; i--)
  	{
  	  if ('comparison`'`)
  	    return i;
*************** see the files COPYING3 and COPYING.RUNTI
*** 94,100 ****
      {
        src = array->base_addr + (extent - 1) * sstride;
        mbase += (extent - 1) * mstride;
!       for (i = extent; i >= 0; i--)
  	{
  	  if (*mbase && ('comparison`'`))
  	    return i;
--- 94,100 ----
      {
        src = array->base_addr + (extent - 1) * sstride;
        mbase += (extent - 1) * mstride;
!       for (i = extent; i > 0; i--)
  	{
  	  if (*mbase && ('comparison`'`))
  	    return i;
diff -Nrcpad gcc-16-20250511/libgfortran/m4/ifunction-s.m4 gcc-16-20250518/libgfortran/m4/ifunction-s.m4
*** gcc-16-20250511/libgfortran/m4/ifunction-s.m4	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/m4/ifunction-s.m4	Sun May 18 22:32:56 2025
*************** s'name`'rtype_qual`_'atype_code` ('rtype
*** 421,427 ****
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 421,427 ----
  
    for (n = 0; n < dim; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
*************** s'name`'rtype_qual`_'atype_code` ('rtype
*** 429,436 ****
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] =
! 	GFC_DESCRIPTOR_EXTENT(array,n + 1) * string_len;
  
        if (extent[n] <= 0)
  	extent[n] = 0;
--- 429,435 ----
  
    for (n = dim; n < rank; n++)
      {
!       extent[n] = GFC_DESCRIPTOR_EXTENT(array,n + 1);
  
        if (extent[n] <= 0)
  	extent[n] = 0;
diff -Nrcpad gcc-16-20250511/libgfortran/m4/maxloc2s.m4 gcc-16-20250518/libgfortran/m4/maxloc2s.m4
*** gcc-16-20250511/libgfortran/m4/maxloc2s.m4	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/m4/maxloc2s.m4	Sun May 18 22:32:56 2025
*************** export_proto(s'name`'rtype_qual`_'atype_
*** 153,160 ****
  s'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
  				 GFC_LOGICAL_4 *mask'back_arg`, gfc_charlen_type len)
  {
!   if (mask)
!     return 'name`'rtype_qual`_'atype_code` (array, len, back);
    else
      return 0;
  }
--- 153,160 ----
  s'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
  				 GFC_LOGICAL_4 *mask'back_arg`, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return 'name`'rtype_qual`_'atype_code` (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgfortran/m4/minloc2s.m4 gcc-16-20250518/libgfortran/m4/minloc2s.m4
*** gcc-16-20250511/libgfortran/m4/minloc2s.m4	Sun May 11 22:32:40 2025
--- gcc-16-20250518/libgfortran/m4/minloc2s.m4	Sun May 18 22:32:56 2025
*************** export_proto(s'name`'rtype_qual`_'atype_
*** 155,162 ****
  s'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
  				 GFC_LOGICAL_4 *mask'back_arg`, gfc_charlen_type len)
  {
!   if (mask)
!     return 'name`'rtype_qual`_'atype_code` (array, len, back);
    else
      return 0;
  }
--- 155,162 ----
  s'name`'rtype_qual`_'atype_code` ('atype` * const restrict array,
  				 GFC_LOGICAL_4 *mask'back_arg`, gfc_charlen_type len)
  {
!   if (mask == NULL || *mask)
!     return 'name`'rtype_qual`_'atype_code` (array, back, len);
    else
      return 0;
  }
diff -Nrcpad gcc-16-20250511/libgomp/ChangeLog gcc-16-20250518/libgomp/ChangeLog
*** gcc-16-20250511/libgomp/ChangeLog	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/ChangeLog	Sun May 18 22:33:00 2025
***************
*** 1,3 ****
--- 1,35 ----
+ 2025-05-15  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* testsuite/libgomp.fortran/alloc-comp-4.f90: New test.
+ 
+ 2025-05-14  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* target.c (gomp_attach_pointer): Return bool; accept additional
+ 	bool to optionally silence the fatal pointee-not-found error.
+ 	(gomp_map_vars_internal): If the pointee could not be found,
+ 	check whether it was mapped as GOMP_MAP_ZERO_LEN_ARRAY_SECTION.
+ 	* libgomp.h (gomp_attach_pointer): Update prototype.
+ 	* oacc-mem.c (acc_attach_async, goacc_enter_data_internal): Update
+ 	calls.
+ 	* testsuite/libgomp.c/target-map-zero-sized.c: New test.
+ 	* testsuite/libgomp.c/target-map-zero-sized-2.c: New test.
+ 	* testsuite/libgomp.c/target-map-zero-sized-3.c: New test.
+ 
+ 2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/119692
+ 	* testsuite/libgomp.c++/pr119692-1-4.C: '{ dg-timeout 10 }'.
+ 	* testsuite/libgomp.c++/pr119692-1-5.C: Likewise.
+ 	* testsuite/libgomp.c++/target-exceptions-bad_cast-1.C: Likewise.
+ 	* testsuite/libgomp.c++/target-exceptions-bad_cast-2.C: Likewise.
+ 	* testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C: Likewise.
+ 	* testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C: Likewise.
+ 
+ 2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c/declare-variant-3-sm61.c: New.
+ 	* testsuite/libgomp.c/declare-variant-3.h: Adjust.
+ 
  2025-05-09  Tobias Burnus  <tburnus@baylibre.com>
  
  	* testsuite/libgomp.c/interop-cuda-full.c: Use 'link' instead
diff -Nrcpad gcc-16-20250511/libgomp/libgomp.h gcc-16-20250518/libgomp/libgomp.h
*** gcc-16-20250511/libgomp/libgomp.h	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/libgomp.h	Sun May 18 22:33:00 2025
*************** extern void gomp_copy_dev2host (struct g
*** 1468,1477 ****
  				struct goacc_asyncqueue *, void *, const void *,
  				size_t);
  extern uintptr_t gomp_map_val (struct target_mem_desc *, void **, size_t);
! extern void gomp_attach_pointer (struct gomp_device_descr *,
  				 struct goacc_asyncqueue *, splay_tree,
  				 splay_tree_key, uintptr_t, size_t,
! 				 struct gomp_coalesce_buf *, bool);
  extern void gomp_detach_pointer (struct gomp_device_descr *,
  				 struct goacc_asyncqueue *, splay_tree_key,
  				 uintptr_t, bool, struct gomp_coalesce_buf *);
--- 1468,1477 ----
  				struct goacc_asyncqueue *, void *, const void *,
  				size_t);
  extern uintptr_t gomp_map_val (struct target_mem_desc *, void **, size_t);
! extern bool gomp_attach_pointer (struct gomp_device_descr *,
  				 struct goacc_asyncqueue *, splay_tree,
  				 splay_tree_key, uintptr_t, size_t,
! 				 struct gomp_coalesce_buf *, bool, bool);
  extern void gomp_detach_pointer (struct gomp_device_descr *,
  				 struct goacc_asyncqueue *, splay_tree_key,
  				 uintptr_t, bool, struct gomp_coalesce_buf *);
diff -Nrcpad gcc-16-20250511/libgomp/oacc-mem.c gcc-16-20250518/libgomp/oacc-mem.c
*** gcc-16-20250511/libgomp/oacc-mem.c	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/oacc-mem.c	Sun May 18 22:33:00 2025
*************** acc_attach_async (void **hostaddr, int a
*** 951,957 ****
      }
  
    gomp_attach_pointer (acc_dev, aq, &acc_dev->mem_map, n, (uintptr_t) hostaddr,
! 		       0, NULL, false);
  
    gomp_mutex_unlock (&acc_dev->lock);
  }
--- 951,957 ----
      }
  
    gomp_attach_pointer (acc_dev, aq, &acc_dev->mem_map, n, (uintptr_t) hostaddr,
! 		       0, NULL, false, true);
  
    gomp_mutex_unlock (&acc_dev->lock);
  }
*************** goacc_enter_data_internal (struct gomp_d
*** 1158,1164 ****
  	  if ((kinds[i] & 0xff) == GOMP_MAP_ATTACH)
  	    {
  	      gomp_attach_pointer (acc_dev, aq, &acc_dev->mem_map, n,
! 				   (uintptr_t) h, s, NULL, false);
  	      /* OpenACC 'attach'/'detach' doesn't affect structured/dynamic
  		 reference counts ('n->refcount', 'n->dynamic_refcount').  */
  	    }
--- 1158,1164 ----
  	  if ((kinds[i] & 0xff) == GOMP_MAP_ATTACH)
  	    {
  	      gomp_attach_pointer (acc_dev, aq, &acc_dev->mem_map, n,
! 				   (uintptr_t) h, s, NULL, false, true);
  	      /* OpenACC 'attach'/'detach' doesn't affect structured/dynamic
  		 reference counts ('n->refcount', 'n->dynamic_refcount').  */
  	    }
*************** goacc_enter_data_internal (struct gomp_d
*** 1176,1182 ****
  		  = lookup_host (acc_dev, hostaddrs[j], sizeof (void *));
  		gomp_attach_pointer (acc_dev, aq, &acc_dev->mem_map, m,
  				     (uintptr_t) hostaddrs[j], sizes[j], NULL,
! 				     false);
  	      }
  
  	  bool processed = false;
--- 1176,1182 ----
  		  = lookup_host (acc_dev, hostaddrs[j], sizeof (void *));
  		gomp_attach_pointer (acc_dev, aq, &acc_dev->mem_map, m,
  				     (uintptr_t) hostaddrs[j], sizes[j], NULL,
! 				     false, true);
  	      }
  
  	  bool processed = false;
diff -Nrcpad gcc-16-20250511/libgomp/target.c gcc-16-20250518/libgomp/target.c
*** gcc-16-20250511/libgomp/target.c	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/target.c	Sun May 18 22:33:00 2025
*************** gomp_map_fields_existing (struct target_
*** 800,811 ****
  	      (void *) cur_node.host_end);
  }
  
! attribute_hidden void
  gomp_attach_pointer (struct gomp_device_descr *devicep,
  		     struct goacc_asyncqueue *aq, splay_tree mem_map,
  		     splay_tree_key n, uintptr_t attach_to, size_t bias,
  		     struct gomp_coalesce_buf *cbufp,
! 		     bool allow_zero_length_array_sections)
  {
    struct splay_tree_key_s s;
    size_t size, idx;
--- 800,821 ----
  	      (void *) cur_node.host_end);
  }
  
! /* Update the devptr by setting it to the device address of the host pointee
!    'attach_to'; devptr is obtained from the splay_tree_key n.
!    When the pointer is already attached or the host pointee is either
!    NULL or in memory map, this function returns true.
!    Otherwise, the device pointer is set to point to the host pointee and:
!    - If allow_zero_length_array_sections is set, true is returned.
!    - Else, if fail_if_not_found is set, a fatal error is issued.
!    - Otherwise, false is returned.  */
! 
! attribute_hidden bool
  gomp_attach_pointer (struct gomp_device_descr *devicep,
  		     struct goacc_asyncqueue *aq, splay_tree mem_map,
  		     splay_tree_key n, uintptr_t attach_to, size_t bias,
  		     struct gomp_coalesce_buf *cbufp,
! 		     bool allow_zero_length_array_sections,
! 		     bool fail_if_not_found)
  {
    struct splay_tree_key_s s;
    size_t size, idx;
*************** gomp_attach_pointer (struct gomp_device_
*** 860,866 ****
  	  gomp_copy_host2dev (devicep, aq, (void *) devptr, (void *) &data,
  			      sizeof (void *), true, cbufp);
  
! 	  return;
  	}
  
        s.host_start = target + bias;
--- 870,876 ----
  	  gomp_copy_host2dev (devicep, aq, (void *) devptr, (void *) &data,
  			      sizeof (void *), true, cbufp);
  
! 	  return true;
  	}
  
        s.host_start = target + bias;
*************** gomp_attach_pointer (struct gomp_device_
*** 869,883 ****
  
        if (!tn)
  	{
! 	  if (allow_zero_length_array_sections)
! 	    /* When allowing attachment to zero-length array sections, we
! 	       copy the host pointer when the target region is not mapped.  */
! 	    data = target;
! 	  else
  	    {
  	      gomp_mutex_unlock (&devicep->lock);
  	      gomp_fatal ("pointer target not mapped for attach");
  	    }
  	}
        else
  	data = tn->tgt->tgt_start + tn->tgt_offset + target - tn->host_start;
--- 879,894 ----
  
        if (!tn)
  	{
! 	  /* We copy the host pointer when the target region is not mapped;
! 	     for allow_zero_length_array_sections, that's permitted.
! 	     Otherwise, it depends on the context. Return false in that
! 	     case, unless fail_if_not_found.  */
! 	  if (!allow_zero_length_array_sections && fail_if_not_found)
  	    {
  	      gomp_mutex_unlock (&devicep->lock);
  	      gomp_fatal ("pointer target not mapped for attach");
  	    }
+ 	  data = target;
  	}
        else
  	data = tn->tgt->tgt_start + tn->tgt_offset + target - tn->host_start;
*************** gomp_attach_pointer (struct gomp_device_
*** 889,898 ****
--- 900,912 ----
  
        gomp_copy_host2dev (devicep, aq, (void *) devptr, (void *) &data,
  			  sizeof (void *), true, cbufp);
+       if (!tn && !allow_zero_length_array_sections)
+ 	return false;
      }
    else
      gomp_debug (1, "%s: attach count for %p -> %u\n", __FUNCTION__,
  		(void *) attach_to, (int) n->aux->attach_count[idx]);
+   return true;
  }
  
  attribute_hidden void
*************** gomp_map_vars_internal (struct gomp_devi
*** 1587,1595 ****
  		      bool zlas
  			= ((kind & typemask)
  			   == GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION);
! 		      gomp_attach_pointer (devicep, aq, mem_map, n,
! 					   (uintptr_t) hostaddrs[i], sizes[i],
! 					   cbufp, zlas);
  		    }
  		  else if ((pragma_kind & GOMP_MAP_VARS_OPENACC) != 0)
  		    {
--- 1601,1637 ----
  		      bool zlas
  			= ((kind & typemask)
  			   == GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION);
! 		      /* For 'target enter data', the map clauses are split;
! 			 however, for more complex code with struct and
! 			 pointer members, the mapping and the attach can end up
! 			 in different sets; or the wrong mapping with the
! 			 attach. As there is no way to know whether a size
! 			 zero like  'var->ptr[i][:0]' happend in the same
! 			 directive or not, the not-attached check is now
! 			 fully silenced for 'enter data'.  */
! 		      if (openmp_p && (pragma_kind & GOMP_MAP_VARS_ENTER_DATA))
! 			zlas = true;
! 		      if (!gomp_attach_pointer (devicep, aq, mem_map, n,
! 						(uintptr_t) hostaddrs[i], sizes[i],
! 						cbufp, zlas, !openmp_p))
! 			{
! 			  /* Pointee not found; that's an error except for
! 			     map(var[:n]) with n == 0; the compiler adds a
! 			     runtime condition such that for those the kind is
! 			     always GOMP_MAP_ZERO_LEN_ARRAY_SECTION.  */
! 			  for (j = i; j > 0; j--)
! 			    if (*(void**) hostaddrs[i] == hostaddrs[j-1] - sizes[i]
! 				&& sizes[j-1] == 0
! 				&& (GOMP_MAP_ZERO_LEN_ARRAY_SECTION
! 				    == (get_kind (short_mapkind, kinds, j-1)
! 					& typemask)))
! 			      break;
! 			  if (j == 0)
! 			    {
! 			      gomp_mutex_unlock (&devicep->lock);
! 			      gomp_fatal ("pointer target not mapped for attach");
! 			    }
! 			}
  		    }
  		  else if ((pragma_kind & GOMP_MAP_VARS_OPENACC) != 0)
  		    {
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c gcc-16-20250518/libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c
*** gcc-16-20250511/libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c	Sun May 18 22:33:00 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { offload_target_nvptx } } } */
+ /* { dg-additional-options -foffload=nvptx-none } */
+ /* { dg-additional-options "-foffload=-misa=sm_61 -foffload=-mptx=_" } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-3.h"
+ 
+ /* { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump "= f61 \\(\\);" "optimized" } } */
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.c/declare-variant-3.h gcc-16-20250518/libgomp/testsuite/libgomp.c/declare-variant-3.h
*** gcc-16-20250511/libgomp/testsuite/libgomp.c/declare-variant-3.h	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/testsuite/libgomp.c/declare-variant-3.h	Sun May 18 22:33:00 2025
*************** f53 (void)
*** 37,42 ****
--- 37,49 ----
  
  __attribute__ ((noipa))
  int
+ f61 (void)
+ {
+   return 61;
+ }
+ 
+ __attribute__ ((noipa))
+ int
  f70 (void)
  {
    return 70;
*************** f89 (void)
*** 68,73 ****
--- 75,81 ----
  #pragma omp declare variant (f37) match (device={isa("sm_37")})
  #pragma omp declare variant (f52) match (device={isa("sm_52")})
  #pragma omp declare variant (f53) match (device={isa("sm_53")})
+ #pragma omp declare variant (f61) match (device={isa("sm_61")})
  #pragma omp declare variant (f70) match (device={isa("sm_70")})
  #pragma omp declare variant (f75) match (device={isa("sm_75")})
  #pragma omp declare variant (f80) match (device={isa("sm_80")})
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.c/target-map-zero-sized-2.c gcc-16-20250518/libgomp/testsuite/libgomp.c/target-map-zero-sized-2.c
*** gcc-16-20250511/libgomp/testsuite/libgomp.c/target-map-zero-sized-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libgomp/testsuite/libgomp.c/target-map-zero-sized-2.c	Sun May 18 22:33:00 2025
***************
*** 0 ****
--- 1,74 ----
+ int
+ main ()
+ {
+   int i, n;
+   int data[] = {1,2};
+   struct S { int **ptrset; };
+ 
+ // -----------------------------------
+ 
+ /* The produced mapping for sptr1->ptrset[i][:n]
+ 
+    GOMP_MAP_STRUCT (size = 1)
+       GOMP_MAP_ZERO_LEN_ARRAY_SECTION
+    GOMP_MAP_ZERO_LEN_ARRAY_SECTION
+       GOMP_MAP_ATTACH
+    GOMP_MAP_ATTACH -> attaching to 2nd GOMP_MAP_ZERO_LEN_ARRAY_SECTION
+ 
+ which get split into 3 separate map_vars call; in particular,
+ the latter is separate and points to an unmpapped variable.
+ 
+ Thus, it failed with:
+    libgomp: pointer target not mapped for attach  */
+ 
+   struct S s1, *sptr1;
+   s1.ptrset = (int **) __builtin_malloc (sizeof(void*) * 3);
+   s1.ptrset[0] = data;
+   s1.ptrset[1] = data;
+   s1.ptrset[2] = data;
+   sptr1 = &s1;
+ 
+   i = 1;
+   n = 0;
+   #pragma omp target enter data map(sptr1[:1], sptr1->ptrset[:3])
+   #pragma omp target enter data map(sptr1->ptrset[i][:n])
+ 
+   #pragma omp target exit data map(sptr1->ptrset[i][:n])
+   #pragma omp target exit data map(sptr1[:1], sptr1->ptrset[:3])
+ 
+   __builtin_free (s1.ptrset);
+ 
+ // -----------------------------------
+ 
+ /* The produced mapping for sptr2->ptrset[i][:n] is similar:
+ 
+    GOMP_MAP_STRUCT (size = 1)
+       GOMP_MAP_ZERO_LEN_ARRAY_SECTION
+    GOMP_MAP_TO  ! this one has now a finite size
+       GOMP_MAP_ATTACH
+    GOMP_MAP_ATTACH -> attach to the GOMP_MAP_TO
+ 
+ As the latter GOMP_MAP_ATTACH has now a pointer target,
+ the attachment worked.  */
+ 
+   struct S s2, *sptr2;
+   s2.ptrset = (int **) __builtin_malloc (sizeof(void*) * 3);
+   s2.ptrset[0] = data;
+   s2.ptrset[1] = data;
+   s2.ptrset[2] = data;
+   sptr2 = &s2;
+ 
+   i = 1;
+   n = 2;
+   #pragma omp target enter data map(sptr2[:1], sptr2->ptrset[:3])
+   #pragma omp target enter data map(sptr2->ptrset[i][:n])
+ 
+   #pragma omp target
+     if (sptr2->ptrset[1][0] != 1 || sptr2->ptrset[1][1] != 2)
+       __builtin_abort ();
+ 
+   #pragma omp target exit data map(sptr2->ptrset[i][:n])
+   #pragma omp target exit data map(sptr2[:1], sptr2->ptrset[:3])
+ 
+   __builtin_free (s2.ptrset);
+ }
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c gcc-16-20250518/libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c
*** gcc-16-20250511/libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c	Sun May 18 22:33:00 2025
***************
*** 0 ****
--- 1,49 ----
+ int
+ main ()
+ {
+   int i, n, n2;
+   int data[] = {1,2};
+   struct S {
+     int **ptrset;
+     int **ptrset2;
+   };
+ 
+   /* This is the same as target-map-zero-sized-3.c, but by mixing
+      mapped and non-mapped items, the mapping before the ATTACH
+      might (or here: is) not actually associated with the the
+      pointer used for attaching. Thus, if one does a simple
+ 
+        if (openmp_p
+ 	   && (pragma_kind & GOMP_MAP_VARS_ENTER_DATA)
+ 	   && mapnum == 1)
+      check in target.c's gomp_map_vars_internal will fail
+      as mapnum > 1 but still the map associated with this
+      ATTACH is in a different set.  */
+ 
+   struct S s1, *sptr1;
+   s1.ptrset = (int **) __builtin_malloc (sizeof(void*) * 3);
+   s1.ptrset2 = (int **) __builtin_malloc (sizeof(void*) * 3);
+   s1.ptrset[0] = data;
+   s1.ptrset[1] = data;
+   s1.ptrset[2] = data;
+   s1.ptrset2[0] = data;
+   s1.ptrset2[1] = data;
+   s1.ptrset2[2] = data;
+   sptr1 = &s1;
+ 
+   i = 1;
+   n = 0;
+   n2 = 2;
+   #pragma omp target enter data map(sptr1[:1], sptr1->ptrset[:3], sptr1->ptrset2[:3])
+   #pragma omp target enter data map(sptr1->ptrset[i][:n], sptr1->ptrset2[i][:n])
+ 
+   #pragma omp target
+     if (sptr1->ptrset2[1][0] != 1 || sptr1->ptrset2[1][1] != 2)
+       __builtin_abort ();
+ 
+   #pragma omp target exit data map(sptr1->ptrset[i][:n], sptr1->ptrset2[i][:n])
+   #pragma omp target exit data map(sptr1[:1], sptr1->ptrset[:3], sptr1->ptrset2[:3])
+ 
+   __builtin_free (s1.ptrset);
+   __builtin_free (s1.ptrset2);
+ }
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.c/target-map-zero-sized.c gcc-16-20250518/libgomp/testsuite/libgomp.c/target-map-zero-sized.c
*** gcc-16-20250511/libgomp/testsuite/libgomp.c/target-map-zero-sized.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libgomp/testsuite/libgomp.c/target-map-zero-sized.c	Sun May 18 22:33:00 2025
***************
*** 0 ****
--- 1,107 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-O0" }  */
+ 
+ /* Issue showed up in the real world when large data was distributed
+    over multiple MPI progresses - such that for one process n == 0
+    happend at run time.
+ 
+    Before  map(var[:0])  and  map(var[:n])  with n > 0 was handled,
+    this patch now also handles  map(var[:n]) with n == 0.
+ 
+    Failed before with "libgomp: pointer target not mapped for attach".  */
+ 
+ /* Here, the base address is shifted - which should have no effect,
+    but must work as well.  */
+ void
+ with_offset ()
+ {
+   struct S {
+      int *ptr1, *ptr2;
+   };
+   struct S s1, s2;
+   int *a, *b, *c, *d;
+   s1.ptr1 = (int *) 0L;
+   s1.ptr2 = (int *) 0xdeedbeef;
+   s2.ptr1 = (int *) 0L;
+   s2.ptr2 = (int *) 0xdeedbeef;
+   a = (int *) 0L;
+   b = (int *) 0xdeedbeef;
+   c = (int *) 0L;
+   d = (int *) 0xdeedbeef;
+ 
+   int n1, n2, n3, n4;
+   n1 = n2 = n3 = n4 = 0;
+ 
+   #pragma omp target enter data map(s1.ptr1[4:n1], s1.ptr2[6:n2], a[3:n3], b[2:n4])
+ 
+   #pragma omp target map(s2.ptr1[4:n1], s2.ptr2[2:n2], c[6:n3], d[9:n4])
+   {
+     if (s2.ptr1 != (void *) 0L || s2.ptr2 != (void *) 0xdeedbeef
+ 	|| c != (void *) 0L || d != (void *) 0xdeedbeef)
+       __builtin_abort ();
+   }
+ 
+   #pragma omp target map(s1.ptr1[4:n1], s1.ptr2[6:n2], a[3:n3], b[2:n4])
+   {
+     if (s1.ptr1 != (void *) 0L || s1.ptr2 != (void *) 0xdeedbeef
+ 	|| a != (void *) 0L || b != (void *) 0xdeedbeef)
+       __builtin_abort ();
+   }
+ 
+   #pragma omp target
+   {
+     if (s1.ptr1 != (void *) 0L || s1.ptr2 != (void *) 0xdeedbeef
+ 	|| a != (void *) 0L || b != (void *) 0xdeedbeef)
+       __builtin_abort ();
+   }
+ 
+   #pragma omp target exit data map(s1.ptr1[4:n1], s1.ptr2[6:n2], a[3:n3], b[2:n4])
+ }
+ 
+ int
+ main ()
+ {
+   struct S {
+      int *ptr1, *ptr2;
+   };
+   struct S s1, s2;
+   int *a, *b, *c, *d;
+   s1.ptr1 = (int *) 0L;
+   s1.ptr2 = (int *) 0xdeedbeef;
+   s2.ptr1 = (int *) 0L;
+   s2.ptr2 = (int *) 0xdeedbeef;
+   a = (int *) 0L;
+   b = (int *) 0xdeedbeef;
+   c = (int *) 0L;
+   d = (int *) 0xdeedbeef;
+ 
+   int n1, n2, n3, n4;
+   n1 = n2 = n3 = n4 = 0;
+ 
+   #pragma omp target enter data map(s1.ptr1[:n1], s1.ptr2[:n2], a[:n3], b[:n4])
+ 
+   #pragma omp target map(s2.ptr1[:n1], s2.ptr2[:n2], c[:n3], d[:n4])
+   {
+     if (s2.ptr1 != (void *) 0L || s2.ptr2 != (void *) 0xdeedbeef
+ 	|| c != (void *) 0L || d != (void *) 0xdeedbeef)
+       __builtin_abort ();
+   }
+ 
+   #pragma omp target map(s1.ptr1[:n1], s1.ptr2[:n2], a[:n3], b[:n4])
+   {
+     if (s1.ptr1 != (void *) 0L || s1.ptr2 != (void *) 0xdeedbeef
+ 	|| a != (void *) 0L || b != (void *) 0xdeedbeef)
+       __builtin_abort ();
+   }
+ 
+   #pragma omp target
+   {
+     if (s1.ptr1 != (void *) 0L || s1.ptr2 != (void *) 0xdeedbeef
+ 	|| a != (void *) 0L || b != (void *) 0xdeedbeef)
+       __builtin_abort ();
+   }
+ 
+   #pragma omp target exit data map(s1.ptr1[:n1], s1.ptr2[:n2], a[:n3], b[:n4])
+ 
+   with_offset ();
+ }
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.c++/pr119692-1-4.C gcc-16-20250518/libgomp/testsuite/libgomp.c++/pr119692-1-4.C
*** gcc-16-20250511/libgomp/testsuite/libgomp.c++/pr119692-1-4.C	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/testsuite/libgomp.c++/pr119692-1-4.C	Sun May 18 22:33:00 2025
***************
*** 3,8 ****
--- 3,11 ----
  /* { dg-additional-options -DDEFAULT=defaultmap(firstprivate) }
     Wrong code for offloading execution.
     { dg-xfail-run-if PR119692 { offload_device } } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 } ... to make sure that happens quickly.  */
  /* { dg-additional-options -fdump-tree-gimple } */
  
  #include "pr119692-1-1.C"
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.c++/pr119692-1-5.C gcc-16-20250518/libgomp/testsuite/libgomp.c++/pr119692-1-5.C
*** gcc-16-20250511/libgomp/testsuite/libgomp.c++/pr119692-1-5.C	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/testsuite/libgomp.c++/pr119692-1-5.C	Sun May 18 22:33:00 2025
***************
*** 3,8 ****
--- 3,11 ----
  /* { dg-additional-options -DDEFAULT=defaultmap(to) }
     Wrong code for offloading execution.
     { dg-xfail-run-if PR119692 { offload_device } } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 } ... to make sure that happens quickly.  */
  /* { dg-additional-options -fdump-tree-gimple } */
  
  #include "pr119692-1-1.C"
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C gcc-16-20250518/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C
*** gcc-16-20250511/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C	Sun May 18 22:33:00 2025
***************
*** 23,25 ****
--- 23,28 ----
     PR119692.
  
     { dg-shouldfail {'std::bad_cast' exception} } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 } ... to make sure that happens quickly.  */
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C gcc-16-20250518/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C
*** gcc-16-20250511/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C	Sun May 18 22:33:00 2025
***************
*** 22,24 ****
--- 22,27 ----
  
     For GCN, nvptx offload execution, there is no 'catch'ing; any exception is fatal.
     { dg-shouldfail {'MyException' exception} { offload_device } } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 } ... to make sure that happens quickly.  */
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.fortran/alloc-comp-4.f90 gcc-16-20250518/libgomp/testsuite/libgomp.fortran/alloc-comp-4.f90
*** gcc-16-20250511/libgomp/testsuite/libgomp.fortran/alloc-comp-4.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libgomp/testsuite/libgomp.fortran/alloc-comp-4.f90	Sun May 18 22:33:00 2025
***************
*** 0 ****
--- 1,75 ----
+ !
+ ! Check that mapping with map(var%tiles(1)) works.
+ !
+ ! This uses deep mapping to handle the allocatable
+ ! derived-type components
+ !
+ ! The tricky part is that GCC generates intermittently
+ ! an SSA_NAME that needs to be resolved.
+ !
+ module m
+ type t
+  integer, allocatable :: den1(:,:), den2(:,:)
+ end type t
+ 
+ type t2
+  type(t), allocatable :: tiles(:)
+ end type t2
+ end
+ 
+ use m
+ use iso_c_binding
+ implicit none (type, external)
+ type(t2), target :: var
+ logical :: is_self_map
+ type(C_ptr) :: pden1, pden2, ptiles, ptiles1
+ 
+ allocate(var%tiles(1))
+ var%tiles(1)%den1 = reshape([1,2,3,4],[2,2])
+ var%tiles(1)%den2 = reshape([11,22,33,44],[2,2])
+ 
+ ptiles = c_loc(var%tiles)
+ ptiles1 = c_loc(var%tiles(1))
+ pden1 = c_loc(var%tiles(1)%den1)
+ pden2 = c_loc(var%tiles(1)%den2)
+ 
+ 
+ is_self_map = .false.
+ !$omp target map(to: is_self_map)
+   is_self_map = .true.
+ !$omp end target
+ 
+ !$omp target enter data map(var%tiles(1))
+ 
+ !$omp target firstprivate(ptiles, ptiles1, pden1, pden2)
+  if (any (var%tiles(1)%den1 /= reshape([1,2,3,4],[2,2]))) stop 1
+  if (any (var%tiles(1)%den2 /= reshape([11,22,33,44],[2,2]))) stop 2
+  var%tiles(1)%den1 = var%tiles(1)%den1 + 5
+  var%tiles(1)%den2 = var%tiles(1)%den2 + 7
+ 
+  if (is_self_map) then
+    if (.not. c_associated (ptiles, c_loc(var%tiles))) stop 3
+    if (.not. c_associated (ptiles1, c_loc(var%tiles(1)))) stop 4
+    if (.not. c_associated (pden1, c_loc(var%tiles(1)%den1))) stop 5
+    if (.not. c_associated (pden2, c_loc(var%tiles(1)%den2))) stop 6
+  else
+    if (c_associated (ptiles, c_loc(var%tiles))) stop 3
+    if (c_associated (ptiles1, c_loc(var%tiles(1)))) stop 4
+    if (c_associated (pden1, c_loc(var%tiles(1)%den1))) stop 5
+    if (c_associated (pden2, c_loc(var%tiles(1)%den2))) stop 6
+  endif
+ !$omp end target
+ 
+ if (is_self_map) then
+   if (any (var%tiles(1)%den1 /= 5 + reshape([1,2,3,4],[2,2]))) stop 7
+   if (any (var%tiles(1)%den2 /= 7 + reshape([11,22,33,44],[2,2]))) stop 8
+ else
+   if (any (var%tiles(1)%den1 /= reshape([1,2,3,4],[2,2]))) stop 7
+   if (any (var%tiles(1)%den2 /= reshape([11,22,33,44],[2,2]))) stop 8
+ endif
+ 
+ !$omp target exit data map(var%tiles(1))
+ 
+ if (any (var%tiles(1)%den1 /= 5 + reshape([1,2,3,4],[2,2]))) stop 7
+ if (any (var%tiles(1)%den2 /= 7 + reshape([11,22,33,44],[2,2]))) stop 8
+ end
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C gcc-16-20250518/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C
*** gcc-16-20250511/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C	Sun May 18 22:33:00 2025
*************** int main()
*** 52,54 ****
--- 52,57 ----
     PR119692.
  
     { dg-shouldfail {'std::bad_cast' exception} } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 } ... to make sure that happens quickly.  */
diff -Nrcpad gcc-16-20250511/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C gcc-16-20250518/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C
*** gcc-16-20250511/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C	Sun May 18 22:33:00 2025
*************** int main()
*** 58,60 ****
--- 58,63 ----
  
     For GCN, nvptx offload execution, there is no 'catch'ing; any exception is fatal.
     { dg-shouldfail {'std::bad_cast' exception} { ! openacc_host_selected } } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 } ... to make sure that happens quickly.  */
diff -Nrcpad gcc-16-20250511/libiberty/ChangeLog gcc-16-20250518/libiberty/ChangeLog
*** gcc-16-20250511/libiberty/ChangeLog	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libiberty/ChangeLog	Sun May 18 22:33:00 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-05-13  Andreas Schwab  <schwab@suse.de>
+ 
+ 	* regex.c (regex_compile): Don't write beyond array bounds when
+ 	collecting range expression.
+ 
  2025-03-29  Iain Sandoe  <iain@sandoe.co.uk>
  
  	PR cobol/119283
diff -Nrcpad gcc-16-20250511/libiberty/regex.c gcc-16-20250518/libiberty/regex.c
*** gcc-16-20250511/libiberty/regex.c	Sun May 11 22:32:42 2025
--- gcc-16-20250518/libiberty/regex.c	Sun May 18 22:33:01 2025
*************** PREFIX(regex_compile) (const char *ARG_P
*** 3468,3474 ****
  			PATFETCH (c);
  			if ((c == '.' && *p == ']') || p == pend)
  			  break;
! 			if (c1 < sizeof (str))
  			  str[c1++] = c;
  			else
  			  /* This is in any case an invalid class name.  */
--- 3468,3474 ----
  			PATFETCH (c);
  			if ((c == '.' && *p == ']') || p == pend)
  			  break;
! 			if (c1 < sizeof (str) - 1)
  			  str[c1++] = c;
  			else
  			  /* This is in any case an invalid class name.  */
diff -Nrcpad gcc-16-20250511/libstdc++-v3/ChangeLog gcc-16-20250518/libstdc++-v3/ChangeLog
*** gcc-16-20250511/libstdc++-v3/ChangeLog	Sun May 11 22:32:43 2025
--- gcc-16-20250518/libstdc++-v3/ChangeLog	Sun May 18 22:33:02 2025
***************
*** 1,3 ****
--- 1,239 ----
+ 2025-05-16  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/type_traits (__is_invocable): Define in terms of
+ 	corresponding builtin if available.
+ 	(__is_nothrow_invocable): Likewise.
+ 	(is_invocable_v): Likewise.
+ 	(is_nothrow_invocable_v): Likewise.
+ 
+ 2025-05-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/65909
+ 	* testsuite/lib/libstdc++.exp (check_v3_target_namedlocale):
+ 	Change name of formal argument to locale.
+ 
+ 2025-05-15  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan: Implement the mandate for extents as
+ 	signed or unsigned integer and not any interal type. Remove
+ 	leading underscores from names in static_assert message.
+ 	* testsuite/23_containers/mdspan/extents/class_mandates_neg.cc:
+ 	Check that extents<char,...> and extents<bool,...> are invalid.
+ 	Adjust dg-prune-output pattern.
+ 	* testsuite/23_containers/mdspan/extents/misc.cc: Update
+ 	tests to avoid `char` and `bool` as IndexType.
+ 
+ 2025-05-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120190
+ 	* include/std/format (format_kind): Adjust primary template to
+ 	not depend on itself.
+ 	* testsuite/std/format/ranges/format_kind_neg.cc: Adjust
+ 	expected errors. Check more invalid specializations.
+ 
+ 2025-05-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/complex (arg(T)): Use __builtin_signbit instead of
+ 	std::signbit.
+ 
+ 2025-05-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120235
+ 	* doc/html/*: Regenerate.
+ 	* doc/xml/manual/evolution.xml: Document deprecation.
+ 	* include/std/complex: Replace references to TR1 subclauses with
+ 	corresponding C++11 subclauses.
+ 	(fabs): Add deprecated attribute.
+ 	* testsuite/26_numerics/complex/fabs_neg.cc: New test.
+ 
+ 2025-05-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* testsuite/lib/libstdc++.exp: Add -Wabi.
+ 
+ 2025-05-15  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/119246
+ 	* include/std/format: Updated check for _GLIBCXX_FORMAT_F128.
+ 
+ 2025-05-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/119125
+ 	* include/bits/move_only_function.h: Move to...
+ 	* include/bits/funcwrap.h: ...here.
+ 	* doc/doxygen/stdheader.cc (init_map): Replaced move_only_function.h
+ 	with funcwrap.h, and changed include guard to use feature test macro.
+ 	Move bits/version.h include before others.
+ 	* include/Makefile.am: Likewise.
+ 	* include/Makefile.in: Likewise.
+ 	* include/std/functional: Likewise.
+ 
+ 2025-05-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/119125
+ 	* doc/doxygen/stdheader.cc: Addded cpyfunc_impl.h header.
+ 	* include/Makefile.am: Add bits cpyfunc_impl.h.
+ 	* include/Makefile.in: Add bits cpyfunc_impl.h.
+ 	* include/bits/cpyfunc_impl.h: New file.
+ 	* include/bits/mofunc_impl.h: Mention LWG 4255.
+ 	* include/bits/move_only_function.h: Update header description
+ 	and change guard to also check __glibcxx_copyable_function.
+ 	(_Manager::_Func): Remove noexcept.
+ 	(std::__is_polymorphic_function_v<move_only_function<_Tp>>)
+ 	(__variant::_Never_valueless_alt<std::move_only_function<_Signature...>>)
+ 	(move_only_function) [__glibcxx_move_only_function]: Adjust guard.
+ 	(std::__is_polymorphic_function_v<copyable_function<_Tp>>)
+ 	(__variant::_Never_valueless_alt<std::copyable_function<_Signature...>>)
+ 	(__polyfunc::_Cpy_base, std::copyable_function)
+ 	[__glibcxx_copyable_function]: Define.
+ 	* include/bits/version.def: Define copyable_function.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/functional: Define __cpp_lib_copyable_function.
+ 	* src/c++23/std.cc.in (copyable_function)
+ 	[__cpp_lib_copyable_function]: Export.
+ 	* testsuite/20_util/copyable_function/call.cc: New test based on
+ 	move_only_function tests.
+ 	* testsuite/20_util/copyable_function/cons.cc: New test based on
+ 	move_only_function tests.
+ 	* testsuite/20_util/copyable_function/conv.cc: New test based on
+ 	move_only_function tests.
+ 	* testsuite/20_util/copyable_function/copy.cc: New test.
+ 	* testsuite/20_util/copyable_function/move.cc: New test based on
+ 	move_only_function tests.
+ 
+ 2025-05-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/119125
+ 	* include/bits/mofunc_impl.h: (std::move_only_function): Adjusted for
+ 	changes in bits/move_only_function.h
+ 	(move_only_function::move_only_function(_Fn&&)): Special case
+ 	move_only_functions with same invoker.
+ 	(move_only_function::operator=(move_only_function&&)): Handle self
+ 	assigment.
+ 	* include/bits/move_only_function.h (__polyfunc::_Ptrs)
+ 	(__polyfunc::_Storage): Refactored from _Mo_func::_Storage.
+ 	(__polyfunc::__param_t): Moved from move_only_function::__param_t.
+ 	(__polyfunc::_Base_invoker, __polyfunc::_Invoke): Refactored from
+ 	move_only_function::_S_invoke.
+ 	(__polyfunc::_Manager): Refactored from _Mo_func::_S_manager.
+ 	(std::_Mofunc_base): Moved into __polyfunc::_Mo_base with parts
+ 	extracted to __polyfunc::_Storage and __polyfunc::_Manager.
+ 	(__polyfunc::__deref_as, __polyfunc::__invoker_of)
+ 	(__polyfunc::__base_of, __polyfunc::__is_invoker_convertible): Define.
+ 	(std::__is_move_only_function_v): Renamed to
+ 	__is_polymorphic_function_v.
+ 	(std::__is_polymorphic_function_v): Renamed from
+ 	__is_move_only_function_v.
+ 	* testsuite/20_util/move_only_function/call.cc: Test for
+ 	functions pointers.
+ 	* testsuite/20_util/move_only_function/conv.cc: New test.
+ 	* testsuite/20_util/move_only_function/move.cc: Tests for
+ 	self assigment.
+ 
+ 2025-05-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/119246
+ 	* include/std/format (__format::__bflt16_t): Define.
+ 	(_GLIBCXX_FORMAT_F128): Separate value for cases where _Float128
+ 	is used.
+ 	(__format::__float128_t): Renamed to __format::__flt128_t.
+ 	(std::formatter<_Float128, _CharT>): Define always if there is
+ 	formattable 128bit float.
+ 	(std::formatter<__float128, _CharT>): Define.
+ 	(_Arg_type::_Arg_f128): Rename to _Arg_float128 and adjust value.
+ 	(_Arg_type::_Arg_ibm128): Change value to _Arg_ldbl.
+ 	(_Arg_type::_Arg_ieee128): Define as alias to _Arg_float128.
+ 	(_Arg_value::_M_f128): Replaced with _M_ieee128 and _M_float128.
+ 	(_Arg_value::_M_ieee128, _Arg_value::_M_float128)
+ 	(_Arg_value::_M_bf16, _Arg_value::_M_f16, _Arg_value::_M_f32)
+ 	(_Arg_value::_M_f64): Define.
+ 	(_Arg_value::_S_get, basic_format_arg::_S_to_enum): Handle __bflt16,
+ 	_Float16, _Float32, _Float64, and __float128 types.
+ 	(basic_format_arg::_S_to_arg_type): Preserve _bflt16, _Float16,
+ 	_Float32, _Float64 and __float128 types.
+ 	(basic_format_arg::_M_visit): Handle _Arg_float128, _Arg_ieee128,
+ 	_Arg_b16, _Arg_f16, _Arg_f32, _Arg_f64.
+ 	* testsuite/std/format/arguments/args.cc: Updated to illustrate
+ 	that extended floating point types use handles now. Added test
+ 	for __float128.
+ 	* testsuite/std/format/parse_ctx.cc: Extended test to cover class
+ 	to check_dynamic_spec with floating point types and handles.
+ 
+ 2025-05-14  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	* include/std/utility (to_underlying): Add the __always_inline__ attribute.
+ 
+ 2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/119645
+ 	* configure.host [GCN, nvptx] (atomicity_dir): Don't set.
+ 
+ 2025-05-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/119714
+ 	PR libstdc++/112490
+ 	* include/std/expected (expected::operator==): Replace
+ 	non-dependent std::expected function parameter with a dependent
+ 	one of type expected<_Vp, _Er> where _Vp matches _Tp.
+ 	* testsuite/20_util/expected/119714.cc: New test.
+ 
+ 2025-05-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120187
+ 	* include/c_global/ciso646: Only give deprecated warning for
+ 	C++20 and later.
+ 	* include/c_global/ccomplex: Add @since to Doxygen comment.
+ 	* include/c_global/cstdalign: Likewise.
+ 	* include/c_global/cstdbool: Likewise.
+ 	* include/c_global/ctgmath: Likewise.
+ 	* testsuite/18_support/headers/ciso646/macros.cc: Remove
+ 	dg-warning for c++17_only effective target.
+ 	* testsuite/18_support/headers/ciso646/macros-2.cc: New test.
+ 
+ 2025-05-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx2023.xml: Update status of proposals
+ 	implemented after GCC 14.2 release.
+ 	* doc/html/manual/status.html: Regenerate.
+ 
+ 2025-05-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120198
+ 	* include/bits/version.def (scoped_lock): Do not depend on
+ 	gthreads or hosted.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/mutex (scoped_lock): Update comment.
+ 	* testsuite/30_threads/scoped_lock/requirements/typedefs.cc:
+ 	Remove dg-require-gthreads and use custom lockable type instead
+ 	of std::mutex. Check that typedef is only present for a single
+ 	template argument.
+ 
+ 2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR libstdc++/70560
+ 	PR libstdc++/119667
+ 	* acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Use '__SIZE_TYPE__'
+ 	instead of 'size_t'.
+ 	* configure: Regenerate.
+ 
+ 2025-05-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/118260
+ 	* python/hook.in: Suppress output from gdb.execute calls to
+ 	register skips.
+ 
+ 2025-05-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx2017.xml: Update status for
+ 	std::to_chars and std::from_chars.
+ 	* doc/html/manual/*: Regenerate.
+ 
+ 2025-05-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/65909
+ 	* testsuite/lib/libstdc++.exp (check_v3_target_namedlocale):
+ 	Hardcode the locale name instead of passing it to the
+ 	executable. Do not hardcode buffer size for string.
+ 
  2025-05-10  Alexandre Oliva  <oliva@adacore.com>
  
  	* src/c++23/print.cc [__VXWORKS__]: Include ioLib.h.
diff -Nrcpad gcc-16-20250511/libstdc++-v3/acinclude.m4 gcc-16-20250518/libstdc++-v3/acinclude.m4
*** gcc-16-20250511/libstdc++-v3/acinclude.m4	Sun May 11 22:32:43 2025
--- gcc-16-20250518/libstdc++-v3/acinclude.m4	Sun May 18 22:33:02 2025
*************** AC_DEFUN([GLIBCXX_ENABLE_BACKTRACE], [
*** 5304,5310 ****
  	[AC_TRY_LINK([], [
  	    int i = 0;
  	    int* p = &i;
! 	    size_t s = 0;
  	    // backtrace_atomic_load_pointer
  	    void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
  	    // backtrace_atomic_load_int
--- 5304,5310 ----
  	[AC_TRY_LINK([], [
  	    int i = 0;
  	    int* p = &i;
! 	    __SIZE_TYPE__ s = 0;
  	    // backtrace_atomic_load_pointer
  	    void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
  	    // backtrace_atomic_load_int
*************** int main()
*** 5331,5337 ****
  {
    int i = 0;
    int* p = &i;
!   size_t s = 0;
    // backtrace_atomic_load_pointer
    void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
    // backtrace_atomic_load_int
--- 5331,5337 ----
  {
    int i = 0;
    int* p = &i;
!   __SIZE_TYPE__ s = 0;
    // backtrace_atomic_load_pointer
    void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
    // backtrace_atomic_load_int
diff -Nrcpad gcc-16-20250511/libstdc++-v3/configure gcc-16-20250518/libstdc++-v3/configure
*** gcc-16-20250511/libstdc++-v3/configure	Sun May 11 22:32:52 2025
--- gcc-16-20250518/libstdc++-v3/configure	Sun May 18 22:33:02 2025
*************** main ()
*** 53568,53574 ****
  
  	    int i = 0;
  	    int* p = &i;
! 	    size_t s = 0;
  	    // backtrace_atomic_load_pointer
  	    void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
  	    // backtrace_atomic_load_int
--- 53568,53574 ----
  
  	    int i = 0;
  	    int* p = &i;
! 	    __SIZE_TYPE__ s = 0;
  	    // backtrace_atomic_load_pointer
  	    void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
  	    // backtrace_atomic_load_int
*************** int main()
*** 53607,53613 ****
  {
    int i = 0;
    int* p = &i;
!   size_t s = 0;
    // backtrace_atomic_load_pointer
    void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
    // backtrace_atomic_load_int
--- 53607,53613 ----
  {
    int i = 0;
    int* p = &i;
!   __SIZE_TYPE__ s = 0;
    // backtrace_atomic_load_pointer
    void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
    // backtrace_atomic_load_int
diff -Nrcpad gcc-16-20250511/libstdc++-v3/configure.host gcc-16-20250518/libstdc++-v3/configure.host
*** gcc-16-20250511/libstdc++-v3/configure.host	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/configure.host	Sun May 18 22:33:02 2025
*************** case "${host}" in
*** 370,390 ****
  	;;
      esac
      ;;
-   amdgcn-*-amdhsa)
-     # To avoid greater pain elsewhere, force use of '__atomic' builtins,
-     # regardless of the outcome of 'configure' checks; see PR119645
-     # "GCN, nvptx: libstdc++ 'checking for atomic builtins [...]... no'".
-     atomicity_dir=cpu/generic/atomicity_builtins
-     ;;
    arm*-*-freebsd*)
       port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
       ;;
    nvptx-*-none)
-     # To avoid greater pain elsewhere, force use of '__atomic' builtins,
-     # regardless of the outcome of 'configure' checks; see PR119645
-     # "GCN, nvptx: libstdc++ 'checking for atomic builtins [...]... no'".
-     atomicity_dir=cpu/generic/atomicity_builtins
- 
      # For 'make all-target-libstdc++-v3', re 'alloca'/VLA usage:
      EXTRA_CFLAGS="${EXTRA_CFLAGS} -mfake-ptx-alloca"
      OPTIMIZE_CXXFLAGS="${OPTIMIZE_CXXFLAGS} -mfake-ptx-alloca"
--- 370,379 ----
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/doxygen/stdheader.cc gcc-16-20250518/libstdc++-v3/doc/doxygen/stdheader.cc
*** gcc-16-20250511/libstdc++-v3/doc/doxygen/stdheader.cc	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/doxygen/stdheader.cc	Sun May 18 22:33:02 2025
*************** void init_map()
*** 54,60 ****
      headers["function.h"]               = "functional";
      headers["functional_hash.h"]        = "functional";
      headers["mofunc_impl.h"]            = "functional";
!     headers["move_only_function.h"]     = "functional";
      headers["invoke.h"]                 = "functional";
      headers["ranges_cmp.h"]             = "functional";
      headers["refwrap.h"]                = "functional";
--- 54,61 ----
      headers["function.h"]               = "functional";
      headers["functional_hash.h"]        = "functional";
      headers["mofunc_impl.h"]            = "functional";
!     headers["cpyfunc_impl.h"]           = "functional";
!     headers["funcwrap.h"]               = "functional";
      headers["invoke.h"]                 = "functional";
      headers["ranges_cmp.h"]             = "functional";
      headers["refwrap.h"]                = "functional";
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/html/index.html gcc-16-20250518/libstdc++-v3/doc/html/index.html
*** gcc-16-20250511/libstdc++-v3/doc/html/index.html	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/html/index.html	Sun May 18 22:33:03 2025
***************
*** 142,148 ****
      Existing tests
  </a></span></dt><dt><span class="section"><a href="manual/test.html#test.exception.safety.containers">
  C++11 Requirements Test Sequence Descriptions
! </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_151"><code class="constant">15</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
  </a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.streamattach">
  No <code class="code">stream::attach(int fd)</code>
  </a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.support_cxx98">
--- 142,148 ----
      Existing tests
  </a></span></dt><dt><span class="section"><a href="manual/test.html#test.exception.safety.containers">
  C++11 Requirements Test Sequence Descriptions
! </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="manual/abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="manual/abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="manual/api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="manual/api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="manual/backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
  </a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.streamattach">
  No <code class="code">stream::attach(int fd)</code>
  </a></span></dt><dt><span class="section"><a href="manual/backwards.html#backwards.third.support_cxx98">
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/html/manual/api.html gcc-16-20250518/libstdc++-v3/doc/html/manual/api.html
*** gcc-16-20250511/libstdc++-v3/doc/html/manual/api.html	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/html/manual/api.html	Sun May 18 22:33:03 2025
*************** to provide the symbols for the experimen
*** 490,496 ****
  Symbols for the Filesystem TS and C++23 <code class="filename">&lt;stacktrace&gt;</code>
  header were added to the static library <code class="filename">libstdc++exp.a</code>.
  </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_141"></a><code class="constant">14</code></h3></div></div></div><p>
! Deprecate the non-standard overload that allows <code class="code">std::setfill</code>
  to be used with <code class="code">std::basic_istream</code>.
  </p><p>
    The extension allowing <code class="code">std::basic_string</code> to be instantiated
--- 490,496 ----
  Symbols for the Filesystem TS and C++23 <code class="filename">&lt;stacktrace&gt;</code>
  header were added to the static library <code class="filename">libstdc++exp.a</code>.
  </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_141"></a><code class="constant">14</code></h3></div></div></div><p>
! Deprecated the non-standard overload that allows <code class="code">std::setfill</code>
  to be used with <code class="code">std::basic_istream</code>.
  </p><p>
    The extension allowing <code class="code">std::basic_string</code> to be instantiated
*************** and removed in C++20:
*** 509,512 ****
--- 509,515 ----
  </p><p>
  Nested <code class="code">result_type</code> and <code class="code">argument_type</code> removed from
  <code class="classname">std::hash</code> specializations for C++20.
+ </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_16"></a><code class="constant">16</code></h3></div></div></div><p>
+ Deprecated the non-standard overload of <code class="code">std::fabs</code> for
+ <code class="code">std::complex</code> arguments.
  </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="abi.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="backwards.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ABI Policy and Guidelines </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Backwards Compatibility</td></tr></table></div></body></html>
\ No newline at end of file
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/html/manual/appendix.html gcc-16-20250518/libstdc++-v3/doc/html/manual/appendix.html
*** gcc-16-20250511/libstdc++-v3/doc/html/manual/appendix.html	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/html/manual/appendix.html	Sun May 18 22:33:03 2025
***************
*** 16,22 ****
      Existing tests
  </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
  C++11 Requirements Test Sequence Descriptions
! </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach">
  No <code class="code">stream::attach(int fd)</code>
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98">
--- 16,22 ----
      Existing tests
  </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
  C++11 Requirements Test Sequence Descriptions
! </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach">
  No <code class="code">stream::attach(int fd)</code>
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98">
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/html/manual/appendix_porting.html gcc-16-20250518/libstdc++-v3/doc/html/manual/appendix_porting.html
*** gcc-16-20250511/libstdc++-v3/doc/html/manual/appendix_porting.html	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/html/manual/appendix_porting.html	Sun May 18 22:33:03 2025
***************
*** 14,20 ****
      Existing tests
  </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
  C++11 Requirements Test Sequence Descriptions
! </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach">
  No <code class="code">stream::attach(int fd)</code>
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98">
--- 14,20 ----
      Existing tests
  </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
  C++11 Requirements Test Sequence Descriptions
! </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach">
  No <code class="code">stream::attach(int fd)</code>
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98">
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/html/manual/index.html gcc-16-20250518/libstdc++-v3/doc/html/manual/index.html
*** gcc-16-20250511/libstdc++-v3/doc/html/manual/index.html	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/html/manual/index.html	Sun May 18 22:33:03 2025
***************
*** 123,129 ****
      Existing tests
  </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
  C++11 Requirements Test Sequence Descriptions
! </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach">
  No <code class="code">stream::attach(int fd)</code>
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98">
--- 123,129 ----
      Existing tests
  </a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
  C++11 Requirements Test Sequence Descriptions
! </a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_72"><code class="constant">7.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_91"><code class="constant">9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_101"><code class="constant">10</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_111"><code class="constant">11</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_121"><code class="constant">12</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_123"><code class="constant">12.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_131"><code class="constant">13</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_133"><code class="constant">13.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_141"><code class="constant">14</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_151"><code class="constant">15</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_16"><code class="constant">16</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.third.headers">Pre-ISO headers removed</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.hash">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.nocreate_noreplace">No <code class="code">ios::nocreate/ios::noreplace</code>.
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.streamattach">
  No <code class="code">stream::attach(int fd)</code>
  </a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third.support_cxx98">
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/html/manual/source_code_style.html gcc-16-20250518/libstdc++-v3/doc/html/manual/source_code_style.html
*** gcc-16-20250511/libstdc++-v3/doc/html/manual/source_code_style.html	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/html/manual/source_code_style.html	Sun May 18 22:33:03 2025
***************
*** 474,480 ****
  <br />
        Examples:  <code class="code">_M_num_elements  _M_initialize ()</code><br />
  <br />
!       Static data members, constants, and enumerations: <code class="literal">_S_.*</code><br />
  <br />
        Examples: <code class="code">_S_max_elements  _S_default_value</code><br />
  <br />
--- 474,480 ----
  <br />
        Examples:  <code class="code">_M_num_elements  _M_initialize ()</code><br />
  <br />
!       Static data and function members, constants, and enumerations: <code class="literal">_S_.*</code><br />
  <br />
        Examples: <code class="code">_S_max_elements  _S_default_value</code><br />
  <br />
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/html/manual/status.html gcc-16-20250518/libstdc++-v3/doc/html/manual/status.html
*** gcc-16-20250511/libstdc++-v3/doc/html/manual/status.html	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/html/manual/status.html	Sun May 18 22:33:03 2025
*************** since C++14 and the implementation is co
*** 927,933 ****
  	<span class="emphasis"><em>23</em></span>
        </td><td colspan="3" align="left">
  	<span class="emphasis"><em>General utilities</em></span>
!       </td></tr><tr><td align="left">23.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2</td><td align="left">Utility components</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1</td><td align="left">Header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.2</td><td align="left">Operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.3</td><td align="left"><code class="code">swap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.4</td><td align="left"><code class="code">exchange</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.5</td><td align="left">Forward/move helpers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.6</td><td align="left">Function template <code class="code">as_const</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.7</td><td align="left">Function template <code class="code">declval</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.8</td><td align="left">Primitive numeric output conversion</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">23.2.9</td><td align="left">Primitive numeric input conversion</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">23.3</td><td align="left">Compile-time integer sequences</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Pairs</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5</td><td align="left">Tuples</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.6</td><td align="left">Optional objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.7</td><td align="left">Variants</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.8</td><td align="left">Storage for any type</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.9</td><td align="left">Bitsets</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10</td><td align="left">Memory</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.10.2</td><td align="left">Header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.3</td><td align="left">Pointer traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.4</td><td align="left">Pointer safety</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.5</td><td align="left">Align</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.6</td><td align="left">Allocator argument tag</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.7</td><td align="left"><code class="code">uses_allocator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.8</td><td align="left">Allocator traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.9</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.10</td><td align="left">Specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.11</td><td align="left">C library memory allocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.11</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.11.1</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.11.2</td><td align="left">Shared-ownership pointers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12</td><td align="left">Memory resources</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.12.1</td><td align="left">Header <code class="code">&lt;memory_resource&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.2</td><td align="left">Class <code class="code">memory_resource</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.3</td><td align="left">Class template <code class="code">polymorphic_allocator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.4</td><td align="left">Access to program-wide <code class="code">memory_resource</code> objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.5</td><td align="left">Pool resource classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.6</td><td align="left">Class <code class="code">monotonic_buffer_resource</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.13</td><td align="left">Class template <code class="code">scoped_allocator_adaptor</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.1</td><td align="left">Header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.2</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.3</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.4</td><td align="left">Function template <code class="code">invoke</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.6</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.7</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.8</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.9</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.10</td><td align="left">Function template <code class="code">not_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.11</td><td align="left">Function object binders</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.12</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.13</td><td align="left">Polymorphic function wrappers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.14</td><td align="left">Searchers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.15</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15</td><td align="left">Metaprogramming and type traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.15.1</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.15.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.7</td><td align="left">Transformations between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.8</td><td align="left">Logical operator traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.16</td><td align="left">Compile-time rational arithmetic</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17.2</td><td align="left">Header <code class="code">&lt;chrono&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.4</td><td align="left">Time-related traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.7</td><td align="left">Clocks</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.8</td><td align="left">Header <code class="code">&lt;ctime&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.18</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19</td><td align="left">Execution policies</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.2</td><td align="left">Header <code class="code">&lt;execution&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.3</td><td align="left">Execution policy type trait</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.4</td><td align="left">Sequenced execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.5</td><td align="left">Parallel execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.6</td><td align="left">Parallel and unsequenced execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.7</td><td align="left">Execution policy objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
  	<span class="emphasis"><em>24</em></span>
        </td><td colspan="3" align="left">
  	<span class="emphasis"><em>Strings</em></span>
--- 927,948 ----
  	<span class="emphasis"><em>23</em></span>
        </td><td colspan="3" align="left">
  	<span class="emphasis"><em>General utilities</em></span>
!       </td></tr><tr><td align="left">23.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2</td><td align="left">Utility components</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1</td><td align="left">Header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.2</td><td align="left">Operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.3</td><td align="left"><code class="code">swap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.4</td><td align="left"><code class="code">exchange</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.5</td><td align="left">Forward/move helpers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.6</td><td align="left">Function template <code class="code">as_const</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.7</td><td align="left">Function template <code class="code">declval</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.8</td><td align="left">Primitive numeric output conversion</td><td align="left">Y</td><td align="left">
! 	Floating-point types up to 64-bit are formatted using
! 	<a class="link" href="https://github.com/ulfjack/ryu" target="_top">Ryu</a>.
! 	Types with greater precision are formatted using the C library
! 	(<code class="function">sprintf</code> and conditionally
! 	<code class="function">strfromf128</code>).
! 	For powerpc64le-unknown-linux-gnu <code class="function">__sprintfieee128</code>
! 	must be provided by Glibc.
!       </td></tr><tr><td align="left">23.2.9</td><td align="left">Primitive numeric input conversion</td><td align="left">Y</td><td align="left">
! 	Floating-point types up to 64-bit are parsed using
! 	<a class="link" href="https://github.com/fastfloat/fast_float" target="_top">fast_float</a>.
! 	Types with greater precision are parsed using the C library
! 	(<code class="function">strtold</code>).
! 	For powerpc64le-unknown-linux-gnu <code class="function">__strtoieee128</code>
! 	must be provided by Glibc.
!       </td></tr><tr><td align="left">23.3</td><td align="left">Compile-time integer sequences</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Pairs</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5</td><td align="left">Tuples</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.6</td><td align="left">Optional objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.7</td><td align="left">Variants</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.8</td><td align="left">Storage for any type</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.9</td><td align="left">Bitsets</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10</td><td align="left">Memory</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.10.2</td><td align="left">Header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.3</td><td align="left">Pointer traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.4</td><td align="left">Pointer safety</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.5</td><td align="left">Align</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.6</td><td align="left">Allocator argument tag</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.7</td><td align="left"><code class="code">uses_allocator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.8</td><td align="left">Allocator traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.9</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.10</td><td align="left">Specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.11</td><td align="left">C library memory allocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.11</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.11.1</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.11.2</td><td align="left">Shared-ownership pointers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12</td><td align="left">Memory resources</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.12.1</td><td align="left">Header <code class="code">&lt;memory_resource&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.2</td><td align="left">Class <code class="code">memory_resource</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.3</td><td align="left">Class template <code class="code">polymorphic_allocator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.4</td><td align="left">Access to program-wide <code class="code">memory_resource</code> objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.5</td><td align="left">Pool resource classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.6</td><td align="left">Class <code class="code">monotonic_buffer_resource</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.13</td><td align="left">Class template <code class="code">scoped_allocator_adaptor</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.1</td><td align="left">Header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.2</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.3</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.4</td><td align="left">Function template <code class="code">invoke</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.6</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.7</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.8</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.9</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.10</td><td align="left">Function template <code class="code">not_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.11</td><td align="left">Function object binders</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.12</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.13</td><td align="left">Polymorphic function wrappers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.14</td><td align="left">Searchers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.15</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15</td><td align="left">Metaprogramming and type traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.15.1</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.15.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.7</td><td align="left">Transformations between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.8</td><td align="left">Logical operator traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.16</td><td align="left">Compile-time rational arithmetic</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17.2</td><td align="left">Header <code class="code">&lt;chrono&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.4</td><td align="left">Time-related traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.7</td><td align="left">Clocks</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.8</td><td align="left">Header <code class="code">&lt;ctime&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.18</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19</td><td align="left">Execution policies</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.2</td><td align="left">Header <code class="code">&lt;execution&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.3</td><td align="left">Execution policy type trait</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.4</td><td align="left">Sequenced execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.5</td><td align="left">Parallel execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.6</td><td align="left">Parallel and unsequenced execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.7</td><td align="left">Execution policy objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
  	<span class="emphasis"><em>24</em></span>
        </td><td colspan="3" align="left">
  	<span class="emphasis"><em>Strings</em></span>
*************** or any notes about the implementation.
*** 1832,1844 ****
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2278r4.html" target="_top">
          P2278R4
          </a>
!       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_as_const &gt;= 202207L</code> </td></tr><tr bgcolor="#B0B0B0"><td align="left"> <code class="code">ranges::to</code> </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf" target="_top">
          P1206R7
          </a>
!       </td><td align="center"> 14.1 (<code class="code">ranges::to</code> function) </td><td align="left">
! 	<code class="code">__cpp_lib_containers_ranges &gt;= 202202L</code>,
! 	<code class="code">__cpp_lib_ranges_to_container &gt;= 202202L</code>
        </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Ranges iterators as inputs to non-Ranges algorithms </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2408r5.html" target="_top">
          P2408R5
--- 1847,1861 ----
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2278r4.html" target="_top">
          P2278R4
          </a>
!       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_as_const &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">ranges::to</code> </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf" target="_top">
          P1206R7
          </a>
!       </td><td align="center">
! 	<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 14.1 (<code class="code">ranges::to</code> function) </td></tr><tr><td> 15.1 (new members in containers) </td></tr></tbody></table></div>
!       </td><td align="left">
! 	<code class="code">__cpp_lib_ranges_to_container &gt;= 202202L</code>,
! 	<code class="code">__cpp_lib_containers_ranges &gt;= 202202L</code>
        </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Ranges iterators as inputs to non-Ranges algorithms </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2408r5.html" target="_top">
          P2408R5
*************** or any notes about the implementation.
*** 1878,1888 ****
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2322r6.html" target="_top">
          P2322R6
          </a>
!       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_fold &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Relaxing Ranges Just A Smidge</td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2609r3.html" target="_top">
          P2609R3
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_ranges &gt;= 202302L</code> </td></tr><tr><td colspan="4" align="left">
          <span class="bold"><strong>Compile-time programming</strong></span>
        </td></tr><tr><td align="left"> A proposal for a type trait to detect scoped enumerations </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1048r1.pdf" target="_top">
--- 1895,1905 ----
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2322r6.html" target="_top">
          P2322R6
          </a>
!       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_fold &gt;= 202207L</code> </td></tr><tr><td align="left"> Relaxing Ranges Just A Smidge</td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2609r3.html" target="_top">
          P2609R3
          </a>
!       </td><td align="center"> 14.3 </td><td align="left"> <code class="code">__cpp_lib_ranges &gt;= 202302L</code> </td></tr><tr><td colspan="4" align="left">
          <span class="bold"><strong>Compile-time programming</strong></span>
        </td></tr><tr><td align="left"> A proposal for a type trait to detect scoped enumerations </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1048r1.pdf" target="_top">
*************** or any notes about the implementation.
*** 1912,1922 ****
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0533r9.pdf" target="_top">
          P0533R9
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_constexpr_cmath &gt;= 202202L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate std::aligned_storage and std::aligned_union </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf" target="_top">
          P1413R3
          </a>
!       </td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> A type trait to detect reference binding to temporary </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2255r2.html" target="_top">
          P2255R2
          </a>
--- 1929,1939 ----
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0533r9.pdf" target="_top">
          P0533R9
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_constexpr_cmath &gt;= 202202L</code> </td></tr><tr><td align="left"> Deprecate std::aligned_storage and std::aligned_union </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf" target="_top">
          P1413R3
          </a>
!       </td><td align="center"> 13.1 </td><td align="left"> </td></tr><tr><td align="left"> A type trait to detect reference binding to temporary </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2255r2.html" target="_top">
          P2255R2
          </a>
*************** or any notes about the implementation.
*** 1958,1972 ****
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2077r3.html" target="_top">
          P2077R3
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">&lt;flat_map&gt;</code> </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf" target="_top">
          P0429R9
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_flat_map &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">&lt;flat_set&gt;</code> </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf" target="_top">
          P1222R4
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_flat_set &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">mdspan</code> </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html" target="_top">
          P0009R18
          </a>
--- 1975,1989 ----
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2077r3.html" target="_top">
          P2077R3
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </td></tr><tr><td align="left"> <code class="code">&lt;flat_map&gt;</code> </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf" target="_top">
          P0429R9
          </a>
!       </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_flat_map &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">&lt;flat_set&gt;</code> </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf" target="_top">
          P1222R4
          </a>
!       </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_flat_set &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">mdspan</code> </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html" target="_top">
          P0009R18
          </a>
*************** or any notes about the implementation.
*** 2033,2059 ****
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2508r1.html" target="_top">
          P2508R1
          </a>
!       </td><td align="center"> 13.1 (feature test macro not defined)</td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
  	Clarify handling of encodings in localized formatting of chrono types
        </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2419r2.html" target="_top">
          P2419R2
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr><td align="left">
  	Formatting pointers
        </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2510r3.pdf" target="_top">
          P2510R3
          </a>
!       </td><td align="center"> 13.2 (feature test macro not defined)</td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Formatting Ranges </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2286r8.html" target="_top">
          P2286R8
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Improve default container formatting </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2585r1.html" target="_top">
          P2585R1
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr><td align="left"> Formatted output </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2093r14.html" target="_top">
          P2093R14
          </a>
--- 2050,2078 ----
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2508r1.html" target="_top">
          P2508R1
          </a>
!       </td><td align="center"> 13.1 (feature test macro not updated until 15.1) </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr><td align="left">
  	Clarify handling of encodings in localized formatting of chrono types
        </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2419r2.html" target="_top">
          P2419R2
          </a>
!       </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr><td align="left">
  	Formatting pointers
        </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2510r3.pdf" target="_top">
          P2510R3
          </a>
!       </td><td align="center"> 13.2 (feature test macro not updated until 15.1) </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr><td align="left"> Formatting Ranges </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2286r8.html" target="_top">
          P2286R8
          </a>
!       </td><td align="center">
! 	<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 15.1 (changes to adaptors missing) </td></tr><tr><td> 15.2 (complete) </td></tr></tbody></table></div>
!       </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr><td align="left"> Improve default container formatting </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2585r1.html" target="_top">
          P2585R1
          </a>
!       </td><td align="center"> 15.1 (feature test macro not defined until 15.2) </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr><td align="left"> Formatted output </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2093r14.html" target="_top">
          P2093R14
          </a>
*************** or any notes about the implementation.
*** 2197,2209 ****
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2588r3.html" target="_top">
          P2588R3
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_barrier &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
          Standard Library Modules <code class="code">std</code> and <code class="code">std.compat</code>
        </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2465r3.pdf" target="_top">
          P2465R3
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_modules &gt;= 202207L</code> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p>
  This table is based on the table of contents of ISO/IEC DTR 19768,
  Doc No: N1836=05-0096, Date: 2005-06-24,
  "Draft Technical Report on C++ Library Extensions".
--- 2216,2228 ----
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2588r3.html" target="_top">
          P2588R3
          </a>
!       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_barrier &gt;= 202302L</code> </td></tr><tr><td align="left">
          Standard Library Modules <code class="code">std</code> and <code class="code">std.compat</code>
        </td><td align="left">
          <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2465r3.pdf" target="_top">
          P2465R3
          </a>
!       </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_modules &gt;= 202207L</code> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p>
  This table is based on the table of contents of ISO/IEC DTR 19768,
  Doc No: N1836=05-0096, Date: 2005-06-24,
  "Draft Technical Report on C++ Library Extensions".
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/xml/manual/evolution.xml gcc-16-20250518/libstdc++-v3/doc/xml/manual/evolution.xml
*** gcc-16-20250511/libstdc++-v3/doc/xml/manual/evolution.xml	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/xml/manual/evolution.xml	Sun May 18 22:33:03 2025
*************** header were added to the static library
*** 1117,1123 ****
  <section xml:id="api.rel_141"><info><title><constant>14</constant></title></info>
  
  <para>
! Deprecate the non-standard overload that allows <code>std::setfill</code>
  to be used with <code>std::basic_istream</code>.
  </para>
  
--- 1117,1123 ----
  <section xml:id="api.rel_141"><info><title><constant>14</constant></title></info>
  
  <para>
! Deprecated the non-standard overload that allows <code>std::setfill</code>
  to be used with <code>std::basic_istream</code>.
  </para>
  
*************** Nested <code>result_type</code> and <cod
*** 1152,1155 ****
--- 1152,1162 ----
  
  </section>
  
+ <section xml:id="api.rel_16"><info><title><constant>16</constant></title></info>
+ <para>
+ Deprecated the non-standard overload of <code>std::fabs</code> for
+ <code>std::complex</code> arguments.
+ </para>
+ </section>
+ 
  </section>
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/xml/manual/status_cxx2017.xml gcc-16-20250518/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
*** gcc-16-20250511/libstdc++-v3/doc/xml/manual/status_cxx2017.xml	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/xml/manual/status_cxx2017.xml	Sun May 18 22:33:03 2025
*************** since C++14 and the implementation is co
*** 1183,1196 ****
      <row>
        <entry>23.2.8</entry>
        <entry>Primitive numeric output conversion</entry>
!       <entry>Partial</entry>
!       <entry/>
      </row>
      <row>
        <entry>23.2.9</entry>
        <entry>Primitive numeric input conversion</entry>
!       <entry>Partial</entry>
!       <entry/>
      </row>
      <row>
        <entry>23.3</entry>
--- 1183,1213 ----
      <row>
        <entry>23.2.8</entry>
        <entry>Primitive numeric output conversion</entry>
!       <entry>Y</entry>
!       <entry>
! 	Floating-point types up to 64-bit are formatted using
! 	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	  xlink:href="https://github.com/ulfjack/ryu">Ryu</link>.
! 	Types with greater precision are formatted using the C library
! 	(<function>sprintf</function> and conditionally
! 	<function>strfromf128</function>).
! 	For powerpc64le-unknown-linux-gnu <function>__sprintfieee128</function>
! 	must be provided by Glibc.
!       </entry>
      </row>
      <row>
        <entry>23.2.9</entry>
        <entry>Primitive numeric input conversion</entry>
!       <entry>Y</entry>
!       <entry>
! 	Floating-point types up to 64-bit are parsed using
! 	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	  xlink:href="https://github.com/fastfloat/fast_float">fast_float</link>.
! 	Types with greater precision are parsed using the C library
! 	(<function>strtold</function>).
! 	For powerpc64le-unknown-linux-gnu <function>__strtoieee128</function>
! 	must be provided by Glibc.
!       </entry>
      </row>
      <row>
        <entry>23.3</entry>
diff -Nrcpad gcc-16-20250511/libstdc++-v3/doc/xml/manual/status_cxx2023.xml gcc-16-20250518/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
*** gcc-16-20250511/libstdc++-v3/doc/xml/manual/status_cxx2023.xml	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/doc/xml/manual/status_cxx2023.xml	Sun May 18 22:33:03 2025
*************** or any notes about the implementation.
*** 312,328 ****
      </row>
  
      <row>
-       <?dbhtml bgcolor="#B0B0B0" ?>
        <entry> <code>ranges::to</code> </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf">
          P1206R7
          </link>
        </entry>
!       <entry align="center"> 14.1 (<code>ranges::to</code> function) </entry>
        <entry>
! 	<code>__cpp_lib_containers_ranges &gt;= 202202L</code>,
! 	<code>__cpp_lib_ranges_to_container &gt;= 202202L</code>
        </entry>
      </row>
  
--- 312,332 ----
      </row>
  
      <row>
        <entry> <code>ranges::to</code> </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf">
          P1206R7
          </link>
        </entry>
!       <entry align="center">
! 	<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
! 	<row><entry> 14.1 (<code>ranges::to</code> function) </entry></row>
! 	<row><entry> 15.1 (new members in containers) </entry></row>
! 	</tbody></tgroup></informaltable>
!       </entry>
        <entry>
! 	<code>__cpp_lib_ranges_to_container &gt;= 202202L</code>,
! 	<code>__cpp_lib_containers_ranges &gt;= 202202L</code>
        </entry>
      </row>
  
*************** or any notes about the implementation.
*** 418,431 ****
      </row>
  
      <row>
-       <?dbhtml bgcolor="#C8B0B0" ?>
        <entry> Relaxing Ranges Just A Smidge</entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2609r3.html">
          P2609R3
          </link>
        </entry>
!       <entry align="center"> </entry>
        <entry> <code>__cpp_lib_ranges &gt;= 202302L</code> </entry>
      </row>
  
--- 422,434 ----
      </row>
  
      <row>
        <entry> Relaxing Ranges Just A Smidge</entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2609r3.html">
          P2609R3
          </link>
        </entry>
!       <entry align="center"> 14.3 </entry>
        <entry> <code>__cpp_lib_ranges &gt;= 202302L</code> </entry>
      </row>
  
*************** or any notes about the implementation.
*** 513,526 ****
      </row>
  
      <row>
-       <?dbhtml bgcolor="#C8B0B0" ?>
        <entry> Deprecate std::aligned_storage and std::aligned_union </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf">
          P1413R3
          </link>
        </entry>
!       <entry align="center"> </entry>
        <entry />
      </row>
  
--- 516,528 ----
      </row>
  
      <row>
        <entry> Deprecate std::aligned_storage and std::aligned_union </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf">
          P1413R3
          </link>
        </entry>
!       <entry align="center"> 13.1 </entry>
        <entry />
      </row>
  
*************** or any notes about the implementation.
*** 635,660 ****
      </row>
  
      <row>
-       <?dbhtml bgcolor="#C8B0B0" ?>
        <entry> <code>&lt;flat_map&gt;</code> </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf">
          P0429R9
          </link>
        </entry>
!       <entry align="center"> </entry>
        <entry> <code>__cpp_lib_flat_map &gt;= 202207L</code> </entry>
      </row>
  
      <row>
-       <?dbhtml bgcolor="#C8B0B0" ?>
        <entry> <code>&lt;flat_set&gt;</code> </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf">
          P1222R4
          </link>
        </entry>
!       <entry align="center"> </entry>
        <entry> <code>__cpp_lib_flat_set &gt;= 202207L</code> </entry>
      </row>
  
--- 637,660 ----
      </row>
  
      <row>
        <entry> <code>&lt;flat_map&gt;</code> </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf">
          P0429R9
          </link>
        </entry>
!       <entry align="center"> 15.1 </entry>
        <entry> <code>__cpp_lib_flat_map &gt;= 202207L</code> </entry>
      </row>
  
      <row>
        <entry> <code>&lt;flat_set&gt;</code> </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf">
          P1222R4
          </link>
        </entry>
!       <entry align="center"> 15.1 </entry>
        <entry> <code>__cpp_lib_flat_set &gt;= 202207L</code> </entry>
      </row>
  
*************** or any notes about the implementation.
*** 823,834 ****
          P2508R1
          </link>
        </entry>
!       <entry align="center"> 13.1 (feature test macro not defined)</entry>
        <entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
      </row>
  
      <row>
-       <?dbhtml bgcolor="#C8B0B0" ?>
        <entry>
  	Clarify handling of encodings in localized formatting of chrono types
        </entry>
--- 823,833 ----
          P2508R1
          </link>
        </entry>
!       <entry align="center"> 13.1 (feature test macro not updated until 15.1) </entry>
        <entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
      </row>
  
      <row>
        <entry>
  	Clarify handling of encodings in localized formatting of chrono types
        </entry>
*************** or any notes about the implementation.
*** 837,843 ****
          P2419R2
          </link>
        </entry>
!       <entry align="center"> </entry>
        <entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
      </row>
  
--- 836,842 ----
          P2419R2
          </link>
        </entry>
!       <entry align="center"> 15.1 </entry>
        <entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
      </row>
  
*************** or any notes about the implementation.
*** 850,880 ****
          P2510R3
          </link>
        </entry>
!       <entry align="center"> 13.2 (feature test macro not defined)</entry>
        <entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
      </row>
  
      <row>
-       <?dbhtml bgcolor="#C8B0B0" ?>
        <entry> Formatting Ranges </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2286r8.html">
          P2286R8
          </link>
        </entry>
!       <entry align="center"> </entry>
        <entry> <code>__cpp_lib_format_ranges &gt;= 202207L</code> </entry>
      </row>
  
      <row>
-       <?dbhtml bgcolor="#C8B0B0" ?>
        <entry> Improve default container formatting </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2585r1.html">
          P2585R1
          </link>
        </entry>
!       <entry align="center"> </entry>
        <entry> <code>__cpp_lib_format_ranges &gt;= 202207L</code> </entry>
      </row>
  
--- 849,882 ----
          P2510R3
          </link>
        </entry>
!       <entry align="center"> 13.2 (feature test macro not updated until 15.1) </entry>
        <entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
      </row>
  
      <row>
        <entry> Formatting Ranges </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2286r8.html">
          P2286R8
          </link>
        </entry>
!       <entry align="center">
! 	<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
! 	<row><entry> 15.1 (changes to adaptors missing) </entry></row>
! 	<row><entry> 15.2 (complete) </entry></row>
! 	</tbody></tgroup></informaltable>
!       </entry>
        <entry> <code>__cpp_lib_format_ranges &gt;= 202207L</code> </entry>
      </row>
  
      <row>
        <entry> Improve default container formatting </entry>
        <entry>
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2585r1.html">
          P2585R1
          </link>
        </entry>
!       <entry align="center"> 15.1 (feature test macro not defined until 15.2) </entry>
        <entry> <code>__cpp_lib_format_ranges &gt;= 202207L</code> </entry>
      </row>
  
*************** or any notes about the implementation.
*** 1249,1255 ****
      </row>
  
      <row>
-       <?dbhtml bgcolor="#C8B0B0" ?>
        <entry>
          Standard Library Modules <code>std</code> and <code>std.compat</code>
        </entry>
--- 1251,1256 ----
*************** or any notes about the implementation.
*** 1258,1264 ****
          P2465R3
          </link>
        </entry>
!       <entry align="center"> </entry>
        <entry> <code>__cpp_lib_modules &gt;= 202207L</code> </entry>
      </row>
  
--- 1259,1265 ----
          P2465R3
          </link>
        </entry>
!       <entry align="center"> 15.1 </entry>
        <entry> <code>__cpp_lib_modules &gt;= 202207L</code> </entry>
      </row>
  
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/Makefile.am gcc-16-20250518/libstdc++-v3/include/Makefile.am
*** gcc-16-20250511/libstdc++-v3/include/Makefile.am	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/Makefile.am	Sun May 18 22:33:03 2025
*************** bits_headers = \
*** 194,199 ****
--- 194,200 ----
  	${bits_srcdir}/chrono_io.h \
  	${bits_srcdir}/codecvt.h \
  	${bits_srcdir}/cow_string.h \
+ 	${bits_srcdir}/cpyfunc_impl.h \
  	${bits_srcdir}/deque.tcc \
  	${bits_srcdir}/erase_if.h \
  	${bits_srcdir}/formatfwd.h \
*************** bits_headers = \
*** 204,209 ****
--- 205,211 ----
  	${bits_srcdir}/fs_ops.h \
  	${bits_srcdir}/fs_path.h \
  	${bits_srcdir}/fstream.tcc \
+ 	${bits_srcdir}/funcwrap.h \
  	${bits_srcdir}/gslice.h \
  	${bits_srcdir}/gslice_array.h \
  	${bits_srcdir}/hashtable.h \
*************** bits_headers = \
*** 223,229 ****
  	${bits_srcdir}/mask_array.h \
  	${bits_srcdir}/memory_resource.h \
  	${bits_srcdir}/mofunc_impl.h \
- 	${bits_srcdir}/move_only_function.h \
  	${bits_srcdir}/new_allocator.h \
  	${bits_srcdir}/node_handle.h \
  	${bits_srcdir}/ostream.tcc \
--- 225,230 ----
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/Makefile.in gcc-16-20250518/libstdc++-v3/include/Makefile.in
*** gcc-16-20250511/libstdc++-v3/include/Makefile.in	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/Makefile.in	Sun May 18 22:33:03 2025
*************** bits_freestanding = \
*** 547,552 ****
--- 547,553 ----
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/chrono_io.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/codecvt.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/cow_string.h \
+ @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/cpyfunc_impl.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/deque.tcc \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/erase_if.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/formatfwd.h \
*************** bits_freestanding = \
*** 557,562 ****
--- 558,564 ----
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/fs_ops.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/fs_path.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/fstream.tcc \
+ @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/funcwrap.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/gslice.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/gslice_array.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/hashtable.h \
*************** bits_freestanding = \
*** 576,582 ****
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/mask_array.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/memory_resource.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/mofunc_impl.h \
- @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/move_only_function.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/new_allocator.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/node_handle.h \
  @GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/ostream.tcc \
--- 578,583 ----
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/bits/cpyfunc_impl.h gcc-16-20250518/libstdc++-v3/include/bits/cpyfunc_impl.h
*** gcc-16-20250511/libstdc++-v3/include/bits/cpyfunc_impl.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/include/bits/cpyfunc_impl.h	Sun May 18 22:33:03 2025
***************
*** 0 ****
--- 1,269 ----
+ // Implementation of std::copyable_function -*- 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, 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/>.
+ 
+ /** @file include/bits/cpyfunc_impl.h
+  *  This is an internal header file, included by other library headers.
+  *  Do not attempt to use it directly. @headername{functional}
+  */
+ 
+ #ifndef _GLIBCXX_MOF_CV
+ # define _GLIBCXX_MOF_CV
+ #endif
+ 
+ #ifdef _GLIBCXX_MOF_REF
+ # define _GLIBCXX_MOF_INV_QUALS _GLIBCXX_MOF_CV _GLIBCXX_MOF_REF
+ #else
+ # define _GLIBCXX_MOF_REF
+ # define _GLIBCXX_MOF_INV_QUALS _GLIBCXX_MOF_CV &
+ #endif
+ 
+ #define _GLIBCXX_MOF_CV_REF _GLIBCXX_MOF_CV _GLIBCXX_MOF_REF
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   /**
+    *  @brief Polymorphic copyable function wrapper.
+    *  @ingroup functors
+    *  @since C++26
+    *  @headerfile functional
+    *
+    *  The `std::copyable_function` class template is a call wrapper similar
+    *  to `std::function`, but it does not provide information about it's
+    *  target, and preserves constness.
+    *
+    *  It also supports const-qualification, ref-qualification, and
+    *  no-throw guarantees. The qualifications and exception-specification
+    *  of the `copyable_function::operator()` member function are respected
+    *  when invoking the target function.
+    */
+   template<typename _Res, typename... _ArgTypes, bool _Noex>
+     class copyable_function<_Res(_ArgTypes...) _GLIBCXX_MOF_CV
+ 			    _GLIBCXX_MOF_REF noexcept(_Noex)>
+     : __polyfunc::_Cpy_base
+     {
+       using _Base = __polyfunc::_Cpy_base;
+       using _Invoker = __polyfunc::_Invoker<_Noex, _Res, _ArgTypes...>;
+       using _Signature = _Invoker::_Signature;
+ 
+       template<typename _Tp>
+ 	using __callable
+ 	  = __conditional_t<_Noex,
+ 			    is_nothrow_invocable_r<_Res, _Tp, _ArgTypes...>,
+ 			    is_invocable_r<_Res, _Tp, _ArgTypes...>>;
+ 
+       // [func.wrap.copy.con]/1 is-callable-from<VT>
+       template<typename _Vt>
+ 	static constexpr bool __is_callable_from
+ 	  = __and_v<__callable<_Vt _GLIBCXX_MOF_CV_REF>,
+ 		    __callable<_Vt _GLIBCXX_MOF_INV_QUALS>>;
+ 
+     public:
+       using result_type = _Res;
+ 
+       /// Creates an empty object.
+       copyable_function() noexcept { }
+ 
+       /// Creates an empty object.
+       copyable_function(nullptr_t) noexcept { }
+ 
+       /// Moves the target object, leaving the source empty.
+       copyable_function(copyable_function&& __x) noexcept
+       : _Base(static_cast<_Base&&>(__x)),
+ 	_M_invoke(std::__exchange(__x._M_invoke, nullptr))
+       { }
+ 
+       /// Copies the target object.
+       copyable_function(copyable_function const& __x)
+       : _Base(static_cast<const _Base&>(__x)),
+ 	_M_invoke(__x._M_invoke)
+       { }
+ 
+       /// Stores a target object initialized from the argument.
+       template<typename _Fn, typename _Vt = decay_t<_Fn>>
+ 	requires (!is_same_v<_Vt, copyable_function>)
+ 	  && (!__is_in_place_type_v<_Vt>) && __is_callable_from<_Vt>
+ 	copyable_function(_Fn&& __f) noexcept(_S_nothrow_init<_Vt, _Fn>())
+ 	{
+ 	  static_assert(is_copy_constructible_v<_Vt>);
+ 	  if constexpr (is_function_v<remove_pointer_t<_Vt>>
+ 			|| is_member_pointer_v<_Vt>
+ 			|| __is_polymorphic_function_v<_Vt>)
+ 	    {
+ 	      if (__f == nullptr)
+ 		return;
+ 	    }
+ 
+ 	  if constexpr (!__is_polymorphic_function_v<_Vt>
+ 			  || !__polyfunc::__is_invoker_convertible<_Vt, copyable_function>())
+ 	    {
+ 	      _M_init<_Vt>(std::forward<_Fn>(__f));
+ 	      _M_invoke = _Invoker::template _S_storage<_Vt _GLIBCXX_MOF_INV_QUALS>();
+ 	    }
+ 	  else if constexpr (is_lvalue_reference_v<_Fn>)
+ 	    {
+ 	      _M_copy(__polyfunc::__base_of(__f));
+ 	      _M_invoke = __polyfunc::__invoker_of(__f);
+ 	    }
+ 	  else
+ 	    {
+ 	      _M_move(__polyfunc::__base_of(__f));
+ 	      _M_invoke = std::__exchange(__polyfunc::__invoker_of(__f), nullptr);
+ 	    }
+ 	}
+ 
+       /// Stores a target object initialized from the arguments.
+       template<typename _Tp, typename... _Args>
+ 	requires is_constructible_v<_Tp, _Args...>
+ 	  && __is_callable_from<_Tp>
+ 	explicit
+ 	copyable_function(in_place_type_t<_Tp>, _Args&&... __args)
+ 	noexcept(_S_nothrow_init<_Tp, _Args...>())
+ 	: _M_invoke(_Invoker::template _S_storage<_Tp _GLIBCXX_MOF_INV_QUALS>())
+ 	{
+ 	  static_assert(is_same_v<decay_t<_Tp>, _Tp>);
+ 	  static_assert(is_copy_constructible_v<_Tp>);
+ 	  _M_init<_Tp>(std::forward<_Args>(__args)...);
+ 	}
+ 
+       /// Stores a target object initialized from the arguments.
+       template<typename _Tp, typename _Up, typename... _Args>
+ 	requires is_constructible_v<_Tp, initializer_list<_Up>&, _Args...>
+ 	  && __is_callable_from<_Tp>
+ 	explicit
+ 	copyable_function(in_place_type_t<_Tp>, initializer_list<_Up> __il,
+ 			   _Args&&... __args)
+ 	noexcept(_S_nothrow_init<_Tp, initializer_list<_Up>&, _Args...>())
+ 	: _M_invoke(_Invoker::template _S_storage<_Tp _GLIBCXX_MOF_INV_QUALS>())
+ 	{
+ 	  static_assert(is_same_v<decay_t<_Tp>, _Tp>);
+ 	  static_assert(is_copy_constructible_v<_Tp>);
+ 	  _M_init<_Tp>(__il, std::forward<_Args>(__args)...);
+ 	}
+ 
+       /// Stores a new target object, leaving `x` empty.
+       copyable_function&
+       operator=(copyable_function&& __x) noexcept
+       {
+ 	// Standard requires support of self assigment, by specifying it as
+ 	// copy and swap.
+ 	if (this != std::addressof(__x)) [[likely]]
+ 	  {
+ 	    _Base::operator=(static_cast<_Base&&>(__x));
+ 	    _M_invoke = std::__exchange(__x._M_invoke, nullptr);
+ 	  }
+ 	return *this;
+       }
+ 
+       /// Stores a copy of the source target object
+       copyable_function&
+       operator=(const copyable_function& __x)
+       {
+ 	copyable_function(__x).swap(*this);
+ 	return *this;
+       }
+ 
+       /// Destroys the target object (if any).
+       copyable_function&
+       operator=(nullptr_t) noexcept
+       {
+ 	_M_reset();
+ 	_M_invoke = nullptr;
+ 	return *this;
+       }
+ 
+       /// Stores a new target object, initialized from the argument.
+       template<typename _Fn>
+ 	requires is_constructible_v<copyable_function, _Fn>
+ 	copyable_function&
+ 	operator=(_Fn&& __f)
+ 	noexcept(is_nothrow_constructible_v<copyable_function, _Fn>)
+ 	{
+ 	  copyable_function(std::forward<_Fn>(__f)).swap(*this);
+ 	  return *this;
+ 	}
+ 
+       ~copyable_function() = default;
+ 
+       /// True if a target object is present, false otherwise.
+       explicit operator bool() const noexcept
+       { return _M_invoke != nullptr; }
+ 
+       /** Invoke the target object.
+        *
+        * The target object will be invoked using the supplied arguments,
+        * and as an lvalue or rvalue, and as const or non-const, as dictated
+        * by the template arguments of the `copyable_function` specialization.
+        *
+        * @pre Must not be empty.
+        */
+       _Res
+       operator()(_ArgTypes... __args) _GLIBCXX_MOF_CV_REF noexcept(_Noex)
+       {
+ 	__glibcxx_assert(*this != nullptr);
+ 	return _M_invoke(this->_M_storage, std::forward<_ArgTypes>(__args)...);
+       }
+ 
+       /// Exchange the target objects (if any).
+       void
+       swap(copyable_function& __x) noexcept
+       {
+ 	_Base::swap(__x);
+ 	std::swap(_M_invoke, __x._M_invoke);
+       }
+ 
+       /// Exchange the target objects (if any).
+       friend void
+       swap(copyable_function& __x, copyable_function& __y) noexcept
+       { __x.swap(__y); }
+ 
+       /// Check for emptiness by comparing with `nullptr`.
+       friend bool
+       operator==(const copyable_function& __x, nullptr_t) noexcept
+       { return __x._M_invoke == nullptr; }
+ 
+     private:
+       typename _Invoker::__storage_func_t _M_invoke = nullptr;
+ 
+       template<typename _Func>
+ 	friend auto&
+ 	__polyfunc::__invoker_of(_Func&) noexcept;
+ 
+       template<typename _Func>
+ 	friend auto&
+ 	__polyfunc::__base_of(_Func&) noexcept;
+ 
+       template<typename _Dst, typename _Src>
+ 	friend consteval bool
+ 	__polyfunc::__is_invoker_convertible() noexcept;
+     };
+ 
+ #undef _GLIBCXX_MOF_CV_REF
+ #undef _GLIBCXX_MOF_CV
+ #undef _GLIBCXX_MOF_REF
+ #undef _GLIBCXX_MOF_INV_QUALS
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace std
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/bits/funcwrap.h gcc-16-20250518/libstdc++-v3/include/bits/funcwrap.h
*** gcc-16-20250511/libstdc++-v3/include/bits/funcwrap.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/include/bits/funcwrap.h	Sun May 18 22:33:03 2025
***************
*** 0 ****
--- 1,507 ----
+ // Implementation of std::move_only_function and std::copyable_function -*- 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, 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/>.
+ 
+ /** @file include/bits/funcwrap.h
+  *  This is an internal header file, included by other library headers.
+  *  Do not attempt to use it directly. @headername{functional}
+  */
+ 
+ #ifndef _GLIBCXX_FUNCWRAP_H
+ #define _GLIBCXX_FUNCWRAP_H 1
+ 
+ #ifdef _GLIBCXX_SYSHDR
+ #pragma GCC system_header
+ #endif
+ 
+ #include <bits/version.h>
+ 
+ #if defined(__glibcxx_move_only_function) || defined(__glibcxx_copyable_function)
+ 
+ #include <bits/invoke.h>
+ #include <bits/utility.h>
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   /// @cond undocumented
+   template<typename _Tp>
+     inline constexpr bool __is_polymorphic_function_v = false;
+ 
+   namespace __polyfunc
+   {
+     union _Ptrs
+     {
+       void* _M_obj;
+       void (*_M_func)();
+     };
+ 
+    struct _Storage
+    {
+      void*       _M_addr() noexcept       { return &_M_bytes[0]; }
+      void const* _M_addr() const noexcept { return &_M_bytes[0]; }
+ 
+      template<typename _Tp>
+        static consteval bool
+        _S_stored_locally() noexcept
+        {
+ 	 return sizeof(_Tp) <= sizeof(_Storage)
+ 		&& alignof(_Tp) <= alignof(_Storage)
+ 		&& is_nothrow_move_constructible_v<_Tp>;
+        }
+ 
+      template<typename _Tp, typename... _Args>
+        static consteval bool
+        _S_nothrow_init() noexcept
+        {
+ 	 if constexpr (_S_stored_locally<_Tp>())
+ 	   return is_nothrow_constructible_v<_Tp, _Args...>;
+ 	 return false;
+        }
+ 
+      template<typename _Tp, typename... _Args>
+        void
+        _M_init(_Args&&... __args) noexcept(_S_nothrow_init<_Tp, _Args...>())
+        {
+ 	 if constexpr (is_function_v<remove_pointer_t<_Tp>>)
+ 	   {
+ 	     static_assert( sizeof...(__args) <= 1 );
+ 	     // __args can have up to one element, returns nullptr if empty.
+ 	     _Tp __func = (nullptr, ..., __args);
+ 	     _M_ptrs._M_func = reinterpret_cast<void(*)()>(__func);
+ 	   }
+ 	 else if constexpr (!_S_stored_locally<_Tp>())
+ 	   _M_ptrs._M_obj = new _Tp(std::forward<_Args>(__args)...);
+ 	 else
+ 	   ::new (_M_addr()) _Tp(std::forward<_Args>(__args)...);
+        }
+ 
+      template<typename _Tp>
+        [[__gnu__::__always_inline__]]
+        _Tp*
+        _M_ptr() const noexcept
+        {
+ 	 if constexpr (!_S_stored_locally<remove_const_t<_Tp>>())
+ 	   return static_cast<_Tp*>(_M_ptrs._M_obj);
+ 	 else if constexpr (is_const_v<_Tp>)
+ 	   return static_cast<_Tp*>(_M_addr());
+ 	 else
+ 	   // _Manager and _Invoker pass _Storage by const&, even for mutable sources.
+ 	   return static_cast<_Tp*>(const_cast<void*>(_M_addr()));
+        }
+ 
+      template<typename _Ref>
+        [[__gnu__::__always_inline__]]
+        _Ref
+        _M_ref() const noexcept
+        {
+ 	 using _Tp = remove_reference_t<_Ref>;
+ 	 if constexpr (is_function_v<remove_pointer_t<_Tp>>)
+ 	   return reinterpret_cast<_Tp>(_M_ptrs._M_func);
+ 	 else
+ 	   return static_cast<_Ref>(*_M_ptr<_Tp>());
+        }
+ 
+      // We want to have enough space to store a simple delegate type.
+      struct _Delegate { void (_Storage::*__pfm)(); _Storage* __obj; };
+      union {
+        _Ptrs _M_ptrs;
+        alignas(_Delegate) alignas(void(*)())
+        unsigned char _M_bytes[sizeof(_Delegate)];
+      };
+    };
+ 
+    template<bool _Noex, typename _Ret, typename... _Args>
+      struct _Base_invoker
+      {
+        using _Signature = _Ret(*)(_Args...) noexcept(_Noex);
+ 
+        using __storage_func_t = _Ret(*)(const _Storage&, _Args...) noexcept(_Noex);
+        template<typename _Tp>
+ 	 static consteval __storage_func_t
+ 	 _S_storage()
+ 	 { return &_S_call_storage<_Adjust_target<_Tp>>; }
+ 
+      private:
+        template<typename _Tp, typename _Td = remove_cvref_t<_Tp>>
+ 	 using _Adjust_target =
+ 	   __conditional_t<is_pointer_v<_Td> || is_member_pointer_v<_Td>, _Td, _Tp>;
+ 
+        template<typename _Tp>
+ 	 static _Ret
+ 	 _S_call_storage(const _Storage& __ref, _Args... __args) noexcept(_Noex)
+ 	 {
+ 	   return std::__invoke_r<_Ret>(__ref._M_ref<_Tp>(),
+ 					std::forward<_Args>(__args)...);
+ 	 }
+      };
+ 
+    template<typename _Tp>
+      using __param_t = __conditional_t<is_scalar_v<_Tp>, _Tp, _Tp&&>;
+ 
+    template<bool _Noex, typename _Ret, typename... _Args>
+      using _Invoker = _Base_invoker<_Noex, remove_cv_t<_Ret>, __param_t<_Args>...>;
+ 
+    template<typename _Func>
+      auto&
+      __invoker_of(_Func& __f) noexcept
+      { return __f._M_invoke; }
+ 
+    template<typename _Func>
+      auto&
+      __base_of(_Func& __f) noexcept
+      { return static_cast<__like_t<_Func&, typename _Func::_Base>>(__f); }
+ 
+    template<typename _Src, typename _Dst>
+      consteval bool
+      __is_invoker_convertible() noexcept
+      {
+        if constexpr (requires { typename _Src::_Signature; })
+ 	 return is_convertible_v<typename _Src::_Signature,
+ 				 typename _Dst::_Signature>;
+        else
+ 	 return false;
+      }
+ 
+    struct _Manager
+    {
+      enum class _Op
+      {
+        // saves address of entity in *__src to __target._M_ptrs,
+        _Address,
+        // moves entity stored in *__src to __target, __src becomes empty
+        _Move,
+        // copies entity stored in *__src to __target, supported only if
+        // _ProvideCopy is specified.
+        _Copy,
+        // destroys entity stored in __target, __src is ignoring
+        _Destroy,
+      };
+ 
+     // A function that performs operation __op on the __target and possibly __src.
+     using _Func = void (*)(_Op __op, _Storage& __target, const _Storage* __src);
+ 
+     // The no-op manager function for objects with no target.
+     static void _S_empty(_Op, _Storage&, const _Storage*) noexcept { }
+ 
+     template<bool _ProvideCopy, typename _Tp>
+       consteval static auto
+       _S_select()
+       {
+ 	if constexpr (is_function_v<remove_pointer_t<_Tp>>)
+ 	  return &_S_func;
+ 	else if constexpr (!_Storage::_S_stored_locally<_Tp>())
+ 	  return &_S_ptr<_ProvideCopy, _Tp>;
+ 	else if constexpr (is_trivially_copyable_v<_Tp>)
+ 	  return &_S_trivial;
+ 	else
+ 	  return &_S_local<_ProvideCopy, _Tp>;
+       }
+ 
+    private:
+      static void
+      _S_func(_Op __op, _Storage& __target, const _Storage* __src) noexcept
+      {
+        switch (__op)
+        {
+ 	 case _Op::_Address:
+ 	 case _Op::_Move:
+ 	 case _Op::_Copy:
+ 	   __target._M_ptrs._M_func = __src->_M_ptrs._M_func;
+ 	   return;
+ 	 case _Op::_Destroy:
+ 	   return;
+        }
+      }
+ 
+      static void
+      _S_trivial(_Op __op, _Storage& __target, const _Storage* __src) noexcept
+      {
+        switch (__op)
+        {
+ 	 case _Op::_Address:
+ 	   __target._M_ptrs._M_obj = const_cast<void*>(__src->_M_addr());
+ 	   return;
+ 	 case _Op::_Move:
+ 	 case _Op::_Copy:
+ 	   // N.B. Creating _Storage starts lifetime of _M_bytes char array,
+ 	   // that implicitly creates, amongst other, all possible trivially
+ 	   // copyable objects, so we copy any object present in __src._M_bytes.
+ 	   ::new (&__target) _Storage(*__src);
+ 	   return;
+ 	 case _Op::_Destroy:
+ 	   return;
+        }
+      }
+ 
+      template<bool _Provide_copy, typename _Tp>
+        static void
+        _S_local(_Op __op, _Storage& __target, const _Storage* __src)
+        noexcept(!_Provide_copy)
+        {
+ 	 switch (__op)
+ 	 {
+ 	   case _Op::_Address:
+ 	     __target._M_ptrs._M_obj = __src->_M_ptr<_Tp>();
+ 	     return;
+ 	   case _Op::_Move:
+ 	     {
+ 	       _Tp* __obj = __src->_M_ptr<_Tp>();
+ 	       ::new(__target._M_addr()) _Tp(std::move(*__obj));
+ 	       __obj->~_Tp();
+ 	     }
+ 	     return;
+ 	   case _Op::_Destroy:
+ 	     __target._M_ptr<_Tp>()->~_Tp();
+ 	     return;
+ 	   case _Op::_Copy:
+ 	     if constexpr (_Provide_copy)
+ 	       ::new (__target._M_addr()) _Tp(__src->_M_ref<const _Tp&>());
+ 	     else
+ 	       __builtin_unreachable();
+ 	     return;
+ 	 }
+        }
+ 
+      template<bool _Provide_copy, typename _Tp>
+        static void
+        _S_ptr(_Op __op, _Storage& __target, const _Storage* __src)
+        noexcept(!_Provide_copy)
+        {
+ 	 switch (__op)
+ 	 {
+ 	   case _Op::_Address:
+ 	   case _Op::_Move:
+ 	     __target._M_ptrs._M_obj = __src->_M_ptrs._M_obj;
+ 	     return;
+ 	   case _Op::_Destroy:
+ 	     delete __target._M_ptr<_Tp>();
+ 	     return;
+ 	   case _Op::_Copy:
+ 	     if constexpr (_Provide_copy)
+ 	       __target._M_ptrs._M_obj = new _Tp(__src->_M_ref<const _Tp&>());
+ 	     else
+ 	       __builtin_unreachable();
+ 	     return;
+ 	  }
+ 	}
+    };
+ 
+    class _Mo_base
+    {
+    protected:
+      _Mo_base() noexcept
+      : _M_manage(_Manager::_S_empty)
+      { }
+ 
+      _Mo_base(_Mo_base&& __x) noexcept
+      { _M_move(__x); }
+ 
+      template<typename _Tp, typename... _Args>
+        static consteval bool
+        _S_nothrow_init() noexcept
+        { return _Storage::_S_nothrow_init<_Tp, _Args...>(); }
+ 
+      template<typename _Tp, typename... _Args>
+        void
+        _M_init(_Args&&... __args)
+        noexcept(_S_nothrow_init<_Tp, _Args...>())
+        {
+ 	 _M_storage._M_init<_Tp>(std::forward<_Args>(__args)...);
+ 	 _M_manage = _Manager::_S_select<false, _Tp>();
+        }
+ 
+      void
+      _M_move(_Mo_base& __x) noexcept
+      {
+        using _Op = _Manager::_Op;
+        _M_manage = std::__exchange(__x._M_manage, _Manager::_S_empty);
+        _M_manage(_Op::_Move, _M_storage, &__x._M_storage);
+      }
+ 
+      _Mo_base&
+      operator=(_Mo_base&& __x) noexcept
+      {
+        _M_destroy();
+        _M_move(__x);
+        return *this;
+      }
+ 
+      void
+      _M_reset() noexcept
+      {
+        _M_destroy();
+        _M_manage = _Manager::_S_empty;
+      }
+ 
+      ~_Mo_base()
+      { _M_destroy(); }
+ 
+      void
+      swap(_Mo_base& __x) noexcept
+      {
+        using _Op = _Manager::_Op;
+        // Order of operations here is more efficient if __x is empty.
+        _Storage __s;
+        __x._M_manage(_Op::_Move, __s, &__x._M_storage);
+        _M_manage(_Op::_Move, __x._M_storage, &_M_storage);
+        __x._M_manage(_Op::_Move, _M_storage, &__s);
+        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
+    };
+ 
+ } // namespace __polyfunc
+   /// @endcond
+ 
+ #ifdef __glibcxx_move_only_function // C++ >= 23 && HOSTED
+   template<typename... _Signature>
+     class move_only_function; // not defined
+ 
+   /// @cond undocumented
+   template<typename _Tp>
+     constexpr bool __is_polymorphic_function_v<move_only_function<_Tp>> = true;
+ 
+   namespace __detail::__variant
+   {
+     template<typename> struct _Never_valueless_alt; // see <variant>
+ 
+     // Provide the strong exception-safety guarantee when emplacing a
+     // move_only_function into a variant.
+     template<typename... _Signature>
+       struct _Never_valueless_alt<std::move_only_function<_Signature...>>
+       : true_type
+       { };
+   }  // namespace __detail::__variant
+   /// @endcond
+ #endif // __glibcxx_move_only_function
+ 
+ #ifdef __glibcxx_copyable_function // C++ >= 26 && HOSTED
+   /// @cond undocumented
+   namespace __polyfunc
+   {
+      class _Cpy_base : public _Mo_base
+      {
+      protected:
+        _Cpy_base() = default;
+ 
+        template<typename _Tp, typename... _Args>
+ 	 void
+ 	 _M_init(_Args&&... __args)
+ 	 noexcept(_S_nothrow_init<_Tp, _Args...>())
+ 	 {
+ 	   _M_storage._M_init<_Tp>(std::forward<_Args>(__args)...);
+ 	   _M_manage = _Manager::_S_select<true, _Tp>();
+ 	 }
+ 
+       void
+       _M_copy(_Cpy_base const& __x)
+       {
+ 	using _Op = _Manager::_Op;
+ 	__x._M_manage(_Op::_Copy, _M_storage, &__x._M_storage);
+ 	_M_manage = __x._M_manage;
+       }
+ 
+       _Cpy_base(_Cpy_base&&) = default;
+ 
+       _Cpy_base(_Cpy_base const& __x)
+       { _M_copy(__x); }
+ 
+       _Cpy_base&
+       operator=(_Cpy_base&&) = default;
+ 
+       _Cpy_base&
+       // Needs to use copy and swap for exception guarantees.
+       operator=(_Cpy_base const&) = delete;
+     };
+   } // namespace __polyfunc
+   /// @endcond
+ 
+   template<typename... _Signature>
+     class copyable_function; // not defined
+ 
+   template<typename _Tp>
+     constexpr bool __is_polymorphic_function_v<copyable_function<_Tp>> = true;
+ 
+     namespace __detail::__variant
+   {
+     template<typename> struct _Never_valueless_alt; // see <variant>
+ 
+     // Provide the strong exception-safety guarantee when emplacing a
+     // copyable_function into a variant.
+     template<typename... _Signature>
+       struct _Never_valueless_alt<std::copyable_function<_Signature...>>
+       : true_type
+       { };
+   }  // namespace __detail::__variant
+ #endif // __glibcxx_copyable_function
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace std
+ 
+ #ifdef __glibcxx_move_only_function // C++ >= 23 && HOSTED
+ #include "mofunc_impl.h"
+ #define _GLIBCXX_MOF_CV const
+ #include "mofunc_impl.h"
+ #define _GLIBCXX_MOF_REF &
+ #include "mofunc_impl.h"
+ #define _GLIBCXX_MOF_REF &&
+ #include "mofunc_impl.h"
+ #define _GLIBCXX_MOF_CV const
+ #define _GLIBCXX_MOF_REF &
+ #include "mofunc_impl.h"
+ #define _GLIBCXX_MOF_CV const
+ #define _GLIBCXX_MOF_REF &&
+ #include "mofunc_impl.h"
+ #endif // __glibcxx_move_only_function
+ 
+ #ifdef __glibcxx_copyable_function // C++ >= 26 && HOSTED
+ #include "cpyfunc_impl.h"
+ #define _GLIBCXX_MOF_CV const
+ #include "cpyfunc_impl.h"
+ #define _GLIBCXX_MOF_REF &
+ #include "cpyfunc_impl.h"
+ #define _GLIBCXX_MOF_REF &&
+ #include "cpyfunc_impl.h"
+ #define _GLIBCXX_MOF_CV const
+ #define _GLIBCXX_MOF_REF &
+ #include "cpyfunc_impl.h"
+ #define _GLIBCXX_MOF_CV const
+ #define _GLIBCXX_MOF_REF &&
+ #include "cpyfunc_impl.h"
+ #endif // __glibcxx_copyable_function
+ 
+ #endif // __glibcxx_copyable_function || __glibcxx_copyable_function
+ #endif // _GLIBCXX_FUNCWRAP_H
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/bits/mofunc_impl.h gcc-16-20250518/libstdc++-v3/include/bits/mofunc_impl.h
*** gcc-16-20250511/libstdc++-v3/include/bits/mofunc_impl.h	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/bits/mofunc_impl.h	Sun May 18 22:33:03 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 62,69 ****
    template<typename _Res, typename... _ArgTypes, bool _Noex>
      class move_only_function<_Res(_ArgTypes...) _GLIBCXX_MOF_CV
  			       _GLIBCXX_MOF_REF noexcept(_Noex)>
!     : _Mofunc_base
      {
        template<typename _Tp>
  	using __callable
  	  = __conditional_t<_Noex,
--- 62,73 ----
    template<typename _Res, typename... _ArgTypes, bool _Noex>
      class move_only_function<_Res(_ArgTypes...) _GLIBCXX_MOF_CV
  			       _GLIBCXX_MOF_REF noexcept(_Noex)>
!     : __polyfunc::_Mo_base
      {
+       using _Base = __polyfunc::_Mo_base;
+       using _Invoker = __polyfunc::_Invoker<_Noex, _Res, _ArgTypes...>;
+       using _Signature = _Invoker::_Signature;
+ 
        template<typename _Tp>
  	using __callable
  	  = __conditional_t<_Noex,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 87,93 ****
  
        /// Moves the target object, leaving the source empty.
        move_only_function(move_only_function&& __x) noexcept
!       : _Mofunc_base(static_cast<_Mofunc_base&&>(__x)),
  	_M_invoke(std::__exchange(__x._M_invoke, nullptr))
        { }
  
--- 91,97 ----
  
        /// Moves the target object, leaving the source empty.
        move_only_function(move_only_function&& __x) noexcept
!       : _Base(static_cast<_Base&&>(__x)),
  	_M_invoke(std::__exchange(__x._M_invoke, nullptr))
        { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 97,111 ****
  	  && (!__is_in_place_type_v<_Vt>) && __is_callable_from<_Vt>
  	move_only_function(_Fn&& __f) noexcept(_S_nothrow_init<_Vt, _Fn>())
  	{
  	  if constexpr (is_function_v<remove_pointer_t<_Vt>>
  			|| is_member_pointer_v<_Vt>
! 			|| __is_move_only_function_v<_Vt>)
  	    {
  	      if (__f == nullptr)
  		return;
  	    }
! 	  _M_init<_Vt>(std::forward<_Fn>(__f));
! 	  _M_invoke = &_S_invoke<_Vt>;
  	}
  
        /// Stores a target object initialized from the arguments.
--- 101,131 ----
  	  && (!__is_in_place_type_v<_Vt>) && __is_callable_from<_Vt>
  	move_only_function(_Fn&& __f) noexcept(_S_nothrow_init<_Vt, _Fn>())
  	{
+ 	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ 	  // 4255. move_only_function constructor should recognize empty
+ 	  //       copyable_functions
  	  if constexpr (is_function_v<remove_pointer_t<_Vt>>
  			|| is_member_pointer_v<_Vt>
! 			|| __is_polymorphic_function_v<_Vt>)
  	    {
  	      if (__f == nullptr)
  		return;
  	    }
! 
! 	  if constexpr (__is_polymorphic_function_v<_Vt>
! 			  && __polyfunc::__is_invoker_convertible<_Vt, move_only_function>())
! 	    {
! 	      // Handle cases where _Fn is const reference to copyable_function,
! 	      // by firstly creating temporary and moving from it.
! 	      _Vt __tmp(std::forward<_Fn>(__f));
! 	      _M_move(__polyfunc::__base_of(__tmp));
! 	      _M_invoke = std::__exchange(__polyfunc::__invoker_of(__tmp), nullptr);
! 	    }
! 	  else
! 	    {
! 	      _M_init<_Vt>(std::forward<_Fn>(__f));
! 	      _M_invoke = _Invoker::template _S_storage<_Vt _GLIBCXX_MOF_INV_QUALS>();
! 	    }
  	}
  
        /// Stores a target object initialized from the arguments.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 115,121 ****
  	explicit
  	move_only_function(in_place_type_t<_Tp>, _Args&&... __args)
  	noexcept(_S_nothrow_init<_Tp, _Args...>())
! 	: _M_invoke(&_S_invoke<_Tp>)
  	{
  	  static_assert(is_same_v<decay_t<_Tp>, _Tp>);
  	  _M_init<_Tp>(std::forward<_Args>(__args)...);
--- 135,141 ----
  	explicit
  	move_only_function(in_place_type_t<_Tp>, _Args&&... __args)
  	noexcept(_S_nothrow_init<_Tp, _Args...>())
! 	: _M_invoke(_Invoker::template _S_storage<_Tp _GLIBCXX_MOF_INV_QUALS>())
  	{
  	  static_assert(is_same_v<decay_t<_Tp>, _Tp>);
  	  _M_init<_Tp>(std::forward<_Args>(__args)...);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 129,135 ****
  	move_only_function(in_place_type_t<_Tp>, initializer_list<_Up> __il,
  			   _Args&&... __args)
  	noexcept(_S_nothrow_init<_Tp, initializer_list<_Up>&, _Args...>())
! 	: _M_invoke(&_S_invoke<_Tp>)
  	{
  	  static_assert(is_same_v<decay_t<_Tp>, _Tp>);
  	  _M_init<_Tp>(__il, std::forward<_Args>(__args)...);
--- 149,155 ----
  	move_only_function(in_place_type_t<_Tp>, initializer_list<_Up> __il,
  			   _Args&&... __args)
  	noexcept(_S_nothrow_init<_Tp, initializer_list<_Up>&, _Args...>())
! 	: _M_invoke(_Invoker::template _S_storage<_Tp _GLIBCXX_MOF_INV_QUALS>())
  	{
  	  static_assert(is_same_v<decay_t<_Tp>, _Tp>);
  	  _M_init<_Tp>(__il, std::forward<_Args>(__args)...);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 139,146 ****
        move_only_function&
        operator=(move_only_function&& __x) noexcept
        {
! 	_Mofunc_base::operator=(static_cast<_Mofunc_base&&>(__x));
! 	_M_invoke = std::__exchange(__x._M_invoke, nullptr);
  	return *this;
        }
  
--- 159,171 ----
        move_only_function&
        operator=(move_only_function&& __x) noexcept
        {
! 	// Standard requires support of self assigment, by specifying it as
! 	// copy and swap.
! 	if (this != std::addressof(__x)) [[likely]]
! 	  {
! 	    _Base::operator=(static_cast<_Base&&>(__x));
! 	    _M_invoke = std::__exchange(__x._M_invoke, nullptr);
! 	  }
  	return *this;
        }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 148,154 ****
        move_only_function&
        operator=(nullptr_t) noexcept
        {
! 	_Mofunc_base::operator=(nullptr);
  	_M_invoke = nullptr;
  	return *this;
        }
--- 173,179 ----
        move_only_function&
        operator=(nullptr_t) noexcept
        {
! 	_M_reset();
  	_M_invoke = nullptr;
  	return *this;
        }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 167,173 ****
        ~move_only_function() = default;
  
        /// True if a target object is present, false otherwise.
!       explicit operator bool() const noexcept { return _M_invoke != nullptr; }
  
        /** Invoke the target object.
         *
--- 192,199 ----
        ~move_only_function() = default;
  
        /// True if a target object is present, false otherwise.
!       explicit operator bool() const noexcept
!       { return _M_invoke != nullptr; }
  
        /** Invoke the target object.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 181,194 ****
        operator()(_ArgTypes... __args) _GLIBCXX_MOF_CV_REF noexcept(_Noex)
        {
  	__glibcxx_assert(*this != nullptr);
! 	return _M_invoke(this, std::forward<_ArgTypes>(__args)...);
        }
  
        /// Exchange the target objects (if any).
        void
        swap(move_only_function& __x) noexcept
        {
! 	_Mofunc_base::swap(__x);
  	std::swap(_M_invoke, __x._M_invoke);
        }
  
--- 207,220 ----
        operator()(_ArgTypes... __args) _GLIBCXX_MOF_CV_REF noexcept(_Noex)
        {
  	__glibcxx_assert(*this != nullptr);
! 	return _M_invoke(this->_M_storage, std::forward<_ArgTypes>(__args)...);
        }
  
        /// Exchange the target objects (if any).
        void
        swap(move_only_function& __x) noexcept
        {
! 	_Base::swap(__x);
  	std::swap(_M_invoke, __x._M_invoke);
        }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 203,227 ****
        { return __x._M_invoke == nullptr; }
  
      private:
!       template<typename _Tp>
! 	using __param_t = __conditional_t<is_scalar_v<_Tp>, _Tp, _Tp&&>;
  
!       using _Invoker = _Res (*)(_Mofunc_base _GLIBCXX_MOF_CV*,
! 				__param_t<_ArgTypes>...) noexcept(_Noex);
  
!       template<typename _Tp>
! 	static _Res
! 	_S_invoke(_Mofunc_base _GLIBCXX_MOF_CV* __self,
! 		  __param_t<_ArgTypes>... __args) noexcept(_Noex)
! 	{
! 	  using _TpCv = _Tp _GLIBCXX_MOF_CV;
! 	  using _TpInv = _Tp _GLIBCXX_MOF_INV_QUALS;
! 	  return std::__invoke_r<_Res>(
! 	      std::forward<_TpInv>(*_S_access<_TpCv>(__self)),
! 	      std::forward<__param_t<_ArgTypes>>(__args)...);
! 	}
  
!       _Invoker _M_invoke = nullptr;
      };
  
  #undef _GLIBCXX_MOF_CV_REF
--- 229,247 ----
        { return __x._M_invoke == nullptr; }
  
      private:
!       typename _Invoker::__storage_func_t _M_invoke = nullptr;
  
!       template<typename _Func>
! 	friend auto&
! 	__polyfunc::__invoker_of(_Func&) noexcept;
  
!       template<typename _Func>
! 	friend auto&
! 	__polyfunc::__base_of(_Func&) noexcept;
  
!       template<typename _Dst, typename _Src>
! 	friend consteval bool
! 	__polyfunc::__is_invoker_convertible() noexcept;
      };
  
  #undef _GLIBCXX_MOF_CV_REF
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/bits/move_only_function.h gcc-16-20250518/libstdc++-v3/include/bits/move_only_function.h
*** gcc-16-20250511/libstdc++-v3/include/bits/move_only_function.h	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/bits/move_only_function.h	Thu Jan  1 00:00:00 1970
***************
*** 1,218 ****
- // Implementation of std::move_only_function -*- 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, 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/>.
- 
- /** @file include/bits/move_only_function.h
-  *  This is an internal header file, included by other library headers.
-  *  Do not attempt to use it directly. @headername{functional}
-  */
- 
- #ifndef _GLIBCXX_MOVE_ONLY_FUNCTION_H
- #define _GLIBCXX_MOVE_ONLY_FUNCTION_H 1
- 
- #ifdef _GLIBCXX_SYSHDR
- #pragma GCC system_header
- #endif
- 
- #include <bits/version.h>
- 
- #ifdef __glibcxx_move_only_function // C++ >= 23 && HOSTED
- 
- #include <bits/invoke.h>
- #include <bits/utility.h>
- 
- namespace std _GLIBCXX_VISIBILITY(default)
- {
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
- 
-   template<typename... _Signature>
-     class move_only_function; // not defined
- 
-   /// @cond undocumented
-   class _Mofunc_base
-   {
-   protected:
-     _Mofunc_base() noexcept
-     : _M_manage(_S_empty)
-     { }
- 
-     _Mofunc_base(_Mofunc_base&& __x) noexcept
-     {
-       _M_manage = std::__exchange(__x._M_manage, _S_empty);
-       _M_manage(_M_storage, &__x._M_storage);
-     }
- 
-     template<typename _Tp, typename... _Args>
-       static constexpr bool
-       _S_nothrow_init() noexcept
-       {
- 	if constexpr (__stored_locally<_Tp>)
- 	  return is_nothrow_constructible_v<_Tp, _Args...>;
- 	return false;
-       }
- 
-     template<typename _Tp, typename... _Args>
-       void
-       _M_init(_Args&&... __args) noexcept(_S_nothrow_init<_Tp, _Args...>())
-       {
- 	if constexpr (__stored_locally<_Tp>)
- 	  ::new (_M_storage._M_addr()) _Tp(std::forward<_Args>(__args)...);
- 	else
- 	  _M_storage._M_p = new _Tp(std::forward<_Args>(__args)...);
- 
- 	_M_manage = &_S_manage<_Tp>;
-       }
- 
-     _Mofunc_base&
-     operator=(_Mofunc_base&& __x) noexcept
-     {
-       _M_manage(_M_storage, nullptr);
-       _M_manage = std::__exchange(__x._M_manage, _S_empty);
-       _M_manage(_M_storage, &__x._M_storage);
-       return *this;
-     }
- 
-     _Mofunc_base&
-     operator=(nullptr_t) noexcept
-     {
-       _M_manage(_M_storage, nullptr);
-       _M_manage = _S_empty;
-       return *this;
-     }
- 
-     ~_Mofunc_base() { _M_manage(_M_storage, nullptr); }
- 
-     void
-     swap(_Mofunc_base& __x) noexcept
-     {
-       // Order of operations here is more efficient if __x is empty.
-       _Storage __s;
-       __x._M_manage(__s, &__x._M_storage);
-       _M_manage(__x._M_storage, &_M_storage);
-       __x._M_manage(_M_storage, &__s);
-       std::swap(_M_manage, __x._M_manage);
-     }
- 
-     template<typename _Tp, typename _Self>
-       static _Tp*
-       _S_access(_Self* __self) noexcept
-       {
- 	if constexpr (__stored_locally<remove_const_t<_Tp>>)
- 	  return static_cast<_Tp*>(__self->_M_storage._M_addr());
- 	else
- 	  return static_cast<_Tp*>(__self->_M_storage._M_p);
-       }
- 
-   private:
-     struct _Storage
-     {
-       void*       _M_addr() noexcept       { return &_M_bytes[0]; }
-       const void* _M_addr() const noexcept { return &_M_bytes[0]; }
- 
-       // We want to have enough space to store a simple delegate type.
-       struct _Delegate { void (_Storage::*__pfm)(); _Storage* __obj; };
-       union {
- 	void* _M_p;
- 	alignas(_Delegate) alignas(void(*)())
- 	  unsigned char _M_bytes[sizeof(_Delegate)];
-       };
-     };
- 
-     template<typename _Tp>
-       static constexpr bool __stored_locally
- 	= sizeof(_Tp) <= sizeof(_Storage) && alignof(_Tp) <= alignof(_Storage)
- 	    && is_nothrow_move_constructible_v<_Tp>;
- 
-     // A function that either destroys the target object stored in __target,
-     // or moves the target object from *__src to __target.
-     using _Manager = void (*)(_Storage& __target, _Storage* __src) noexcept;
- 
-     // The no-op manager function for objects with no target.
-     static void _S_empty(_Storage&, _Storage*) noexcept { }
- 
-     // The real manager function for a target object of type _Tp.
-     template<typename _Tp>
-       static void
-       _S_manage(_Storage& __target, _Storage* __src) noexcept
-       {
- 	if constexpr (__stored_locally<_Tp>)
- 	  {
- 	    if (__src)
- 	      {
- 		_Tp* __rval = static_cast<_Tp*>(__src->_M_addr());
- 		::new (__target._M_addr()) _Tp(std::move(*__rval));
- 		__rval->~_Tp();
- 	      }
- 	    else
- 	      static_cast<_Tp*>(__target._M_addr())->~_Tp();
- 	  }
- 	else
- 	  {
- 	    if (__src)
- 	      __target._M_p = __src->_M_p;
- 	    else
- 	      delete static_cast<_Tp*>(__target._M_p);
- 	  }
-       }
- 
-     _Storage _M_storage;
-     _Manager _M_manage;
-   };
- 
-   template<typename _Tp>
-     inline constexpr bool __is_move_only_function_v = false;
-   template<typename _Tp>
-     constexpr bool __is_move_only_function_v<move_only_function<_Tp>> = true;
-   /// @endcond
- 
-   namespace __detail::__variant
-   {
-     template<typename> struct _Never_valueless_alt; // see <variant>
- 
-     // Provide the strong exception-safety guarantee when emplacing a
-     // move_only_function into a variant.
-     template<typename... _Signature>
-       struct _Never_valueless_alt<std::move_only_function<_Signature...>>
-       : true_type
-       { };
-   }  // namespace __detail::__variant
- 
- _GLIBCXX_END_NAMESPACE_VERSION
- } // namespace std
- 
- #include "mofunc_impl.h"
- #define _GLIBCXX_MOF_CV const
- #include "mofunc_impl.h"
- #define _GLIBCXX_MOF_REF &
- #include "mofunc_impl.h"
- #define _GLIBCXX_MOF_REF &&
- #include "mofunc_impl.h"
- #define _GLIBCXX_MOF_CV const
- #define _GLIBCXX_MOF_REF &
- #include "mofunc_impl.h"
- #define _GLIBCXX_MOF_CV const
- #define _GLIBCXX_MOF_REF &&
- #include "mofunc_impl.h"
- 
- #endif // __glibcxx_move_only_function
- #endif // _GLIBCXX_MOVE_ONLY_FUNCTION_H
--- 0 ----
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/bits/version.def gcc-16-20250518/libstdc++-v3/include/bits/version.def
*** gcc-16-20250511/libstdc++-v3/include/bits/version.def	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/bits/version.def	Sun May 18 22:33:03 2025
*************** ftms = {
*** 679,686 ****
    values = {
      v = 201703;
      cxxmin = 17;
-     hosted = yes;
-     gthread = yes;
    };
  };
  
--- 679,684 ----
*************** ftms = {
*** 1748,1753 ****
--- 1746,1760 ----
      hosted = yes;
    };
  };
+ 
+ ftms = {
+   name = copyable_function;
+   values = {
+     v = 202306;
+     cxxmin = 26;
+     hosted = yes;
+   };
+ };
  
  ftms = {
    name = out_ptr;
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/bits/version.h gcc-16-20250518/libstdc++-v3/include/bits/version.h
*** gcc-16-20250511/libstdc++-v3/include/bits/version.h	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/bits/version.h	Sun May 18 22:33:03 2025
***************
*** 751,757 ****
  #undef __glibcxx_want_parallel_algorithm
  
  #if !defined(__cpp_lib_scoped_lock)
! # if (__cplusplus >= 201703L) && defined(_GLIBCXX_HAS_GTHREADS) && _GLIBCXX_HOSTED
  #  define __glibcxx_scoped_lock 201703L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_scoped_lock)
  #   define __cpp_lib_scoped_lock 201703L
--- 751,757 ----
  #undef __glibcxx_want_parallel_algorithm
  
  #if !defined(__cpp_lib_scoped_lock)
! # if (__cplusplus >= 201703L)
  #  define __glibcxx_scoped_lock 201703L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_scoped_lock)
  #   define __cpp_lib_scoped_lock 201703L
***************
*** 1948,1953 ****
--- 1948,1963 ----
  #endif /* !defined(__cpp_lib_move_only_function) && defined(__glibcxx_want_move_only_function) */
  #undef __glibcxx_want_move_only_function
  
+ #if !defined(__cpp_lib_copyable_function)
+ # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
+ #  define __glibcxx_copyable_function 202306L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_copyable_function)
+ #   define __cpp_lib_copyable_function 202306L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_copyable_function) && defined(__glibcxx_want_copyable_function) */
+ #undef __glibcxx_want_copyable_function
+ 
  #if !defined(__cpp_lib_out_ptr)
  # if (__cplusplus >= 202100L)
  #  define __glibcxx_out_ptr 202311L
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/c_global/ccomplex gcc-16-20250518/libstdc++-v3/include/c_global/ccomplex
*** gcc-16-20250511/libstdc++-v3/include/c_global/ccomplex	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/c_global/ccomplex	Sun May 18 22:33:03 2025
***************
*** 24,29 ****
--- 24,31 ----
  
  /** @file include/ccomplex
   *  This is a Standard C++ Library header.
+  *
+  *  @since C++11 (removed in C++20)
   */
  
  #ifndef _GLIBCXX_CCOMPLEX
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/c_global/ciso646 gcc-16-20250518/libstdc++-v3/include/c_global/ciso646
*** gcc-16-20250511/libstdc++-v3/include/c_global/ciso646	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/c_global/ciso646	Sun May 18 22:33:03 2025
***************
*** 28,33 ****
--- 28,35 ----
   *
   *  This is the C++ version of the Standard C Library header @c iso646.h,
   *  which is empty in C++.
+  *
+  *  @since C++11 (removed in C++20)
   */
  #ifndef _GLIBCXX_CISO646
  #define _GLIBCXX_CISO646
***************
*** 38,50 ****
  
  #include <bits/c++config.h>
  
! #if __cplusplus >= 202002L && ! _GLIBCXX_USE_DEPRECATED
! #  error "<ciso646> is not a standard header in C++20, use <version> to detect implementation-specific macros"
! #elif __cplusplus >= 201703L && defined __DEPRECATED
! #  pragma GCC diagnostic push
! #  pragma GCC diagnostic ignored "-Wc++23-extensions"
! #  warning "<ciso646> is deprecated in C++17, use <version> to detect implementation-specific macros"
! #  pragma GCC diagnostic pop
  #endif
  
  #endif
--- 40,54 ----
  
  #include <bits/c++config.h>
  
! #if __cplusplus >= 202002L
! #  if ! _GLIBCXX_USE_DEPRECATED
! #    error "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
! #  elif defined __DEPRECATED
! #    pragma GCC diagnostic push
! #    pragma GCC diagnostic ignored "-Wc++23-extensions"
! #    warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
! #    pragma GCC diagnostic pop
! #  endif
  #endif
  
  #endif
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/c_global/cstdalign gcc-16-20250518/libstdc++-v3/include/c_global/cstdalign
*** gcc-16-20250511/libstdc++-v3/include/c_global/cstdalign	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/c_global/cstdalign	Sun May 18 22:33:03 2025
***************
*** 24,29 ****
--- 24,31 ----
  
  /** @file include/cstdalign
   *  This is a Standard C++ Library header.
+  *
+  *  @since C++11 (removed in C++20)
   */
  
  #ifndef _GLIBCXX_CSTDALIGN
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/c_global/cstdbool gcc-16-20250518/libstdc++-v3/include/c_global/cstdbool
*** gcc-16-20250511/libstdc++-v3/include/c_global/cstdbool	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/c_global/cstdbool	Sun May 18 22:33:03 2025
***************
*** 24,29 ****
--- 24,31 ----
  
  /** @file include/cstdbool
   *  This is a Standard C++ Library header.
+  *
+  *  @since C++11 (removed in C++20)
   */
  
  #ifndef _GLIBCXX_CSTDBOOL
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/c_global/ctgmath gcc-16-20250518/libstdc++-v3/include/c_global/ctgmath
*** gcc-16-20250511/libstdc++-v3/include/c_global/ctgmath	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/c_global/ctgmath	Sun May 18 22:33:03 2025
***************
*** 24,29 ****
--- 24,31 ----
  
  /** @file include/ctgmath
   *  This is a Standard C++ Library header.
+  *
+  *  @since C++11 (removed in C++20)
   */
  
  #ifndef _GLIBCXX_CTGMATH
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/std/complex gcc-16-20250518/libstdc++-v3/include/std/complex
*** gcc-16-20250511/libstdc++-v3/include/std/complex	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/std/complex	Sun May 18 22:33:03 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 969,975 ****
  #endif
  
  
!   // 26.2.7/4: arg(__z): Returns the phase angle of __z.
    template<typename _Tp>
      inline _Tp
      __complex_arg(const complex<_Tp>& __z)
--- 969,975 ----
  #endif
  
  
!   // C++11 26.4.7 [complex.value.ops]/4: arg(z): Returns the phase angle of z.
    template<typename _Tp>
      inline _Tp
      __complex_arg(const complex<_Tp>& __z)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2123,2130 ****
    template<typename _Tp> std::complex<_Tp> acosh(const std::complex<_Tp>&);
    template<typename _Tp> std::complex<_Tp> asinh(const std::complex<_Tp>&);
    template<typename _Tp> std::complex<_Tp> atanh(const std::complex<_Tp>&);
-   // DR 595.
-   template<typename _Tp> _Tp               fabs(const std::complex<_Tp>&);
  
    template<typename _Tp>
      inline std::complex<_Tp>
--- 2123,2128 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2309,2315 ****
      acos(const std::complex<_Tp>& __z)
      { return __complex_acos(__z.__rep()); }
  #else
!   /// acos(__z) [8.1.2].
    //  Effects:  Behaves the same as C99 function cacos, defined
    //            in subclause 7.3.5.1.
    template<typename _Tp>
--- 2307,2313 ----
      acos(const std::complex<_Tp>& __z)
      { return __complex_acos(__z.__rep()); }
  #else
!   /// acos(__z) C++11 26.4.8 [complex.transcendentals]
    //  Effects:  Behaves the same as C99 function cacos, defined
    //            in subclause 7.3.5.1.
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2345,2351 ****
      asin(const std::complex<_Tp>& __z)
      { return __complex_asin(__z.__rep()); }
  #else
!   /// asin(__z) [8.1.3].
    //  Effects:  Behaves the same as C99 function casin, defined
    //            in subclause 7.3.5.2.
    template<typename _Tp>
--- 2343,2349 ----
      asin(const std::complex<_Tp>& __z)
      { return __complex_asin(__z.__rep()); }
  #else
!   /// asin(__z) C++11 26.4.8 [complex.transcendentals]
    //  Effects:  Behaves the same as C99 function casin, defined
    //            in subclause 7.3.5.2.
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2389,2395 ****
      atan(const std::complex<_Tp>& __z)
      { return __complex_atan(__z.__rep()); }
  #else
!   /// atan(__z) [8.1.4].
    //  Effects:  Behaves the same as C99 function catan, defined
    //            in subclause 7.3.5.3.
    template<typename _Tp>
--- 2387,2393 ----
      atan(const std::complex<_Tp>& __z)
      { return __complex_atan(__z.__rep()); }
  #else
!   /// atan(__z) C++11 26.4.8 [complex.transcendentals]
    //  Effects:  Behaves the same as C99 function catan, defined
    //            in subclause 7.3.5.3.
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2425,2431 ****
      acosh(const std::complex<_Tp>& __z)
      { return __complex_acosh(__z.__rep()); }
  #else
!   /// acosh(__z) [8.1.5].
    //  Effects:  Behaves the same as C99 function cacosh, defined
    //            in subclause 7.3.6.1.
    template<typename _Tp>
--- 2423,2429 ----
      acosh(const std::complex<_Tp>& __z)
      { return __complex_acosh(__z.__rep()); }
  #else
!   /// acosh(__z) C++11 26.4.8 [complex.transcendentals]
    //  Effects:  Behaves the same as C99 function cacosh, defined
    //            in subclause 7.3.6.1.
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2464,2470 ****
      asinh(const std::complex<_Tp>& __z)
      { return __complex_asinh(__z.__rep()); }
  #else
!   /// asinh(__z) [8.1.6].
    //  Effects:  Behaves the same as C99 function casin, defined
    //            in subclause 7.3.6.2.
    template<typename _Tp>
--- 2462,2468 ----
      asinh(const std::complex<_Tp>& __z)
      { return __complex_asinh(__z.__rep()); }
  #else
!   /// asinh(__z) C++11 26.4.8 [complex.transcendentals]
    //  Effects:  Behaves the same as C99 function casin, defined
    //            in subclause 7.3.6.2.
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2508,2514 ****
      atanh(const std::complex<_Tp>& __z)
      { return __complex_atanh(__z.__rep()); }
  #else
!   /// atanh(__z) [8.1.7].
    //  Effects:  Behaves the same as C99 function catanh, defined
    //            in subclause 7.3.6.3.
    template<typename _Tp>
--- 2506,2512 ----
      atanh(const std::complex<_Tp>& __z)
      { return __complex_atanh(__z.__rep()); }
  #else
!   /// atanh(__z) C++11 26.4.8 [complex.transcendentals]
    //  Effects:  Behaves the same as C99 function catanh, defined
    //            in subclause 7.3.6.3.
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2518,2539 ****
  #endif
  
    template<typename _Tp>
      inline _Tp
!     /// fabs(__z) [8.1.8].
      //  Effects:  Behaves the same as C99 function cabs, defined
      //            in subclause 7.3.8.1.
      fabs(const std::complex<_Tp>& __z)
      { return std::abs(__z); }
  
!   /// Additional overloads [8.1.9].
    template<typename _Tp>
      inline typename __gnu_cxx::__promote<_Tp>::__type
      arg(_Tp __x)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
  #if (_GLIBCXX11_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC)
!       return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L)
! 	                       : __type();
  #else
        return std::arg(std::complex<__type>(__x));
  #endif
--- 2516,2539 ----
  #endif
  
    template<typename _Tp>
+     _GLIBCXX11_DEPRECATED_SUGGEST("std::abs")
      inline _Tp
!     /// fabs(__z) TR1 8.1.8 [tr.c99.cmplx.fabs]
      //  Effects:  Behaves the same as C99 function cabs, defined
      //            in subclause 7.3.8.1.
      fabs(const std::complex<_Tp>& __z)
      { return std::abs(__z); }
  
!   // Additional overloads C++11 26.4.9 [cmplx.over]
! 
    template<typename _Tp>
      inline typename __gnu_cxx::__promote<_Tp>::__type
      arg(_Tp __x)
      {
        typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
  #if (_GLIBCXX11_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC)
!       return __builtin_signbit(__type(__x))
! 	       ? __type(3.1415926535897932384626433832795029L) : __type();
  #else
        return std::arg(std::complex<__type>(__x));
  #endif
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/std/expected gcc-16-20250518/libstdc++-v3/include/std/expected
*** gcc-16-20250511/libstdc++-v3/include/std/expected	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/std/expected	Sun May 18 22:33:03 2025
*************** namespace __expected
*** 1169,1181 ****
  	    return !__y.has_value() && bool(__x.error() == __y.error());
  	}
  
!       template<typename _Up>
  	requires (!__expected::__is_expected<_Up>)
  	  && requires (const _Tp& __t, const _Up& __u) {
  	    { __t == __u } -> convertible_to<bool>;
  	  }
  	friend constexpr bool
! 	operator==(const expected& __x, const _Up& __v)
  	noexcept(noexcept(bool(*__x == __v)))
  	{ return __x.has_value() && bool(*__x == __v); }
  
--- 1169,1181 ----
  	    return !__y.has_value() && bool(__x.error() == __y.error());
  	}
  
!       template<typename _Up, same_as<_Tp> _Vp>
  	requires (!__expected::__is_expected<_Up>)
  	  && requires (const _Tp& __t, const _Up& __u) {
  	    { __t == __u } -> convertible_to<bool>;
  	  }
  	friend constexpr bool
! 	operator==(const expected<_Vp, _Er>& __x, const _Up& __v)
  	noexcept(noexcept(bool(*__x == __v)))
  	{ return __x.has_value() && bool(*__x == __v); }
  
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/std/format gcc-16-20250518/libstdc++-v3/include/std/format
*** gcc-16-20250511/libstdc++-v3/include/std/format	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/std/format	Sun May 18 22:33:03 2025
*************** namespace __format
*** 1863,1882 ****
        _Spec<_CharT> _M_spec{};
      };
  
    // Decide how 128-bit floating-point types should be formatted (or not).
!   // When supported, the typedef __format::__float128_t is the type that
!   // format arguments should be converted to for storage in basic_format_arg.
    // Define the macro _GLIBCXX_FORMAT_F128 to say they're supported.
!   // _GLIBCXX_FORMAT_F128=1 means __float128, _Float128 etc. will be formatted
!   // by converting them to long double (or __ieee128 for powerpc64le).
!   // _GLIBCXX_FORMAT_F128=2 means basic_format_arg needs to enable explicit
!   // support for _Float128, rather than formatting it as another type.
  #undef _GLIBCXX_FORMAT_F128
  
  #ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
  
    // Format 128-bit floating-point types using __ieee128.
!   using __float128_t = __ieee128;
  # define _GLIBCXX_FORMAT_F128 1
  
  #ifdef __LONG_DOUBLE_IEEE128__
--- 1863,1886 ----
        _Spec<_CharT> _M_spec{};
      };
  
+ #ifdef __BFLT16_DIG__
+    using __bflt16_t = decltype(0.0bf16);
+ #endif
+ 
    // Decide how 128-bit floating-point types should be formatted (or not).
!   // When supported, the typedef __format::__flt128_t is the type that format
!   // arguments should be converted to before passing them to __formatter_fp.
    // Define the macro _GLIBCXX_FORMAT_F128 to say they're supported.
!   // The __float128, _Float128 will be formatted by converting them to:
!   // __ieee128 (same as __float128) when _GLIBCXX_FORMAT_F128=1,
!   // long double when _GLIBCXX_FORMAT_F128=2,
!   // _Float128 when _GLIBCXX_FORMAT_F128=3.
  #undef _GLIBCXX_FORMAT_F128
  
  #ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
  
    // Format 128-bit floating-point types using __ieee128.
!   using __flt128_t = __ieee128;
  # define _GLIBCXX_FORMAT_F128 1
  
  #ifdef __LONG_DOUBLE_IEEE128__
*************** namespace __format
*** 1910,1923 ****
  #elif defined _GLIBCXX_LDOUBLE_IS_IEEE_BINARY128
  
    // Format 128-bit floating-point types using long double.
!   using __float128_t = long double;
! # define _GLIBCXX_FORMAT_F128 1
  
  #elif __FLT128_DIG__ && defined(_GLIBCXX_HAVE_FLOAT128_MATH)
  
    // Format 128-bit floating-point types using _Float128.
!   using __float128_t = _Float128;
! # define _GLIBCXX_FORMAT_F128 2
  
  # if __cplusplus == 202002L
    // These overloads exist in the library, but are not declared for C++20.
--- 1914,1927 ----
  #elif defined _GLIBCXX_LDOUBLE_IS_IEEE_BINARY128
  
    // Format 128-bit floating-point types using long double.
!   using __flt128_t = long double;
! # define _GLIBCXX_FORMAT_F128 2
  
  #elif __FLT128_DIG__ && defined(_GLIBCXX_HAVE_FLOAT128_MATH)
  
    // Format 128-bit floating-point types using _Float128.
!   using __flt128_t = _Float128;
! # define _GLIBCXX_FORMAT_F128 3
  
  # if __cplusplus == 202002L
    // These overloads exist in the library, but are not declared for C++20.
*************** namespace __format
*** 2947,2954 ****
      };
  #endif
  
! #if defined(__FLT128_DIG__) && _GLIBCXX_FORMAT_F128 == 1
!   // Reuse __formatter_fp<C>::format<__float128_t, Out> for _Float128.
    template<__format::__char _CharT>
      struct formatter<_Float128, _CharT>
      {
--- 2951,2958 ----
      };
  #endif
  
! #if defined(__FLT128_DIG__) && _GLIBCXX_FORMAT_F128
!   // Use __formatter_fp<C>::format<__format::__flt128_t, Out> for _Float128.
    template<__format::__char _CharT>
      struct formatter<_Float128, _CharT>
      {
*************** namespace __format
*** 2962,2978 ****
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(_Float128 __u, basic_format_context<_Out, _CharT>& __fc) const
! 	{ return _M_f.format((__format::__float128_t)__u, __fc); }
  
      private:
        __format::__formatter_fp<_CharT> _M_f;
      };
  #endif
  
  #if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
    // Reuse __formatter_fp<C>::format<float, Out> for bfloat16_t.
    template<__format::__char _CharT>
!     struct formatter<__gnu_cxx::__bfloat16_t, _CharT>
      {
        formatter() = default;
  
--- 2966,3010 ----
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(_Float128 __u, basic_format_context<_Out, _CharT>& __fc) const
! 	{ return _M_f.format((__format::__flt128_t)__u, __fc); }
  
      private:
        __format::__formatter_fp<_CharT> _M_f;
      };
  #endif
  
+ #if defined(__SIZEOF_FLOAT128__) && _GLIBCXX_FORMAT_F128 > 1
+   // Reuse __formatter_fp<C>::format<__format::__flt128_t, Out> for __float128.
+   // This formatter is not declared if _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT is true,
+   // as __float128 when present is same type as __ieee128, which may be same as
+   // long double.
+   template<__format::__char _CharT>
+     struct formatter<__float128, _CharT>
+     {
+       formatter() = default;
+ 
+       [[__gnu__::__always_inline__]]
+       constexpr typename basic_format_parse_context<_CharT>::iterator
+       parse(basic_format_parse_context<_CharT>& __pc)
+       { return _M_f.parse(__pc); }
+ 
+       template<typename _Out>
+ 	typename basic_format_context<_Out, _CharT>::iterator
+ 	format(__float128 __u, basic_format_context<_Out, _CharT>& __fc) const
+ 	{ return _M_f.format((__format::__flt128_t)__u, __fc); }
+ 
+     private:
+       __format::__formatter_fp<_CharT> _M_f;
+ 
+       static_assert( !is_same_v<__float128, long double>,
+ 		     "This specialization should not be used for long double" );
+     };
+ #endif
+ 
  #if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
    // Reuse __formatter_fp<C>::format<float, Out> for bfloat16_t.
    template<__format::__char _CharT>
!     struct formatter<__format::__bflt16_t, _CharT>
      {
        formatter() = default;
  
*************** namespace __format
*** 3835,3850 ****
    enum _Arg_t : unsigned char {
      _Arg_none, _Arg_bool, _Arg_c, _Arg_i, _Arg_u, _Arg_ll, _Arg_ull,
      _Arg_flt, _Arg_dbl, _Arg_ldbl, _Arg_str, _Arg_sv, _Arg_ptr, _Arg_handle,
!     _Arg_i128, _Arg_u128,
!     _Arg_bf16, _Arg_f16, _Arg_f32, _Arg_f64, // These are unused.
  #ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
!     _Arg_next_value_,
!     _Arg_f128 = _Arg_ldbl,
!     _Arg_ibm128 = _Arg_next_value_,
! #else
!     _Arg_f128,
  #endif
-     _Arg_max_
    };
  
    template<typename _Context>
--- 3867,3880 ----
    enum _Arg_t : unsigned char {
      _Arg_none, _Arg_bool, _Arg_c, _Arg_i, _Arg_u, _Arg_ll, _Arg_ull,
      _Arg_flt, _Arg_dbl, _Arg_ldbl, _Arg_str, _Arg_sv, _Arg_ptr, _Arg_handle,
!     _Arg_i128, _Arg_u128, _Arg_float128,
!     _Arg_bf16, _Arg_f16, _Arg_f32, _Arg_f64,
!     _Arg_max_,
! 
  #ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
!     _Arg_ibm128 = _Arg_ldbl,
!     _Arg_ieee128 = _Arg_float128,
  #endif
    };
  
    template<typename _Context>
*************** namespace __format
*** 3871,3876 ****
--- 3901,3912 ----
  	double _M_dbl;
  #ifndef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT // No long double if it's ambiguous.
  	long double _M_ldbl;
+ #else
+ 	__ibm128  _M_ibm128;
+ 	__ieee128 _M_ieee128;
+ #endif
+ #ifdef __SIZEOF_FLOAT128__
+ 	__float128 _M_float128;
  #endif
  	const _CharT* _M_str;
  	basic_string_view<_CharT> _M_sv;
*************** namespace __format
*** 3880,3890 ****
  	__int128 _M_i128;
  	unsigned __int128 _M_u128;
  #endif
! #ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
! 	__ieee128 _M_f128;
! 	__ibm128  _M_ibm128;
! #elif _GLIBCXX_FORMAT_F128 == 2
! 	__float128_t _M_f128;
  #endif
        };
  
--- 3916,3932 ----
  	__int128 _M_i128;
  	unsigned __int128 _M_u128;
  #endif
! #ifdef __BFLT16_DIG__
! 	__bflt16_t _M_bf16;
! #endif
! #ifdef __FLT16_DIG__
! 	_Float16 _M_f16;
! #endif
! #ifdef __FLT32_DIG__
! 	_Float32 _M_f32;
! #endif
! #ifdef __FLT64_DIG__
! 	_Float64 _M_f64;
  #endif
        };
  
*************** namespace __format
*** 3922,3931 ****
  	  else if constexpr (is_same_v<_Tp, long double>)
  	    return __u._M_ldbl;
  #else
- 	  else if constexpr (is_same_v<_Tp, __ieee128>)
- 	    return __u._M_f128;
  	  else if constexpr (is_same_v<_Tp, __ibm128>)
  	    return __u._M_ibm128;
  #endif
  	  else if constexpr (is_same_v<_Tp, const _CharT*>)
  	    return __u._M_str;
--- 3964,3977 ----
  	  else if constexpr (is_same_v<_Tp, long double>)
  	    return __u._M_ldbl;
  #else
  	  else if constexpr (is_same_v<_Tp, __ibm128>)
  	    return __u._M_ibm128;
+ 	  else if constexpr (is_same_v<_Tp, __ieee128>)
+ 	    return __u._M_ieee128;
+ #endif
+ #ifdef __SIZEOF_FLOAT128__
+ 	  else if constexpr (is_same_v<_Tp, __float128>)
+ 	    return __u._M_float128;
  #endif
  	  else if constexpr (is_same_v<_Tp, const _CharT*>)
  	    return __u._M_str;
*************** namespace __format
*** 3939,3947 ****
  	  else if constexpr (is_same_v<_Tp, unsigned __int128>)
  	    return __u._M_u128;
  #endif
! #if _GLIBCXX_FORMAT_F128 == 2
! 	  else if constexpr (is_same_v<_Tp, __float128_t>)
! 	    return __u._M_f128;
  #endif
  	  else if constexpr (derived_from<_Tp, _HandleBase>)
  	    return static_cast<_Tp&>(__u._M_handle);
--- 3985,4005 ----
  	  else if constexpr (is_same_v<_Tp, unsigned __int128>)
  	    return __u._M_u128;
  #endif
! #ifdef __BFLT16_DIG__
! 	  else if constexpr (is_same_v<_Tp, __bflt16_t>)
! 	    return __u._M_bf16;
! #endif
! #ifdef __FLT16_DIG__
! 	  else if constexpr (is_same_v<_Tp, _Float16>)
! 	    return __u._M_f16;
! #endif
! #ifdef __FLT32_DIG__
! 	  else if constexpr (is_same_v<_Tp, _Float32>)
! 	    return __u._M_f32;
! #endif
! #ifdef __FLT64_DIG__
! 	  else if constexpr (is_same_v<_Tp, _Float64>)
! 	    return __u._M_f64;
  #endif
  	  else if constexpr (derived_from<_Tp, _HandleBase>)
  	    return static_cast<_Tp&>(__u._M_handle);
*************** namespace __format
*** 4120,4155 ****
  	  else if constexpr (is_same_v<_Td, __ieee128>)
  	    return type_identity<__ieee128>();
  #endif
! 
! #if defined(__FLT16_DIG__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
! 	  else if constexpr (is_same_v<_Td, _Float16>)
! 	    return type_identity<float>();
  #endif
! 
! #if defined(__BFLT16_DIG__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
! 	  else if constexpr (is_same_v<_Td, decltype(0.0bf16)>)
! 	    return type_identity<float>();
  #endif
- 
  #if defined(__FLT32_DIG__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  	  else if constexpr (is_same_v<_Td, _Float32>)
! 	    return type_identity<float>();
  #endif
- 
  #if defined(__FLT64_DIG__) && defined(_GLIBCXX_DOUBLE_IS_IEEE_BINARY64)
  	  else if constexpr (is_same_v<_Td, _Float64>)
! 	    return type_identity<double>();
! #endif
! 
! #if _GLIBCXX_FORMAT_F128
! # if __FLT128_DIG__
! 	  else if constexpr (is_same_v<_Td, _Float128>)
! 	    return type_identity<__format::__float128_t>();
! # endif
! # if __SIZEOF_FLOAT128__
! 	  else if constexpr (is_same_v<_Td, __float128>)
! 	    return type_identity<__format::__float128_t>();
! # endif
  #endif
  	  else if constexpr (__is_specialization_of<_Td, basic_string_view>
  			    || __is_specialization_of<_Td, basic_string>)
--- 4178,4202 ----
  	  else if constexpr (is_same_v<_Td, __ieee128>)
  	    return type_identity<__ieee128>();
  #endif
! #if defined(__SIZEOF_FLOAT128__) && _GLIBCXX_FORMAT_F128
! 	  else if constexpr (is_same_v<_Td, __float128>)
! 	    return type_identity<__float128>();
  #endif
! #if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
! 	  else if constexpr (is_same_v<_Td, __format::__bflt16_t>)
! 	    return type_identity<__format::__bflt16_t>();
! #endif
! #if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
! 	  else if constexpr (is_same_v<_Td, _Float16>)
! 	    return type_identity<_Float16>();
  #endif
  #if defined(__FLT32_DIG__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  	  else if constexpr (is_same_v<_Td, _Float32>)
! 	    return type_identity<_Float32>();
  #endif
  #if defined(__FLT64_DIG__) && defined(_GLIBCXX_DOUBLE_IS_IEEE_BINARY64)
  	  else if constexpr (is_same_v<_Td, _Float64>)
! 	    return type_identity<_Float64>();
  #endif
  	  else if constexpr (__is_specialization_of<_Td, basic_string_view>
  			    || __is_specialization_of<_Td, basic_string>)
*************** namespace __format
*** 4205,4211 ****
  	  else if constexpr (is_same_v<_Tp, __ibm128>)
  	    return _Arg_ibm128;
  	  else if constexpr (is_same_v<_Tp, __ieee128>)
! 	    return _Arg_f128;
  #endif
  	  else if constexpr (is_same_v<_Tp, const _CharT*>)
  	    return _Arg_str;
--- 4252,4278 ----
  	  else if constexpr (is_same_v<_Tp, __ibm128>)
  	    return _Arg_ibm128;
  	  else if constexpr (is_same_v<_Tp, __ieee128>)
! 	    return _Arg_ieee128;
! #endif
! #if defined(__SIZEOF_FLOAT128__) && _GLIBCXX_FORMAT_F128
! 	  else if constexpr (is_same_v<_Tp, __float128>)
! 	    return _Arg_float128;
! #endif
! #if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
! 	  else if constexpr (is_same_v<_Tp, __format::__bflt16_t>)
! 	    return _Arg_bf16;
! #endif
! #if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
! 	  else if constexpr (is_same_v<_Tp, _Float16>)
! 	    return _Arg_f16;
! #endif
! #if defined(__FLT32_DIG__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
! 	  else if constexpr (is_same_v<_Tp, _Float32>)
! 	    return _Arg_f32;
! #endif
! #if defined(__FLT64_DIG__) && defined(_GLIBCXX_DOUBLE_IS_IEEE_BINARY64)
! 	  else if constexpr (is_same_v<_Tp, _Float64>)
! 	    return _Arg_f64;
  #endif
  	  else if constexpr (is_same_v<_Tp, const _CharT*>)
  	    return _Arg_str;
*************** namespace __format
*** 4219,4229 ****
  	  else if constexpr (is_same_v<_Tp, unsigned __int128>)
  	    return _Arg_u128;
  #endif
- 
- #if _GLIBCXX_FORMAT_F128 == 2
- 	  else if constexpr (is_same_v<_Tp, __format::__float128_t>)
- 	    return _Arg_f128;
- #endif
  	  else if constexpr (is_same_v<_Tp, handle>)
  	    return _Arg_handle;
  	}
--- 4286,4291 ----
*************** namespace __format
*** 4296,4308 ****
  #ifndef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
  	    case _Arg_ldbl:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_ldbl);
  #else
- 	    case _Arg_f128:
- 	      return std::forward<_Visitor>(__vis)(_M_val._M_f128);
  	    case _Arg_ibm128:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_ibm128);
  #endif
  #endif
  	    case _Arg_str:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_str);
  	    case _Arg_sv:
--- 4358,4390 ----
  #ifndef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
  	    case _Arg_ldbl:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_ldbl);
+ #if defined(__SIZEOF_FLOAT128__) && _GLIBCXX_FORMAT_F128
+ 	    case _Arg_float128:
+ 	      return std::forward<_Visitor>(__vis)(_M_val._M_float128);
+ #endif
  #else
  	    case _Arg_ibm128:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_ibm128);
+ 	    case _Arg_ieee128:
+ 	      return std::forward<_Visitor>(__vis)(_M_val._M_ieee128);
  #endif
+ #if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
+ 	    case _Arg_bf16:
+ 	      return std::forward<_Visitor>(__vis)(_M_val._M_bf16);
  #endif
+ #if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
+ 	    case _Arg_f16:
+ 	      return std::forward<_Visitor>(__vis)(_M_val._M_f16);
+ #endif
+ #if defined(__FLT32_DIG__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
+ 	    case _Arg_f32:
+ 	      return std::forward<_Visitor>(__vis)(_M_val._M_f32);
+ #endif
+ #if defined(__FLT64_DIG__) && defined(_GLIBCXX_DOUBLE_IS_IEEE_BINARY64)
+ 	    case _Arg_f64:
+ 	      return std::forward<_Visitor>(__vis)(_M_val._M_f64);
+ #endif
+ #endif // __glibcxx_to_chars
  	    case _Arg_str:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_str);
  	    case _Arg_sv:
*************** namespace __format
*** 4320,4333 ****
  	    case _Arg_u128:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_u128);
  #endif
- 
- #if _GLIBCXX_FORMAT_F128 == 2
- 	    case _Arg_f128:
- 	      return std::forward<_Visitor>(__vis)(_M_val._M_f128);
- #endif
- 
  	    default:
- 	      // _Arg_f16 etc.
  	      __builtin_unreachable();
  	  }
  	}
--- 4402,4408 ----
*************** namespace __format
*** 5389,5401 ****
      debug_string
    };
  
!   /// @cond undocumented
    template<typename _Rg>
!     constexpr auto format_kind =
!     __primary_template_not_defined(
!       format_kind<_Rg> // you can specialize this for non-const input ranges
!     );
  
    template<typename _Tp>
      consteval range_format
      __fmt_kind()
--- 5464,5485 ----
      debug_string
    };
  
!   /** @brief A constant determining how a range should be formatted.
!    *
!    * The primary template of `std::format_kind` cannot be instantiated.
!    * There is a partial specialization for input ranges and you can
!    * specialize the variable template for your own cv-unqualified types
!    * that satisfy the `ranges::input_range` concept.
!    *
!    * @since C++23
!    */
    template<typename _Rg>
!     constexpr auto format_kind = []{
!       static_assert(false, "cannot use primary template of 'std::format_kind'");
!       return type_identity<_Rg>{};
!     }();
  
+   /// @cond undocumented
    template<typename _Tp>
      consteval range_format
      __fmt_kind()
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/std/functional gcc-16-20250518/libstdc++-v3/include/std/functional
*** gcc-16-20250511/libstdc++-v3/include/std/functional	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/std/functional	Sun May 18 22:33:03 2025
***************
*** 52,57 ****
--- 52,71 ----
  
  #if __cplusplus >= 201103L
  
+ #define __glibcxx_want_boyer_moore_searcher
+ #define __glibcxx_want_bind_front
+ #define __glibcxx_want_bind_back
+ #define __glibcxx_want_constexpr_functional
+ #define __glibcxx_want_copyable_function
+ #define __glibcxx_want_invoke
+ #define __glibcxx_want_invoke_r
+ #define __glibcxx_want_move_only_function
+ #define __glibcxx_want_not_fn
+ #define __glibcxx_want_ranges
+ #define __glibcxx_want_reference_wrapper
+ #define __glibcxx_want_transparent_operators
+ #include <bits/version.h>
+ 
  #include <tuple>
  #include <type_traits>
  #include <bits/functional_hash.h>
***************
*** 72,94 ****
  # include <bits/ranges_cmp.h> // std::identity, ranges::equal_to etc.
  # include <compare>
  #endif
! #if __cplusplus > 202002L && _GLIBCXX_HOSTED
! # include <bits/move_only_function.h>
  #endif
  
- #define __glibcxx_want_boyer_moore_searcher
- #define __glibcxx_want_bind_front
- #define __glibcxx_want_bind_back
- #define __glibcxx_want_constexpr_functional
- #define __glibcxx_want_invoke
- #define __glibcxx_want_invoke_r
- #define __glibcxx_want_move_only_function
- #define __glibcxx_want_not_fn
- #define __glibcxx_want_ranges
- #define __glibcxx_want_reference_wrapper
- #define __glibcxx_want_transparent_operators
- #include <bits/version.h>
- 
  #endif // C++11
  
  namespace std _GLIBCXX_VISIBILITY(default)
--- 86,95 ----
  # include <bits/ranges_cmp.h> // std::identity, ranges::equal_to etc.
  # include <compare>
  #endif
! #if defined(__glibcxx_move_only_function) || defined(__glibcxx_copyable_function)
! # include <bits/funcwrap.h>
  #endif
  
  #endif // C++11
  
  namespace std _GLIBCXX_VISIBILITY(default)
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/std/mdspan gcc-16-20250518/libstdc++-v3/include/std/mdspan
*** gcc-16-20250511/libstdc++-v3/include/std/mdspan	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/std/mdspan	Sun May 18 22:33:03 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 163,172 ****
    template<typename _IndexType, size_t... _Extents>
      class extents
      {
!       static_assert(is_integral_v<_IndexType>, "_IndexType must be integral.");
        static_assert(
  	  (__mdspan::__valid_static_extent<_Extents, _IndexType> && ...),
! 	  "Extents must either be dynamic or representable as _IndexType");
  
      public:
        using index_type = _IndexType;
--- 163,173 ----
    template<typename _IndexType, size_t... _Extents>
      class extents
      {
!       static_assert(__is_standard_integer<_IndexType>::value,
! 		    "IndexType must be a signed or unsigned integer type");
        static_assert(
  	  (__mdspan::__valid_static_extent<_Extents, _IndexType> && ...),
! 	  "Extents must either be dynamic or representable as IndexType");
  
      public:
        using index_type = _IndexType;
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/std/mutex gcc-16-20250518/libstdc++-v3/include/std/mutex
*** gcc-16-20250511/libstdc++-v3/include/std/mutex	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/std/mutex	Sun May 18 22:33:03 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 733,739 ****
  	}
      }
  
! #ifdef __cpp_lib_scoped_lock // C++ >= 17 && hosted && gthread
    /** @brief A scoped lock type for multiple lockable objects.
     *
     * A scoped_lock controls mutex ownership within a scope, releasing
--- 733,739 ----
  	}
      }
  
! #ifdef __cpp_lib_scoped_lock // C++ >= 17
    /** @brief A scoped lock type for multiple lockable objects.
     *
     * A scoped_lock controls mutex ownership within a scope, releasing
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/std/type_traits gcc-16-20250518/libstdc++-v3/include/std/type_traits
*** gcc-16-20250511/libstdc++-v3/include/std/type_traits	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/std/type_traits	Sun May 18 22:33:03 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 3212,3218 ****
--- 3212,3222 ----
  
    template<typename _Fn, typename... _ArgTypes>
      struct __is_invocable
+ #if _GLIBCXX_USE_BUILTIN_TRAIT(__is_invocable)
+     : __bool_constant<__is_invocable(_Fn, _ArgTypes...)>
+ #else
      : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type
+ #endif
      { };
  
    template<typename _Fn, typename _Tp, typename... _Args>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 3263,3270 ****
--- 3267,3278 ----
    // __is_nothrow_invocable (std::is_nothrow_invocable for C++11)
    template<typename _Fn, typename... _Args>
      struct __is_nothrow_invocable
+ #if _GLIBCXX_USE_BUILTIN_TRAIT(__is_nothrow_invocable)
+     : __bool_constant<__is_nothrow_invocable(_Fn, _Args...)>
+ #else
      : __and_<__is_invocable<_Fn, _Args...>,
               __call_is_nothrow_<_Fn, _Args...>>::type
+ #endif
      { };
  
  #pragma GCC diagnostic push
*************** template <typename _From, typename _To>
*** 3704,3713 ****
    inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value;
  #endif
  template<typename _Fn, typename... _Args>
!   inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value;
  template<typename _Fn, typename... _Args>
    inline constexpr bool is_nothrow_invocable_v
      = is_nothrow_invocable<_Fn, _Args...>::value;
  template<typename _Ret, typename _Fn, typename... _Args>
    inline constexpr bool is_invocable_r_v
      = is_invocable_r<_Ret, _Fn, _Args...>::value;
--- 3712,3730 ----
    inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value;
  #endif
  template<typename _Fn, typename... _Args>
!   inline constexpr bool is_invocable_v
! #if _GLIBCXX_USE_BUILTIN_TRAIT(__is_invocable)
!     = __is_invocable(_Fn, _Args...);
! #else
!     = is_invocable<_Fn, _Args...>::value;
! #endif
  template<typename _Fn, typename... _Args>
    inline constexpr bool is_nothrow_invocable_v
+ #if _GLIBCXX_USE_BUILTIN_TRAIT(__is_nothrow_invocable)
+     = __is_nothrow_invocable(_Fn, _Args...);
+ #else
      = is_nothrow_invocable<_Fn, _Args...>::value;
+ #endif
  template<typename _Ret, typename _Fn, typename... _Args>
    inline constexpr bool is_invocable_r_v
      = is_invocable_r<_Ret, _Fn, _Args...>::value;
diff -Nrcpad gcc-16-20250511/libstdc++-v3/include/std/utility gcc-16-20250518/libstdc++-v3/include/std/utility
*** gcc-16-20250511/libstdc++-v3/include/std/utility	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/include/std/utility	Sun May 18 22:33:03 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 201,207 ****
  #ifdef __cpp_lib_to_underlying // C++ >= 23
    /// Convert an object of enumeration type to its underlying type.
    template<typename _Tp>
!     [[nodiscard]]
      constexpr underlying_type_t<_Tp>
      to_underlying(_Tp __value) noexcept
      { return static_cast<underlying_type_t<_Tp>>(__value); }
--- 201,207 ----
  #ifdef __cpp_lib_to_underlying // C++ >= 23
    /// Convert an object of enumeration type to its underlying type.
    template<typename _Tp>
!     [[nodiscard, __gnu__::__always_inline__]]
      constexpr underlying_type_t<_Tp>
      to_underlying(_Tp __value) noexcept
      { return static_cast<underlying_type_t<_Tp>>(__value); }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/python/hook.in gcc-16-20250518/libstdc++-v3/python/hook.in
*** gcc-16-20250511/libstdc++-v3/python/hook.in	Sun May 11 22:32:44 2025
--- gcc-16-20250518/libstdc++-v3/python/hook.in	Sun May 18 22:33:04 2025
*************** if gdb.current_objfile () is not None:
*** 55,64 ****
      if not dir_ in sys.path:
          sys.path.insert(0, dir_)
  
!     gdb.execute('skip -rfu ^std::(move|forward|as_const|(__)?addressof)')
!     gdb.execute('skip -rfu ^std::(shared|unique)_ptr<.*>::(get|operator)')
!     gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|(forward_)?list|(unordered_|flat_)?(multi)?(map|set)|span)<.*>::(c?r?(begin|end)|front|back|data|size|empty)')
!     gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|span)<.*>::operator.]')
  
  # Call a function as a plain import would not execute body of the included file
  # on repeated reloads of this object file.
--- 55,68 ----
      if not dir_ in sys.path:
          sys.path.insert(0, dir_)
  
!     gdb.execute('skip -rfu ^std::(move|forward|as_const|(__)?addressof)',
!                 to_string=True)
!     gdb.execute('skip -rfu ^std::(shared|unique)_ptr<.*>::(get|operator)',
!                 to_string=True)
!     gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|(forward_)?list|(unordered_|flat_)?(multi)?(map|set)|span)<.*>::(c?r?(begin|end)|front|back|data|size|empty)',
!                 to_string=True)
!     gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|span)<.*>::operator.]',
!                 to_string=True)
  
  # Call a function as a plain import would not execute body of the included file
  # on repeated reloads of this object file.
diff -Nrcpad gcc-16-20250511/libstdc++-v3/src/c++23/std.cc.in gcc-16-20250518/libstdc++-v3/src/c++23/std.cc.in
*** gcc-16-20250511/libstdc++-v3/src/c++23/std.cc.in	Sun May 11 22:32:45 2025
--- gcc-16-20250518/libstdc++-v3/src/c++23/std.cc.in	Sun May 18 22:33:04 2025
*************** export namespace std
*** 1412,1417 ****
--- 1412,1420 ----
  #if __cpp_lib_move_only_function
    using std::move_only_function;
  #endif
+ #if __cpp_lib_copyable_function
+   using std::copyable_function;
+ #endif
    using std::multiplies;
    using std::negate;
    using std::not_equal_to;
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc gcc-16-20250518/libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc	Sun May 18 22:33:04 2025
***************
*** 0 ****
--- 1,7 ----
+ // { dg-options " -Wdeprecated -fno-operator-names" }
+ // { dg-do preprocess }
+ 
+ // Should get a warning for C++20 and up without -D_GLIBCXX_USE_DEPRECATED=0
+ // { dg-warning "not a standard header" "" { target c++20 } 0 }
+ 
+ #include "macros.cc"
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc gcc-16-20250518/libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc	Sun May 11 22:32:45 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc	Sun May 18 22:33:04 2025
***************
*** 3,9 ****
  
  #include <ciso646>
  
- // { dg-warning "deprecated" "" { target c++17_only } 0 }
  // { dg-error "not a standard header" "" { target c++20 } 0 }
  
  #ifdef and
--- 3,8 ----
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/call.cc gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/call.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/call.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/call.cc	Sun May 18 22:33:04 2025
***************
*** 0 ****
--- 1,224 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-effective-target hosted }
+ 
+ #include <functional>
+ #include <utility>
+ #include <testsuite_hooks.h>
+ 
+ using std::copyable_function;
+ 
+ using std::is_same_v;
+ using std::is_invocable_v;
+ using std::is_nothrow_invocable_v;
+ using std::invoke_result_t;
+ 
+ // Check return types
+ static_assert( is_same_v<void, invoke_result_t<copyable_function<void()>>> );
+ static_assert( is_same_v<int, invoke_result_t<copyable_function<int()>>> );
+ static_assert( is_same_v<int&, invoke_result_t<copyable_function<int&()>>> );
+ 
+ // With const qualifier
+ static_assert( ! is_invocable_v< copyable_function<void()> const > );
+ static_assert( ! is_invocable_v< copyable_function<void()> const &> );
+ static_assert( is_invocable_v< copyable_function<void() const> > );
+ static_assert( is_invocable_v< copyable_function<void() const> &> );
+ static_assert( is_invocable_v< copyable_function<void() const> const > );
+ static_assert( is_invocable_v< copyable_function<void() const> const &> );
+ 
+ // With no ref-qualifier
+ static_assert( is_invocable_v< copyable_function<void()> > );
+ static_assert( is_invocable_v< copyable_function<void()> &> );
+ static_assert( is_invocable_v< copyable_function<void() const> > );
+ static_assert( is_invocable_v< copyable_function<void() const> &> );
+ static_assert( is_invocable_v< copyable_function<void() const> const > );
+ static_assert( is_invocable_v< copyable_function<void() const> const &> );
+ 
+ // With & ref-qualifier
+ static_assert( ! is_invocable_v< copyable_function<void()&> > );
+ static_assert( is_invocable_v< copyable_function<void()&> &> );
+ static_assert( is_invocable_v< copyable_function<void() const&> > );
+ static_assert( is_invocable_v< copyable_function<void() const&> &> );
+ static_assert( is_invocable_v< copyable_function<void() const&> const > );
+ static_assert( is_invocable_v< copyable_function<void() const&> const &> );
+ 
+ // With && ref-qualifier
+ static_assert( is_invocable_v< copyable_function<void()&&> > );
+ static_assert( ! is_invocable_v< copyable_function<void()&&> &> );
+ static_assert( is_invocable_v< copyable_function<void() const&&> > );
+ static_assert( ! is_invocable_v< copyable_function<void() const&&> &> );
+ static_assert( is_invocable_v< copyable_function<void() const&&> const > );
+ static_assert( ! is_invocable_v< copyable_function<void() const&&> const &> );
+ 
+ // With noexcept-specifier
+ static_assert( ! is_nothrow_invocable_v< copyable_function<void()> > );
+ static_assert( ! is_nothrow_invocable_v< copyable_function<void() noexcept(false)> > );
+ static_assert( is_nothrow_invocable_v< copyable_function<void() noexcept> > );
+ static_assert( is_nothrow_invocable_v< copyable_function<void()& noexcept>& > );
+ 
+ void
+ test01()
+ {
+   struct F
+   {
+     int operator()() { return 0; }
+     int operator()() const { return 1; }
+   };
+ 
+   copyable_function<int()> f0{F{}};
+   VERIFY( f0() == 0 );
+   VERIFY( std::move(f0)() == 0 );
+ 
+   copyable_function<int() const> f1{F{}};
+   VERIFY( f1() == 1 );
+   VERIFY( std::as_const(f1)() == 1 );
+   VERIFY( std::move(f1)() == 1 );
+   VERIFY( std::move(std::as_const(f1))() == 1 );
+ 
+   copyable_function<int()&> f2{F{}};
+   VERIFY( f2() == 0 );
+   // Not rvalue-callable: std::move(f2)()
+ 
+   copyable_function<int() const&> f3{F{}};
+   VERIFY( f3() == 1 );
+   VERIFY( std::as_const(f3)() == 1 );
+   VERIFY( std::move(f3)() == 1 );
+   VERIFY( std::move(std::as_const(f3))() == 1 );
+ 
+   copyable_function<int()&&> f4{F{}};
+   // Not lvalue-callable: f4()
+   VERIFY( std::move(f4)() == 0 );
+ 
+   copyable_function<int() const&&> f5{F{}};
+   // Not lvalue-callable: f5()
+   VERIFY( std::move(f5)() == 1 );
+   VERIFY( std::move(std::as_const(f5))() == 1 );
+ }
+ 
+ void
+ test02()
+ {
+   struct F
+   {
+     int operator()() & { return 0; }
+     int operator()() && { return 1; }
+   };
+ 
+   copyable_function<int()> f0{F{}};
+   VERIFY( f0() == 0 );
+   VERIFY( std::move(f0)() == 0 );
+ 
+   copyable_function<int()&&> f1{F{}};
+   // Not lvalue callable: f1()
+   VERIFY( std::move(f1)() == 1 );
+ 
+   copyable_function<int()&> f2{F{}};
+   VERIFY( f2() == 0 );
+   // Not rvalue-callable: std::move(f2)()
+ }
+ 
+ void
+ test03()
+ {
+   struct F
+   {
+     int operator()() const & { return 0; }
+     int operator()() && { return 1; }
+   };
+ 
+   copyable_function<int()> f0{F{}};
+   VERIFY( f0() == 0 );
+   VERIFY( std::move(f0)() == 0 );
+ 
+   copyable_function<int()&&> f1{F{}};
+   // Not lvalue callable: f1()
+   VERIFY( std::move(f1)() == 1 );
+ 
+   copyable_function<int() const> f2{F{}};
+   VERIFY( f2() == 0 );
+   VERIFY( std::as_const(f2)() == 0 );
+   VERIFY( std::move(f2)() == 0 );
+   VERIFY( std::move(std::as_const(f2))() == 0 );
+ 
+   copyable_function<int() const &&> f3{F{}};
+   // Not lvalue callable: f3()
+   VERIFY( std::move(f3)() == 0 );
+   VERIFY( std::move(std::as_const(f3))() == 0 );
+ 
+   copyable_function<int() const &> f4{F{}};
+   VERIFY( f4() == 0 );
+   VERIFY( std::as_const(f4)() == 0 );
+   // Not rvalue-callable: std::move(f4)()
+ }
+ 
+ void
+ test04()
+ {
+   struct F
+   {
+     int operator()() & { return 0; }
+     int operator()() && { return 1; }
+     int operator()() const & { return 2; }
+     int operator()() const && { return 3; }
+   };
+ 
+   copyable_function<int()> f0{F{}};
+   VERIFY( f0() == 0 );
+   VERIFY( std::move(f0)() == 0 );
+ 
+   copyable_function<int()&> f1{F{}};
+   VERIFY( f1() == 0 );
+   // Not rvalue-callable: std::move(f1)()
+ 
+   copyable_function<int()&&> f2{F{}};
+   // Not lvalue callable: f2()
+   VERIFY( std::move(f2)() == 1 );
+ 
+   copyable_function<int() const> f3{F{}};
+   VERIFY( f3() == 2 );
+   VERIFY( std::as_const(f3)() == 2 );
+   VERIFY( std::move(f3)() == 2 );
+   VERIFY( std::move(std::as_const(f3))() == 2 );
+ 
+   copyable_function<int() const &> f4{F{}};
+   VERIFY( f4() == 2 );
+   VERIFY( std::as_const(f4)() == 2 );
+   // Not rvalue-callable: std::move(f4)()
+ 
+   copyable_function<int() const &&> f5{F{}};
+   // Not lvalue callable: f5()
+   VERIFY( std::move(f5)() == 3 );
+   VERIFY( std::move(std::as_const(f5))() == 3 );
+ }
+ 
+ void
+ test05()
+ {
+   int (*fp)() = [] { return 0; };
+   copyable_function<int()> f0{fp};
+   VERIFY( f0() == 0 );
+   VERIFY( std::move(f0)() == 0 );
+ 
+   const copyable_function<int() const> f1{fp};
+   VERIFY( f1() == 0 );
+   VERIFY( std::move(f1)() == 0 );
+ }
+ 
+ struct Incomplete;
+ 
+ void
+ test_params()
+ {
+   std::copyable_function<void(Incomplete)> f1;
+   std::copyable_function<void(Incomplete&)> f2;
+   std::copyable_function<void(Incomplete&&)> f3;
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   test03();
+   test04();
+   test05();
+   test_params();
+ }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/cons.cc gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/cons.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/cons.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/cons.cc	Sun May 18 22:33:04 2025
***************
*** 0 ****
--- 1,126 ----
+ // { dg-do compile { target c++26 } }
+ // { dg-require-effective-target hosted }
+ // { dg-add-options no_pch }
+ 
+ #include <functional>
+ 
+ #ifndef __cpp_lib_copyable_function
+ # error "Feature-test macro for copyable_function missing in <functional>"
+ #elif __cpp_lib_copyable_function != 202306L
+ # error "Feature-test macro for copyable_function has wrong value in <functional>"
+ #endif
+ 
+ using std::copyable_function;
+ 
+ using std::is_constructible_v;
+ using std::is_copy_constructible_v;
+ using std::is_nothrow_default_constructible_v;
+ using std::is_nothrow_move_constructible_v;
+ using std::is_nothrow_constructible_v;
+ using std::nullptr_t;
+ using std::in_place_type_t;
+ 
+ static_assert( is_nothrow_default_constructible_v<copyable_function<void()>> );
+ static_assert( is_nothrow_constructible_v<copyable_function<void()>, nullptr_t> );
+ static_assert( is_nothrow_move_constructible_v<copyable_function<void()>> );
+ static_assert( is_copy_constructible_v<copyable_function<void()>> );
+ 
+ static_assert( is_constructible_v<copyable_function<void()>, void()> );
+ static_assert( is_constructible_v<copyable_function<void()>, void(&)()> );
+ static_assert( is_constructible_v<copyable_function<void()>, void(*)()> );
+ static_assert( is_constructible_v<copyable_function<void()>, int()> );
+ static_assert( is_constructible_v<copyable_function<void()>, int(&)()> );
+ static_assert( is_constructible_v<copyable_function<void()>, int(*)()> );
+ static_assert( ! is_constructible_v<copyable_function<void()>, void(int)> );
+ static_assert( is_constructible_v<copyable_function<void(int)>, void(int)> );
+ 
+ static_assert( is_constructible_v<copyable_function<void(int)>,
+ 				  in_place_type_t<void(*)(int)>, void(int)> );
+ 
+ static_assert( is_constructible_v<copyable_function<void()>,
+ 				  void() noexcept> );
+ static_assert( is_constructible_v<copyable_function<void() noexcept>,
+ 				  void() noexcept> );
+ static_assert( ! is_constructible_v<copyable_function<void() noexcept>,
+ 				    void() > );
+ 
+ struct Q
+ {
+   void operator()() const &;
+   void operator()() &&;
+ };
+ 
+ static_assert( is_constructible_v<copyable_function<void()>, Q> );
+ static_assert( is_constructible_v<copyable_function<void() const>, Q> );
+ static_assert( is_constructible_v<copyable_function<void() &>, Q> );
+ static_assert( is_constructible_v<copyable_function<void() const &>, Q> );
+ static_assert( is_constructible_v<copyable_function<void() &&>, Q> );
+ static_assert( is_constructible_v<copyable_function<void() const &&>, Q> );
+ 
+ struct R
+ {
+   void operator()() &;
+   void operator()() &&;
+ };
+ 
+ static_assert( is_constructible_v<copyable_function<void()>, R> );
+ static_assert( is_constructible_v<copyable_function<void()&>, R> );
+ static_assert( is_constructible_v<copyable_function<void()&&>, R> );
+ static_assert( ! is_constructible_v<copyable_function<void() const>, R> );
+ static_assert( ! is_constructible_v<copyable_function<void() const&>, R> );
+ static_assert( ! is_constructible_v<copyable_function<void() const&&>, R> );
+ 
+ // The following nothrow-constructible guarantees are a GCC extension,
+ // not required by the standard.
+ 
+ static_assert( is_nothrow_constructible_v<copyable_function<void()>, void()> );
+ static_assert( is_nothrow_constructible_v<copyable_function<void(int)>,
+ 					  in_place_type_t<void(*)(int)>,
+ 					  void(int)> );
+ 
+ // These types are all small and nothrow move constructible
+ struct F { void operator()(); };
+ struct G { void operator()() const; };
+ static_assert( is_nothrow_constructible_v<copyable_function<void()>, F> );
+ static_assert( is_nothrow_constructible_v<copyable_function<void()>, G> );
+ static_assert( is_nothrow_constructible_v<copyable_function<void() const>, G> );
+ 
+ struct H {
+   H(int);
+   H(int, int) noexcept;
+   void operator()() noexcept;
+ };
+ static_assert( is_nothrow_constructible_v<copyable_function<void()>, H> );
+ static_assert( is_nothrow_constructible_v<copyable_function<void() noexcept>,
+ 					  H> );
+ static_assert( ! is_nothrow_constructible_v<copyable_function<void() noexcept>,
+ 					    in_place_type_t<H>, int> );
+ static_assert( is_nothrow_constructible_v<copyable_function<void() noexcept>,
+ 					  in_place_type_t<H>, int, int> );
+ 
+ struct I {
+   I(int, const char*);
+   I(std::initializer_list<char>);
+   int operator()() const noexcept;
+ };
+ 
+ static_assert( is_constructible_v<copyable_function<void()>,
+ 				  std::in_place_type_t<I>,
+ 				  int, const char*> );
+ static_assert( is_constructible_v<copyable_function<void()>,
+ 				  std::in_place_type_t<I>,
+ 				  std::initializer_list<char>> );
+ 
+ void
+ test_instantiation()
+ {
+   // Instantiate the constructor bodies
+   copyable_function<void()> f0;
+   copyable_function<void()> f1(nullptr);
+   copyable_function<void()> f2( I(1, "two") );
+   copyable_function<void()> f3(std::in_place_type<I>, 3, "four");
+   copyable_function<void()> f4(std::in_place_type<I>, // PR libstdc++/102825
+ 				{ 'P', 'R', '1', '0', '2', '8', '2', '5'});
+   auto f5 = std::move(f4);
+   f4 = std::move(f5);
+ }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/conv.cc gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/conv.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/conv.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/conv.cc	Sun May 18 22:33:04 2025
***************
*** 0 ****
--- 1,251 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-effective-target hosted }
+ 
+ #include <functional>
+ #include <testsuite_hooks.h>
+ 
+ using std::copyable_function;
+ 
+ static_assert( !std::is_constructible_v<std::copyable_function<void()>,
+ 					std::copyable_function<void()&>> );
+ static_assert( !std::is_constructible_v<std::copyable_function<void()>,
+ 					std::copyable_function<void()&&>> );
+ static_assert( !std::is_constructible_v<std::copyable_function<void()&>,
+ 					std::copyable_function<void()&&>> );
+ static_assert( !std::is_constructible_v<std::copyable_function<void() const>,
+ 					std::copyable_function<void()>> );
+ 
+ // Non-trivial args, guarantess that type is not passed by copy
+ struct CountedArg
+ {
+   CountedArg() = default;
+   CountedArg(const CountedArg& f) noexcept : counter(f.counter) { ++counter; }
+   CountedArg& operator=(CountedArg&&) = delete;
+ 
+   int counter = 0;
+ };
+ CountedArg const c;
+ 
+ // When copyable_function or move_only_function is constructed from other copyable_function,
+ // the compiler can avoid double indirection per C++26 [func.wrap.general] p2.
+ 
+ void
+ test01()
+ {
+   auto f = [](CountedArg const& arg) noexcept { return arg.counter; };
+   std::copyable_function<int(CountedArg) const noexcept> c1(f);
+   using CF = std::copyable_function<int(CountedArg) const noexcept>;
+   VERIFY( c1(c) == 1 );
+ 
+   std::copyable_function<int(CountedArg) const> c2a(c1);
+   VERIFY( c2a(c) == 1 );
+ 
+   std::copyable_function<int(CountedArg) const> c2b(static_cast<CF>(c1));
+   VERIFY( c2b(c) == 1 );
+ 
+   std::move_only_function<int(CountedArg) const> m2a(c1);
+   VERIFY( m2a(c) == 1 );
+ 
+   std::move_only_function<int(CountedArg) const> m2b(static_cast<CF>(c1));
+   VERIFY( m2b(c) == 1 );
+ 
+   std::copyable_function<int(CountedArg)> c3a(c1);
+   VERIFY( c3a(c) == 1 );
+ 
+   std::copyable_function<int(CountedArg)> c3b(static_cast<CF>(c1));
+   VERIFY( c3b(c) == 1 );
+ 
+   std::move_only_function<int(CountedArg)> m3a(c1);
+   VERIFY( m3a(c) == 1 );
+ 
+   std::move_only_function<int(CountedArg)> m3b(static_cast<CF>(c1));
+   VERIFY( m3b(c) == 1 );
+ 
+   // Invokers internally uses Counted&& for non-trivial types,
+   // sinature remain compatible.
+   std::copyable_function<int(CountedArg&&)> c4a(c1);
+   VERIFY( c4a({}) == 0 );
+ 
+   std::copyable_function<int(CountedArg&&)> c4b(static_cast<CF>(c1));
+   VERIFY( c4b({}) == 0 );
+ 
+   std::move_only_function<int(CountedArg&&)> m4a(c1);
+   VERIFY( m4a({}) == 0 );
+ 
+   std::move_only_function<int(CountedArg&&)> m4b(static_cast<CF>(c1));
+   VERIFY( m4b({}) == 0 );
+ 
+   std::copyable_function<int(CountedArg&&)&> c5a(c1);
+   VERIFY( c5a({}) == 0 );
+ 
+   std::copyable_function<int(CountedArg&&)&&> c5b(static_cast<CF>(c1));
+   VERIFY( std::move(c5b)({}) == 0 );
+ 
+   std::move_only_function<int(CountedArg&&)&> m5a(c1);
+   VERIFY( m5a({}) == 0 );
+ 
+   std::move_only_function<int(CountedArg&&)&&> m5b(static_cast<CF>(c1));
+   VERIFY( std::move(m5b)({}) == 0 );
+ 
+   // Incompatible signatures
+   std::copyable_function<long(CountedArg) const noexcept> c6a(c1);
+   VERIFY( c6a(c) == 2 );
+ 
+   std::copyable_function<long(CountedArg) const noexcept> c6b(static_cast<CF>(c1));
+   VERIFY( c6b(c) == 2 );
+ 
+   std::move_only_function<long(CountedArg) const noexcept> m6a(c1);
+   VERIFY( m6a(c) == 2 );
+ 
+   std::move_only_function<long(CountedArg) const noexcept> m6b(static_cast<CF>(c1));
+   VERIFY( m6b(c) == 2 );
+ }
+ 
+ void
+ test02()
+ {
+   auto f = [](CountedArg const& arg) noexcept { return arg.counter; };
+   std::copyable_function<int(CountedArg) const noexcept> c1(f);
+   using CF = std::copyable_function<int(CountedArg) const noexcept>;
+   VERIFY( c1(c) == 1 );
+ 
+   std::copyable_function<int(CountedArg) const> c2;
+   c2 = c1;
+   VERIFY( c2(c) == 1 );
+   c2 = static_cast<CF>(c1);
+   VERIFY( c2(c) == 1 );
+ 
+   std::move_only_function<int(CountedArg) const> m2;
+   m2 = c1;
+   VERIFY( m2(c) == 1 );
+   m2 = static_cast<CF>(c1);
+   VERIFY( m2(c) == 1 );
+ 
+   // Incompatible signatures
+   std::copyable_function<long(CountedArg) const noexcept> c3;
+   c3 = c1;
+   VERIFY( c3(c) == 2 );
+   c3 = static_cast<CF>(c1);
+   VERIFY( c3(c) == 2 );
+ 
+   std::move_only_function<long(CountedArg) const noexcept> m3;
+   m3 = c1;
+   VERIFY( m3(c) == 2 );
+   m3 = static_cast<CF>(c1);
+   VERIFY( m3(c) == 2 );
+ }
+ 
+ void
+ test03()
+ {
+   std::copyable_function<int(long) const noexcept> c1;
+   VERIFY( c1 == nullptr );
+ 
+   std::copyable_function<int(long) const> c2(c1);
+   VERIFY( c2 == nullptr );
+   c2 = c1;
+   VERIFY( c2 == nullptr );
+   c2 = std::move(c1);
+   VERIFY( c2 == nullptr );
+ 
+   std::copyable_function<bool(int) const> c3(std::move(c1));
+   VERIFY( c3 == nullptr );
+   c3 = c1;
+   VERIFY( c3 == nullptr );
+   c3 = std::move(c1);
+   VERIFY( c3 == nullptr );
+ 
+   // LWG4255 move_only_function constructor should recognize empty
+   //         copyable_functions 
+   std::move_only_function<int(long) const noexcept> m1(c1);
+   VERIFY( m1 == nullptr );
+   m1 = c1;
+   VERIFY( m1 == nullptr );
+   m1 = std::move(c1);
+   VERIFY( m1 == nullptr );
+ 
+   std::move_only_function<int(long) const> m2(c1);
+   VERIFY( m2 == nullptr );
+   m2 = c1;
+   VERIFY( m2 == nullptr );
+   m2 = std::move(c1);
+   VERIFY( m2 == nullptr );
+ 
+   std::move_only_function<bool(int) const> m3(std::move(c1));
+   VERIFY( m3 == nullptr );
+   m3 = c1;
+   VERIFY( m3 == nullptr );
+   m3 = std::move(c1);
+   VERIFY( m3 == nullptr );
+ }
+ 
+ void
+ test04()
+ {
+   struct F
+   {
+     int operator()(CountedArg const& arg) noexcept
+     { return arg.counter; }
+ 
+     int operator()(CountedArg const& arg) const noexcept
+     { return arg.counter + 1000; }
+   };
+ 
+   F f;
+   std::copyable_function<int(CountedArg) const> c1(f);
+   VERIFY( c1(c) == 1001 );
+ 
+   // Call const overload as std::copyable_function<int(CountedArg) const>
+   // inside td::copyable_function<int(CountedArg)> would do.
+   std::copyable_function<int(CountedArg)> c2(c1);
+   VERIFY( c2(c) == 1001 );
+   std::move_only_function<int(CountedArg)> m2(c1);
+   VERIFY( m2(c) == 1001 );
+ 
+   std::copyable_function<int(CountedArg)> m3(f);
+   VERIFY( m3(c) == 1 );
+ }
+ 
+ void
+ test05()
+ {
+   auto f = [](CountedArg const& arg) noexcept { return arg.counter; };
+   std::copyable_function<int(CountedArg)> w1(f);
+   // copyable_function stores copyable_function due incompatibile signatures
+   std::copyable_function<int(CountedArg const&)> w2(std::move(w1));
+   // copy is made when passing to int(CountedArg)
+   VERIFY( w2(c) == 1 );
+   // wrapped 3 times
+   w1 = std::move(w2);
+   VERIFY( w1(c) == 2 );
+   // wrapped 4 times
+   w2 = std::move(w1);
+   VERIFY( w2(c) == 2 );
+   // wrapped 5 times
+   w1 = std::move(w2);
+   VERIFY( w1(c) == 3 );
+ }
+ 
+ void
+ test06()
+ {
+   // No special interoperability with std::function
+   auto f = [](CountedArg const& arg) noexcept { return arg.counter; };
+   std::function<int(CountedArg)> f1(f);
+   std::copyable_function<int(CountedArg) const> c1(std::move(f1));
+   VERIFY( c1(c) == 2 );
+ 
+   std::copyable_function<int(CountedArg) const> c2(f);
+   std::function<int(CountedArg)> f2(c2);
+   VERIFY( f2(c) == 2 );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   test03();
+   test04();
+   test05();
+   test06();
+ }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/copy.cc gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/copy.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/copy.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/copy.cc	Sun May 18 22:33:04 2025
***************
*** 0 ****
--- 1,154 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-effective-target hosted }
+ 
+ #include <functional>
+ #include <testsuite_hooks.h>
+ 
+ using std::copyable_function;
+ 
+ void
+ test01()
+ {
+   // Small type with non-throwing move constructor. Not allocated on the heap.
+   struct F
+   {
+     F() = default;
+     F(const F& f) : counters(f.counters) { ++counters.copy; }
+     F(F&& f) noexcept : counters(f.counters) { ++counters.move; }
+ 
+     F& operator=(F&&) = delete;
+ 
+     struct Counters
+     {
+       int copy = 0;
+       int move = 0;
+     } counters;
+ 
+     const Counters& operator()() const { return counters; }
+   };
+ 
+   F f;
+   std::copyable_function<const F::Counters&() const> m1(f);
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 0 );
+ 
+   // This will copy construct a new target object
+   auto m2 = m1;
+   VERIFY( m1 != nullptr && m2 != nullptr );
+   VERIFY( m2().copy == 2 );
+   VERIFY( m2().move == 0 );
+ 
+   m1 = m2;
+   VERIFY( m1 != nullptr && m2 != nullptr );
+   VERIFY( m1().copy == 3 );
+   VERIFY( m1().move == 1 ); // Copies object first and then swaps
+ 
+   m1 = m1;
+   VERIFY( m1 != nullptr && m2 != nullptr );
+   VERIFY( m1().copy == 4 );
+   VERIFY( m1().move == 2 ); // Copies object first and then swaps
+ 
+   m2 = f;
+   VERIFY( m2().copy == 1 );
+   VERIFY( m2().move == 1 ); // Copy construct target object, then swap into m2.
+ }
+ 
+ void
+ test02()
+ {
+   // Move constructor is potentially throwing. Allocated on the heap.
+   struct F
+   {
+     F() = default;
+     F(const F& f) noexcept : counters(f.counters) { ++counters.copy; }
+     F(F&& f) noexcept(false) : counters(f.counters) { ++counters.move; }
+ 
+     F& operator=(F&&) = delete;
+ 
+     struct Counters
+     {
+       int copy = 0;
+       int move = 0;
+     } counters;
+ 
+     Counters operator()() const noexcept { return counters; }
+   };
+ 
+   F f;
+   std::copyable_function<F::Counters() const> m1(f);
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 0 );
+ 
+   // The target object is on the heap, but we need to allocate new one
+   auto m2 = m1;
+   VERIFY( m1 != nullptr && m2 != nullptr );
+   VERIFY( m2().copy == 2 );
+   VERIFY( m2().move == 0 );
+ 
+   m1 = m2;
+   VERIFY( m1 != nullptr && m2 != nullptr );
+   VERIFY( m1().copy == 3 );
+   VERIFY( m1().move == 0 );
+ 
+   m1 = m1;
+   VERIFY( m1 != nullptr && m2 != nullptr );
+   VERIFY( m1().copy == 4 );
+   VERIFY( m1().move == 0 );
+ 
+   m2 = f;
+   VERIFY( m2().copy == 1 );
+   VERIFY( m2().move == 0 );
+ }
+ 
+ void
+ test03()
+ {
+   // Small type with non-throwing, but not non-trivial move constructor.
+   struct F
+   {
+     F(int i) noexcept : id(i) {}
+     F(const F& f) : id(f.id)
+     { if (id == 3) throw id; }
+     F(F&& f) noexcept : id(f.id) {  }
+ 
+     int operator()() const
+     { return id; }
+ 
+     int id;
+   };
+ 
+   std::copyable_function<int() const> m1(std::in_place_type<F>, 1);
+   const std::copyable_function<int() const> m2(std::in_place_type<F>, 2);
+   const std::copyable_function<int() const> m3(std::in_place_type<F>, 3);
+ 
+   try
+   {
+     auto mc = m3;
+     VERIFY( false );
+   }
+   catch(int i)
+   {
+     VERIFY( i == 3 );
+   }
+ 
+   m1 = m2;
+   VERIFY( m1() == 2 );
+ 
+   try
+   {
+     m1 = m3;
+     VERIFY( false );
+   }
+   catch (int i)
+   {
+     VERIFY( i == 3 );
+   }
+   VERIFY( m1() == 2 );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/move.cc gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/move.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/20_util/copyable_function/move.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/testsuite/20_util/copyable_function/move.cc	Sun May 18 22:33:04 2025
***************
*** 0 ****
--- 1,120 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-effective-target hosted }
+ 
+ #include <functional>
+ #include <testsuite_hooks.h>
+ 
+ using std::copyable_function;
+ 
+ void
+ test01()
+ {
+   // Small type with non-throwing move constructor. Not allocated on the heap.
+   struct F
+   {
+     F() = default;
+     F(const F& f) : counters(f.counters) { ++counters.copy; }
+     F(F&& f) noexcept : counters(f.counters) { ++counters.move; }
+ 
+     F& operator=(F&&) = delete;
+ 
+     struct Counters
+     {
+       int copy = 0;
+       int move = 0;
+     } counters;
+ 
+     const Counters& operator()() const { return counters; }
+   };
+ 
+   F f;
+   std::copyable_function<const F::Counters&() const> m1(f);
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 0 );
+ 
+   // Standard specifies move assigment as copy and swap
+   m1 = std::move(m1);
+   VERIFY( m1 != nullptr );
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 0 );
+ 
+   // This will move construct a new target object and destroy the old one:
+   auto m2 = std::move(m1);
+   VERIFY( m1 == nullptr && m2 != nullptr );
+   VERIFY( m2().copy == 1 );
+   VERIFY( m2().move == 1 );
+ 
+   m1 = std::move(m2);
+   VERIFY( m1 != nullptr && m2 == nullptr );
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 2 );
+ 
+   m2 = std::move(f);
+   VERIFY( m2().copy == 0 );
+   VERIFY( m2().move == 2 ); // Move construct target object, then swap into m2.
+   const int moves = m1().move + m2().move;
+   // This will do three moves:
+   swap(m1, m2);
+   VERIFY( m1().copy == 0 );
+   VERIFY( m2().copy == 1 );
+   VERIFY( (m1().move + m2().move) == (moves + 3) );
+ }
+ 
+ void
+ test02()
+ {
+   // Move constructor is potentially throwing. Allocated on the heap.
+   struct F
+   {
+     F() = default;
+     F(const F& f) noexcept : counters(f.counters) { ++counters.copy; }
+     F(F&& f) noexcept(false) : counters(f.counters) { ++counters.move; }
+ 
+     F& operator=(F&&) = delete;
+ 
+     struct Counters
+     {
+       int copy = 0;
+       int move = 0;
+     } counters;
+ 
+     Counters operator()() const noexcept { return counters; }
+   };
+ 
+   F f;
+   std::copyable_function<F::Counters() const> m1(f);
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 0 );
+ 
+   m1 = std::move(m1);
+   VERIFY( m1 != nullptr );
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 0 );
+ 
+   // The target object is on the heap so this just moves a pointer:
+   auto m2 = std::move(m1);
+   VERIFY( m1 == nullptr && m2 != nullptr );
+   VERIFY( m2().copy == 1 );
+   VERIFY( m2().move == 0 );
+ 
+   m1 = std::move(m2);
+   VERIFY( m1 != nullptr && m2 == nullptr );
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 0 );
+ 
+   m2 = std::move(f);
+   VERIFY( m2().copy == 0 );
+   VERIFY( m2().move == 1 );
+   const int moves = m1().move + m2().move;
+   // This just swaps the pointers, so no moves:
+   swap(m1, m2);
+   VERIFY( m1().copy == 0 );
+   VERIFY( m2().copy == 1 );
+   VERIFY( (m1().move + m2().move) == moves );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/20_util/expected/119714.cc gcc-16-20250518/libstdc++-v3/testsuite/20_util/expected/119714.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/20_util/expected/119714.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/testsuite/20_util/expected/119714.cc	Sun May 18 22:33:04 2025
***************
*** 0 ****
--- 1,9 ----
+ // { dg-do compile { target c++23 } }
+ 
+ // PR libstdc++/119714 - constraint recursion with std::expected::operator==
+ 
+ #include <expected>
+ #include <vector>
+ 
+ using I = std::vector<std::expected<int,int>>::iterator;
+ static_assert(std::totally_ordered<I>);
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/20_util/move_only_function/call.cc gcc-16-20250518/libstdc++-v3/testsuite/20_util/move_only_function/call.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/20_util/move_only_function/call.cc	Sun May 11 22:32:45 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/20_util/move_only_function/call.cc	Sun May 18 22:33:04 2025
*************** test04()
*** 190,195 ****
--- 190,208 ----
    VERIFY( std::move(std::as_const(f5))() == 3 );
  }
  
+ void
+ test05()
+ {
+   int (*fp)() = [] { return 0; };
+   move_only_function<int()> f0{fp};
+   VERIFY( f0() == 0 );
+   VERIFY( std::move(f0)() == 0 );
+ 
+   const move_only_function<int() const> f1{fp};
+   VERIFY( f1() == 0 );
+   VERIFY( std::move(f1)() == 0 );
+ }
+ 
  struct Incomplete;
  
  void
*************** int main()
*** 206,210 ****
--- 219,224 ----
    test02();
    test03();
    test04();
+   test05();
    test_params();
  }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/20_util/move_only_function/conv.cc gcc-16-20250518/libstdc++-v3/testsuite/20_util/move_only_function/conv.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/20_util/move_only_function/conv.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/testsuite/20_util/move_only_function/conv.cc	Sun May 18 22:33:04 2025
***************
*** 0 ****
--- 1,188 ----
+ // { dg-do run { target c++23 } }
+ // { dg-require-effective-target hosted }
+ 
+ #include <functional>
+ #include <testsuite_hooks.h>
+ 
+ using std::move_only_function;
+ 
+ static_assert( !std::is_constructible_v<std::move_only_function<void()>,
+ 					std::move_only_function<void()&>> );
+ static_assert( !std::is_constructible_v<std::move_only_function<void()>,
+ 					std::move_only_function<void()&&>> );
+ static_assert( !std::is_constructible_v<std::move_only_function<void()&>,
+ 					std::move_only_function<void()&&>> );
+ static_assert( !std::is_constructible_v<std::move_only_function<void() const>,
+ 					std::move_only_function<void()>> );
+ 
+ // Non-trivial args, guarantess that type is not passed by copy
+ struct CountedArg
+ {
+   CountedArg() = default;
+   CountedArg(const CountedArg& f) noexcept : counter(f.counter) { ++counter; }
+   CountedArg& operator=(CountedArg&&) = delete;
+ 
+   int counter = 0;
+ };
+ CountedArg const c;
+ 
+ // When move_only_functions is constructed from other move_only_function,
+ // the compiler can avoid double indirection per C++26 [func.wrap.general] p2.
+ 
+ void
+ test01()
+ {
+   auto f = [](CountedArg const& arg) noexcept { return arg.counter; };
+   std::move_only_function<int(CountedArg) const noexcept> m1(f);
+   VERIFY( m1(c) == 1 );
+ 
+   std::move_only_function<int(CountedArg) const> m2(std::move(m1));
+   VERIFY( m2(c) == 1 );
+ 
+   std::move_only_function<int(CountedArg)> m3(std::move(m2));
+   VERIFY( m3(c) == 1 );
+ 
+   // Invokers internally uses Counted&& for non-trivial types,
+   // sinature remain compatible.
+   std::move_only_function<int(CountedArg&&)> m4(std::move(m3));
+   VERIFY( m4({}) == 0 );
+ 
+   std::move_only_function<int(CountedArg&&)&&> m5(std::move(m4));
+   VERIFY( std::move(m5)({}) == 0 );
+ 
+   m4 = f;
+   std::move_only_function<int(CountedArg&&)&> m7(std::move(m4));
+   VERIFY( m7({}) == 0 );
+ 
+   m4 = f;
+   std::move_only_function<int(CountedArg&&)&> m8(std::move(m4));
+   VERIFY( m8({}) == 0 );
+ 
+   // Incompatible signatures
+   m1 = f;
+   std::move_only_function<long(CountedArg) const noexcept> m9(std::move(m1));
+   VERIFY( m9(c) == 2 );
+ }
+ 
+ void
+ test02()
+ {
+   auto f = [](CountedArg const& arg) noexcept { return arg.counter; };
+   std::move_only_function<int(CountedArg) const noexcept> m1(f);
+   VERIFY( m1(c) == 1 );
+ 
+   std::move_only_function<int(CountedArg) const> m2;
+   m2 = std::move(m1);
+   VERIFY( m2(c) == 1 );
+ 
+   std::move_only_function<int(CountedArg)> m3;
+   m3 = std::move(m2);
+   VERIFY( m3(c) == 1 );
+ 
+   // Invokers internally uses Counted&& for non-trivial types,
+   // sinature remain compatible.
+   std::move_only_function<int(CountedArg&&)> m4;
+   m4 = std::move(m3);
+   VERIFY( m4({}) == 0 );
+ 
+   std::move_only_function<int(CountedArg&&)&&> m5;
+   m5 = std::move(m4);
+   VERIFY( std::move(m5)({}) == 0 );
+ 
+   m4 = f;
+   std::move_only_function<int(CountedArg&&)&> m7;
+   m7 = std::move(m4);
+   VERIFY( m7({}) == 0 );
+ 
+   m4 = f;
+   std::move_only_function<int(CountedArg&&)&> m8;
+   m8 = std::move(m4);
+   VERIFY( m8({}) == 0 );
+ 
+   m1 = f;
+   std::move_only_function<long(CountedArg) const noexcept> m9;
+   m9 = std::move(m1);
+   VERIFY( m9(c) == 2 );
+ }
+ 
+ void
+ test03()
+ {
+   std::move_only_function<int(long) const noexcept> e;
+   VERIFY( e == nullptr );
+ 
+   std::move_only_function<int(long) const> e2(std::move(e));
+   VERIFY( e2 == nullptr );
+   e2 = std::move(e);
+   VERIFY( e2 == nullptr );
+ 
+   std::move_only_function<bool(int) const> e3(std::move(e));
+   VERIFY( e3 == nullptr );
+   e3 = std::move(e);
+   VERIFY( e3 == nullptr );
+ }
+ 
+ void
+ test04()
+ {
+   struct F
+   {
+     int operator()(CountedArg const& arg) noexcept
+     { return arg.counter; }
+ 
+     int operator()(CountedArg const& arg) const noexcept
+     { return arg.counter + 1000; }
+   };
+ 
+   F f;
+   std::move_only_function<int(CountedArg) const> m1(f);
+   VERIFY( m1(c) == 1001 );
+ 
+   // Call const overload as std::move_only_function<int(CountedArg) const>
+   // inside std::move_only_function<int(CountedArg)> would do.
+   std::move_only_function<int(CountedArg)> m2(std::move(m1));
+   VERIFY( m2(c) == 1001 );
+ 
+   std::move_only_function<int(CountedArg)> m3(f);
+   VERIFY( m3(c) == 1 );
+ }
+ 
+ void
+ test05()
+ {
+   auto f = [](CountedArg const& arg) noexcept { return arg.counter; };
+   std::move_only_function<int(CountedArg)> w1(f);
+   // move_only_function stores move_only_function due incompatibile signatures
+   std::move_only_function<int(CountedArg const&)> w2(std::move(w1));
+   // copy is made when passing to int(CountedArg)
+   VERIFY( w2(c) == 1 );
+   // wrapped 3 times
+   w1 = std::move(w2);
+   VERIFY( w1(c) == 2 );
+   // wrapped 4 times
+   w2 = std::move(w1);
+   VERIFY( w2(c) == 2 );
+   // wrapped 5 times
+   w1 = std::move(w2);
+   VERIFY( w1(c) == 3 );
+ }
+ 
+ void
+ test06()
+ {
+   // No special interoperability with std::function
+   auto f = [](CountedArg const& arg) noexcept { return arg.counter; };
+   std::function<int(CountedArg)> f1(f);
+   std::move_only_function<int(CountedArg) const> m1(std::move(f1));
+   VERIFY( m1(c) == 2 );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   test03();
+   test04();
+   test05();
+   test06();
+ }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/20_util/move_only_function/move.cc gcc-16-20250518/libstdc++-v3/testsuite/20_util/move_only_function/move.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/20_util/move_only_function/move.cc	Sun May 11 22:32:45 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/20_util/move_only_function/move.cc	Sun May 18 22:33:04 2025
*************** test01()
*** 32,37 ****
--- 32,43 ----
    VERIFY( m1().copy == 1 );
    VERIFY( m1().move == 0 );
  
+   // Standard specifies move assigment as copy and swap
+   m1 = std::move(m1);
+   VERIFY( m1 != nullptr );
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 0 );
+ 
    // This will move construct a new target object and destroy the old one:
    auto m2 = std::move(m1);
    VERIFY( m1 == nullptr && m2 != nullptr );
*************** test02()
*** 80,85 ****
--- 86,96 ----
    VERIFY( m1().copy == 1 );
    VERIFY( m1().move == 0 );
  
+   m1 = std::move(m1);
+   VERIFY( m1 != nullptr );
+   VERIFY( m1().copy == 1 );
+   VERIFY( m1().move == 0 );
+ 
    // The target object is on the heap so this just moves a pointer:
    auto m2 = std::move(m1);
    VERIFY( m1 == nullptr && m2 != nullptr );
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc gcc-16-20250518/libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc	Sun May 11 22:32:47 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc	Sun May 18 22:33:05 2025
***************
*** 1,8 ****
  // { dg-do compile { target c++23 } }
  #include<mdspan>
  
! std::extents<char, size_t(1) << 9> e1; // { dg-error "from here" }
! std::extents<double, 1> e2;            // { dg-error "from here" }
! // { dg-prune-output "dynamic or representable as _IndexType" }
! // { dg-prune-output "must be integral" }
  // { dg-prune-output "invalid use of incomplete type" }
--- 1,12 ----
  // { dg-do compile { target c++23 } }
  #include<mdspan>
  
! #include <cstdint>
! 
! std::extents<uint8_t, size_t(1) << 9> e1; // { dg-error "from here" }
! std::extents<char, 1> e2;                 // { dg-error "from here" }
! std::extents<bool, 1> e3;                 // { dg-error "from here" }
! std::extents<double, 1> e4;               // { dg-error "from here" }
! // { dg-prune-output "dynamic or representable as IndexType" }
! // { dg-prune-output "signed or unsigned integer" }
  // { dg-prune-output "invalid use of incomplete type" }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc gcc-16-20250518/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc	Sun May 11 22:32:47 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc	Sun May 18 22:33:05 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-do run { target c++23 } }
  #include <mdspan>
  
+ #include <cstdint>
  #include <testsuite_hooks.h>
  
  constexpr size_t dyn = std::dynamic_extent;
*************** static_assert(std::is_same_v<std::extent
*** 20,26 ****
  static_assert(std::is_unsigned_v<std::extents<int, 2>::size_type>);
  static_assert(std::is_unsigned_v<std::extents<unsigned int, 2>::size_type>);
  
- static_assert(std::is_same_v<std::extents<char, 2>::index_type, char>);
  static_assert(std::is_same_v<std::extents<int, 2>::index_type, int>);
  static_assert(std::is_same_v<std::extents<unsigned int, 2>::index_type,
  	      unsigned int>);
--- 21,26 ----
*************** static_assert(check_rank_return_types<in
*** 49,55 ****
  
  // Check that the static extents don't take up space.
  static_assert(sizeof(std::extents<int, 1, dyn>) == sizeof(int));
! static_assert(sizeof(std::extents<char, 1, dyn>) == sizeof(char));
  
  template<typename Extents>
  class Container
--- 49,55 ----
  
  // Check that the static extents don't take up space.
  static_assert(sizeof(std::extents<int, 1, dyn>) == sizeof(int));
! static_assert(sizeof(std::extents<short, 1, dyn>) == sizeof(short));
  
  template<typename Extents>
  class Container
*************** class Container
*** 58,64 ****
    [[no_unique_address]] std::extents<size_t> b0;
  };
  
! static_assert(sizeof(Container<std::extents<char, 1, 2>>) == sizeof(int));
  static_assert(sizeof(Container<std::extents<size_t, 1, 2>>) == sizeof(int));
  
  // operator=
--- 58,64 ----
    [[no_unique_address]] std::extents<size_t> b0;
  };
  
! static_assert(sizeof(Container<std::extents<short, 1, 2>>) == sizeof(int));
  static_assert(sizeof(Container<std::extents<size_t, 1, 2>>) == sizeof(int));
  
  // operator=
*************** test_deduction_all()
*** 103,109 ****
    test_deduction<0>();
    test_deduction<1>(1);
    test_deduction<2>(1.0, 2.0f);
!   test_deduction<3>(int(1), char(2), size_t(3));
    return true;
  }
  
--- 103,109 ----
    test_deduction<0>();
    test_deduction<1>(1);
    test_deduction<2>(1.0, 2.0f);
!   test_deduction<3>(int(1), short(2), size_t(3));
    return true;
  }
  
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/26_numerics/complex/fabs_neg.cc gcc-16-20250518/libstdc++-v3/testsuite/26_numerics/complex/fabs_neg.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/26_numerics/complex/fabs_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250518/libstdc++-v3/testsuite/26_numerics/complex/fabs_neg.cc	Sun May 18 22:33:06 2025
***************
*** 0 ****
--- 1,13 ----
+ // { dg-do compile }
+ // Bug 120235 std::fabs(const std::complex<T>&) should not be defined
+ 
+ #include <complex>
+ 
+ void test_pr120235(std::complex<double> c)
+ {
+   (void) std::fabs(c);
+   // { dg-error "no matching function" "" { target c++98_only } 8 }
+   // { dg-warning "deprecated: use 'std::abs'" "" { target c++11 } 8 }
+ }
+ 
+ // { dg-prune-output "no type named '__type'" }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc gcc-16-20250518/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc	Sun May 11 22:32:49 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc	Sun May 18 22:33:07 2025
***************
*** 1,5 ****
  // { dg-do compile { target c++17 } }
- // { dg-require-gthreads "" }
  // { dg-add-options no_pch }
  
  // Copyright (C) 2017-2025 Free Software Foundation, Inc.
--- 1,4 ----
***************
*** 29,37 ****
  # error "Feature-test macro for scoped_lock has wrong value"
  #endif
  
  void test01()
  {
!   // Check for required typedefs
!   typedef std::scoped_lock<std::mutex> test_type;
!   typedef test_type::mutex_type mutex_type;
  }
--- 28,57 ----
  # error "Feature-test macro for scoped_lock has wrong value"
  #endif
  
+ struct BasicLockable
+ {
+   BasicLockable() = default;
+   ~BasicLockable() = default;
+   void lock() { }
+   void unlock() { }
+ };
+ 
  void test01()
  {
!   // Check for required typedef.
!   using test_type = std::scoped_lock<BasicLockable>;
!   static_assert(std::is_same_v<test_type::mutex_type, BasicLockable>);
! }
! 
! template<typename T, typename = void>
! constexpr bool has_mutex_type = false;
! 
! template<typename T>
! constexpr bool has_mutex_type<T, std::void_t<typename T::mutex_type>> = true;
! 
! void test02()
! {
!   // Check that typedef is absent as required.
!   using test_type = std::scoped_lock<BasicLockable, BasicLockable>;
!   static_assert(!has_mutex_type<test_type>);
  }
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/lib/libstdc++.exp gcc-16-20250518/libstdc++-v3/testsuite/lib/libstdc++.exp
*** gcc-16-20250511/libstdc++-v3/testsuite/lib/libstdc++.exp	Sun May 11 22:32:49 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/lib/libstdc++.exp	Sun May 18 22:33:08 2025
*************** proc v3_target_compile { source dest typ
*** 586,591 ****
--- 586,592 ----
      global tool
  
      lappend options "additional_flags=-fdiagnostics-plain-output"
+     lappend options "additional_flags=-Wabi=20";
  
      if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {
  	lappend options "libs=${gluefile}"
*************** proc check_v3_target_time { } {
*** 1018,1025 ****
      }]
  }
  
! proc check_v3_target_namedlocale { args } {
!     set key "et_namedlocale $args"
      return [check_v3_target_prop_cached $key {
  	global tool
  	# Set up, compile, and execute a C++ test program that tries to use
--- 1019,1026 ----
      }]
  }
  
! proc check_v3_target_namedlocale { locale } {
!     set key "et_namedlocale $locale"
      return [check_v3_target_prop_cached $key {
  	global tool
  	# Set up, compile, and execute a C++ test program that tries to use
*************** proc check_v3_target_namedlocale { args
*** 1034,1040 ****
  	puts $f "using namespace std;"
  	puts $f "char *transform_locale(const char *name)"
  	puts $f "{"
! 	puts $f "    char *result = new char\[50\];"
  	puts $f "    strcpy(result, name);"
  	puts $f "#if defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__"
  	puts $f "    /* fall-through */"
--- 1035,1041 ----
  	puts $f "using namespace std;"
  	puts $f "char *transform_locale(const char *name)"
  	puts $f "{"
! 	puts $f "    char *result = new char\[strlen(name)+6\];"
  	puts $f "    strcpy(result, name);"
  	puts $f "#if defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__"
  	puts $f "    /* fall-through */"
*************** proc check_v3_target_namedlocale { args
*** 1045,1058 ****
  	puts $f "#endif"
  	puts $f "    return result;"
  	puts $f "}"
! 	puts $f "int main (int argc, char** argv)"
  	puts $f "{"
! 	puts $f "  if (argc < 2)"
! 	puts $f "  {"
! 	puts $f "    printf(\"locale support test not supported\\n\");"
! 	puts $f "    return 1;"
! 	puts $f "  }"
! 	puts $f "  const char *namedloc = transform_locale(*(argv + 1));"
  	puts $f "  try"
  	puts $f "  {"
  	puts $f "    locale((const char*)namedloc);"
--- 1046,1054 ----
  	puts $f "#endif"
  	puts $f "    return result;"
  	puts $f "}"
! 	puts $f "int main ()"
  	puts $f "{"
! 	puts $f "  const char *namedloc = transform_locale(\"$locale\");"
  	puts $f "  try"
  	puts $f "  {"
  	puts $f "    locale((const char*)namedloc);"
*************** proc check_v3_target_namedlocale { args
*** 1076,1085 ****
  	  return 0
  	}
  
! 	set result [${tool}_load "./$exe" "$args" ""]
  	set status [lindex $result 0]
  
! 	verbose "check_v3_target_namedlocale <$args>: status is <$status>" 2
  
  	if { $status == "pass" } {
  	    return 1
--- 1072,1081 ----
  	  return 0
  	}
  
! 	set result [${tool}_load "./$exe" "" ""]
  	set status [lindex $result 0]
  
! 	verbose "check_v3_target_namedlocale <$locale>: status is <$status>" 2
  
  	if { $status == "pass" } {
  	    return 1
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/std/format/arguments/args.cc gcc-16-20250518/libstdc++-v3/testsuite/std/format/arguments/args.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/std/format/arguments/args.cc	Sun May 11 22:32:49 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/std/format/arguments/args.cc	Sun May 18 22:33:08 2025
*************** void test_visited_as_handle()
*** 164,187 ****
  #endif
  }
  
- template<typename E, typename S>
- void test_visited_as()
- {
-   auto v = static_cast<S>(1.0);
-   auto store = std::make_format_args(v);
-   std::format_args args = store;
- 
-   auto is_expected_val = [v](auto arg) {
-     if constexpr (std::is_same_v<decltype(arg), E>)
-       return arg == static_cast<E>(v);
-     return false;
-   };
-   VERIFY( std::visit_format_arg(is_expected_val, args.get(0)) );
- #if __cpp_lib_format >= 202306L // C++26 adds std::basic_format_arg::visit
-   VERIFY( args.get(0).visit(is_expected_val) );
- #endif
- }
- 
  template<typename T>
  concept can_format = std::is_default_constructible_v<std::formatter<T, char>>;
  
--- 164,169 ----
*************** int main()
*** 195,224 ****
    test_visited_as_handle<__int128>();
    test_visited_as_handle<unsigned __int128>();
  #endif
! // TODO: This should be visited as handle.
! #ifdef __STDCPP_FLOAT16_T__
!   if constexpr (can_format<_Float16>)
!     test_visited_as<float, _Float16>();
! #endif
! #ifdef __STDCPP_BFLOAT16_T__
    if constexpr (can_format<__gnu_cxx::__bfloat16_t>)
!     test_visited_as<float, __gnu_cxx::__bfloat16_t>();
  #endif
  #ifdef __FLT32_DIG__
    if constexpr (can_format<_Float32>)
!     test_visited_as<float, _Float32>();
  #endif
  #ifdef __FLT64_DIG__
    if constexpr (can_format<_Float64>)
!     test_visited_as<double, _Float64>();
  #endif
  #ifdef __FLT128_DIG__
    if constexpr (can_format<_Float128>)
- # ifdef _GLIBCXX_LDOUBLE_IS_IEEE_BINARY128
-     test_visited_as<long double, _Float128>();
- # else
      test_visited_as_handle<_Float128>();
! # endif
  #endif
  #ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
    if constexpr (!std::is_same_v<__ieee128, long double>)
--- 177,207 ----
    test_visited_as_handle<__int128>();
    test_visited_as_handle<unsigned __int128>();
  #endif
! #ifdef __BFLT16_DIG__
    if constexpr (can_format<__gnu_cxx::__bfloat16_t>)
!     test_visited_as_handle<__gnu_cxx::__bfloat16_t>();
! #endif
! #ifdef __FLT16_DIG__
!   if constexpr (can_format<_Float16>)
!     test_visited_as_handle<_Float16>();
  #endif
  #ifdef __FLT32_DIG__
    if constexpr (can_format<_Float32>)
!     test_visited_as_handle<_Float32>();
  #endif
  #ifdef __FLT64_DIG__
    if constexpr (can_format<_Float64>)
!     test_visited_as_handle<_Float64>();
  #endif
  #ifdef __FLT128_DIG__
    if constexpr (can_format<_Float128>)
      test_visited_as_handle<_Float128>();
! #endif
! #ifdef __SIZEOF_FLOAT128__
!   //  __ieee128 is same type as __float128, and may be long double
!   if constexpr (!std::is_same_v<__float128, long double>)
!     if constexpr (can_format<__float128>)
!       test_visited_as_handle<__float128>();
  #endif
  #ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
    if constexpr (!std::is_same_v<__ieee128, long double>)
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/std/format/parse_ctx.cc gcc-16-20250518/libstdc++-v3/testsuite/std/format/parse_ctx.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/std/format/parse_ctx.cc	Sun May 11 22:32:49 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/std/format/parse_ctx.cc	Sun May 18 22:33:08 2025
*************** test_custom()
*** 443,448 ****
--- 443,450 ----
  }
  
  #if __cpp_lib_format >= 202305
+ #include <stdfloat>
+ 
  struct X { };
  
  template<>
*************** struct std::formatter<X, char>
*** 458,470 ****
      if (spec == "int")
      {
        pc.check_dynamic_spec_integral(pc.next_arg_id());
!       integer = true;
      }
      else if (spec == "str")
      {
        pc.check_dynamic_spec_string(pc.next_arg_id());
!       integer = false;
      }
      else
        throw std::format_error("invalid format-spec");
      return pc.begin() + spec.size();
--- 460,479 ----
      if (spec == "int")
      {
        pc.check_dynamic_spec_integral(pc.next_arg_id());
!       type = Type::integral;
      }
      else if (spec == "str")
      {
        pc.check_dynamic_spec_string(pc.next_arg_id());
!       type = Type::string;
!     }
!     else if (spec == "float")
!     {
!       pc.check_dynamic_spec<float, double, long double>(pc.next_arg_id());
!       type = Type::floating;
      }
+     else if (spec == "other")
+       type = Type::other;
      else
        throw std::format_error("invalid format-spec");
      return pc.begin() + spec.size();
*************** struct std::formatter<X, char>
*** 474,486 ****
    format(X, std::format_context& c) const
    {
      std::visit_format_arg([this]<typename T>(T) { // { dg-warning "deprecated" "" { target c++26 } }
!       if (is_integral_v<T> != this->integer)
! 	throw std::format_error("invalid argument type");
      }, c.arg(1));
      return c.out();
    }
  private:
!   bool integer = false;
  };
  #endif
  
--- 483,526 ----
    format(X, std::format_context& c) const
    {
      std::visit_format_arg([this]<typename T>(T) { // { dg-warning "deprecated" "" { target c++26 } }
!       constexpr bool is_handle
! 	= std::is_same_v<std::basic_format_arg<std::format_context>::handle, T>;
!       constexpr bool is_integral
! 	= std::is_same_v<int, T> || std::is_same_v<unsigned int, T>
! 	    || is_same_v<long long, T> || std::is_same_v<unsigned long long, T>;
!       constexpr bool is_string
! 	= std::is_same_v<const char*, T> || std::is_same_v<std::string_view, T>;
!       constexpr bool is_floating
! 	= std::is_same_v<float, T> || std::is_same_v<double, T>
! 	    || std::is_same_v<long double, T>;
!       switch (this->type)
!       {
! 	case Type::other:
! 	  if (is_handle) return;
! 	  break;
! 	case Type::integral:
! 	  if (is_integral) return;
! 	  break;
! 	case Type::string:
! 	  if (is_string) return;
! 	  break;
! 	case Type::floating:
! 	  if (is_floating) return;
! 	  break;
!       }
!       throw std::format_error("invalid argument type");
      }, c.arg(1));
      return c.out();
    }
  private:
!   enum class Type
!   {
!     other,
!     integral,
!     string,
!     floating,
!   };
!   Type type = Type::other;
  };
  #endif
  
*************** test_dynamic_type_check()
*** 497,502 ****
--- 537,564 ----
  
    (void) std::format("{:int}", X{}, 42L);
    (void) std::format("{:str}", X{}, "H2G2");
+   (void) std::format("{:float}", X{}, 10.0);
+ 
+ #ifdef __STDCPP_FLOAT16_T__
+   if constexpr (std::formattable<std::bfloat16_t, char>)
+     (void) std::format("{:other}", X{}, 10.0bf16);
+ #endif
+ #ifdef __STDCPP_FLOAT16_T__
+   if constexpr (std::formattable<std::float16_t, char>)
+     (void) std::format("{:other}", X{}, 10.0f16);
+ #endif
+ #ifdef __STDCPP_FLOAT32_T__
+   if constexpr (std::formattable<std::float32_t, char>)
+     (void) std::format("{:other}", X{}, 10.0f32);
+ #endif
+ #ifdef __STDCPP_FLOAT64_T__
+   if constexpr (std::formattable<std::float64_t, char>)
+     (void) std::format("{:other}", X{}, 10.0f64);
+ #endif
+ #ifdef __STDCPP_FLOAT128_T__
+   if constexpr (std::formattable<std::float128_t, char>)
+     (void) std::format("{:other}", X{}, 10.0f128);
+ #endif
  #endif
  }
  
diff -Nrcpad gcc-16-20250511/libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc gcc-16-20250518/libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
*** gcc-16-20250511/libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc	Sun May 11 22:32:49 2025
--- gcc-16-20250518/libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc	Sun May 18 22:33:08 2025
***************
*** 5,13 ****
  
  #include <format>
  
! template<auto> struct Tester { };
! 
! Tester<std::format_kind<const int(&)[1]>> t; // { dg-error "here" }
  
! // { dg-error "use of 'std::format_kind" "" { target *-*-* } 0 }
! // { dg-error "primary_template_not_defined" "" { target *-*-* } 0 }
--- 5,18 ----
  
  #include <format>
  
! void test()
! {
!   (void) std::format_kind<void>; // { dg-error "here" }
!   (void) std::format_kind<const void>; // { dg-error "here" }
!   (void) std::format_kind<int>; // { dg-error "here" }
!   (void) std::format_kind<int&>; // { dg-error "here" }
!   (void) std::format_kind<const int(&)[10]>; // { dg-error "here" }
!   (void) std::format_kind<void()>; // { dg-error "here" }
! }
  
! // { dg-error "cannot use primary template of 'std::format_kind'" "" { target *-*-* } 0 }
