diff -Nrcpad gcc-14-20250509/LAST_UPDATED gcc-14-20250516/LAST_UPDATED
*** gcc-14-20250509/LAST_UPDATED	Fri May  9 22:33:23 2025
--- gcc-14-20250516/LAST_UPDATED	Fri May 16 22:33:07 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-14 revision 81da797328c91ef6b3bed6666f6d047f8e003efe
--- 1 ----
! Obtained from git: releases/gcc-14 revision a9de71c2060339fcd56257e64e61af207b924e4c
diff -Nrcpad gcc-14-20250509/MD5SUMS gcc-14-20250516/MD5SUMS
*** gcc-14-20250509/MD5SUMS	Fri May  9 22:33:29 2025
--- gcc-14-20250516/MD5SUMS	Fri May 16 22:33:11 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-14-20250509.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-14-20250516.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
*************** ddba67a2d70633fea1f055f0cddbd350  Change
*** 23,29 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 9154fb1441a72d2af7ecbfc1d5560392  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
--- 23,29 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 1834102d3a7198072827bf822d1e1d9a  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
*************** baf9b6e2583cff7f3b9de94370dd739e  gcc/AB
*** 505,511 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! e2f565f35ab9fdf2babe64f50db0b762  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 505,511 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 9b8ddd91c709f5b3c02f65766e1f69df  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 541,547 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! fc53fc667f46aada2b3b592d081dcd72  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 541,547 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 15019ba4c6be58ff99887ab0749bafb0  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** fb5f673cea6166ff90878e05bfa7dfe0  gcc/bu
*** 3149,3167 ****
  ede17f9d46608ba7640863fbff3efc74  gcc/builtins.cc
  7bc731b65a1287130883ea830f32b347  gcc/builtins.def
  7fad42491d4a625f93bf21a7e2fb37de  gcc/builtins.h
! 6a556a376d2f8b6b50edb7f998a3e5f5  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  5c99106819e8051c3581d5098616d0dd  gcc/c-family/c-ada-spec.cc
  ba22e0144578c7dbcaa1887e6fd6046c  gcc/c-family/c-ada-spec.h
  d8e1cd0b904797f173e2493caaa19e03  gcc/c-family/c-attribs.cc
  e30283cc72b82ecd4f038fd07b956cd8  gcc/c-family/c-common.cc
! dcb799a087d0efa961cbccffce4da284  gcc/c-family/c-common.def
! cf7bc96576dd64bbba1e34932aae4320  gcc/c-family/c-common.h
  7e6740fc9833147bce7ec636f8223256  gcc/c-family/c-cppbuiltin.cc
  3c51c8a1bf9841ca850a743c9335be7b  gcc/c-family/c-dump.cc
  ed5e4fdaaa3c0c77618731dc0294dbc4  gcc/c-family/c-format.cc
  4b9c119ce2a0502632ac9f26fe560055  gcc/c-family/c-format.h
! c00ae110f52b414bb327d33bbdd16caa  gcc/c-family/c-gimplify.cc
  a6e23bc5770570ef1db57c75a2b60194  gcc/c-family/c-indentation.cc
  b6f81fd23a6e9c02b80c995f6f92273a  gcc/c-family/c-indentation.h
  0bc0e96f91611812a0952337bf4c84e7  gcc/c-family/c-lex.cc
--- 3149,3167 ----
  ede17f9d46608ba7640863fbff3efc74  gcc/builtins.cc
  7bc731b65a1287130883ea830f32b347  gcc/builtins.def
  7fad42491d4a625f93bf21a7e2fb37de  gcc/builtins.h
! b81417de78ea84be660b07c5b2ce2b56  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  5c99106819e8051c3581d5098616d0dd  gcc/c-family/c-ada-spec.cc
  ba22e0144578c7dbcaa1887e6fd6046c  gcc/c-family/c-ada-spec.h
  d8e1cd0b904797f173e2493caaa19e03  gcc/c-family/c-attribs.cc
  e30283cc72b82ecd4f038fd07b956cd8  gcc/c-family/c-common.cc
! 51998f9e7aec6e99e0428f2b836629c1  gcc/c-family/c-common.def
! b1e23baecab2464ead1618cb2d50a6ef  gcc/c-family/c-common.h
  7e6740fc9833147bce7ec636f8223256  gcc/c-family/c-cppbuiltin.cc
  3c51c8a1bf9841ca850a743c9335be7b  gcc/c-family/c-dump.cc
  ed5e4fdaaa3c0c77618731dc0294dbc4  gcc/c-family/c-format.cc
  4b9c119ce2a0502632ac9f26fe560055  gcc/c-family/c-format.h
! 4ea9854482514f213c456ae2568962c3  gcc/c-family/c-gimplify.cc
  a6e23bc5770570ef1db57c75a2b60194  gcc/c-family/c-indentation.cc
  b6f81fd23a6e9c02b80c995f6f92273a  gcc/c-family/c-indentation.h
  0bc0e96f91611812a0952337bf4c84e7  gcc/c-family/c-lex.cc
*************** b3ac1850d65a4a98a5f313d9b56a64a9  gcc/c-
*** 3190,3196 ****
  083198bbb0e08402af9e32302cfb13f4  gcc/c-family/known-headers.h
  889dd6dda61d7bfa71bdc10ce6b98b06  gcc/c-family/name-hint.h
  65a88820b5866ee19cd29ed45ef95c5c  gcc/c-family/stub-objc.cc
! 1952bf1f82ae4479d466cbd49e22f9dc  gcc/c/ChangeLog
  fb28ab1a3ac7e093beffa6875b5b921b  gcc/c/Make-lang.in
  6c28a645fc3125bc8a52d498324306de  gcc/c/c-aux-info.cc
  22456b24e2c3a46534e7f1e7516dae5f  gcc/c/c-convert.cc
--- 3190,3196 ----
  083198bbb0e08402af9e32302cfb13f4  gcc/c-family/known-headers.h
  889dd6dda61d7bfa71bdc10ce6b98b06  gcc/c-family/name-hint.h
  65a88820b5866ee19cd29ed45ef95c5c  gcc/c-family/stub-objc.cc
! 88b862b3c4f70ff16c5f8f5d804b5bbe  gcc/c/ChangeLog
  fb28ab1a3ac7e093beffa6875b5b921b  gcc/c/Make-lang.in
  6c28a645fc3125bc8a52d498324306de  gcc/c/c-aux-info.cc
  22456b24e2c3a46534e7f1e7516dae5f  gcc/c/c-convert.cc
*************** d5abc77cf8004e86fb7798f7912b35da  gcc/c/
*** 3201,3211 ****
  b9bf011e452a601e725ffcb30945779c  gcc/c/c-lang.h
  eab11ca7ce18dcc502177ae41cb79387  gcc/c/c-objc-common.cc
  ad6e649bcbd736e0a16a58cf7d3057a6  gcc/c/c-objc-common.h
! 6df0283de72e70182161a5efb2cc132e  gcc/c/c-parser.cc
  53d5e1e1caa35af2eebf2cc719526fbb  gcc/c/c-parser.h
  ded332de6b113723402269d9adc62136  gcc/c/c-tree.def
  b7466500901213c913796692a6a93985  gcc/c/c-tree.h
! 979460bbe9d685b081e77e32cd532764  gcc/c/c-typeck.cc
  d0fea54f92cd003f0df6829625314382  gcc/c/config-lang.in
  29eb0d8b8058ee0c5e7298d3a5a59533  gcc/c/gccspec.cc
  a958b0df2e8852f212af8cf1f793458d  gcc/c/gimple-parser.cc
--- 3201,3211 ----
  b9bf011e452a601e725ffcb30945779c  gcc/c/c-lang.h
  eab11ca7ce18dcc502177ae41cb79387  gcc/c/c-objc-common.cc
  ad6e649bcbd736e0a16a58cf7d3057a6  gcc/c/c-objc-common.h
! 4db6c815951884ae22d5bfa1f51664a9  gcc/c/c-parser.cc
  53d5e1e1caa35af2eebf2cc719526fbb  gcc/c/c-parser.h
  ded332de6b113723402269d9adc62136  gcc/c/c-tree.def
  b7466500901213c913796692a6a93985  gcc/c/c-tree.h
! 1d9feca566811af06439d1ca6e5d77e3  gcc/c/c-typeck.cc
  d0fea54f92cd003f0df6829625314382  gcc/c/config-lang.in
  29eb0d8b8058ee0c5e7298d3a5a59533  gcc/c/gccspec.cc
  a958b0df2e8852f212af8cf1f793458d  gcc/c/gimple-parser.cc
*************** d2e2dbc63c0154344dea94259ba7515b  gcc/cf
*** 3238,3244 ****
  e96b4639e7fcc608fe111ec89b70504c  gcc/cgraph.cc
  18fbe7f9e2b6016552d7ceefd5509ed3  gcc/cgraph.h
  48d1e1b2c184a043a04232867cbbf4ee  gcc/cgraphbuild.cc
! 4ded5c271370d02b3168ab314ecab5d5  gcc/cgraphclones.cc
  07ff6a5a4ebc4ee6b81980d65ee65753  gcc/cgraphunit.cc
  aa88558fe6b5f9d16955067b2e0ff1cf  gcc/cif-code.def
  cbd6d8995cfcad18b2f5ae1153282276  gcc/collect-utils.cc
--- 3238,3244 ----
  e96b4639e7fcc608fe111ec89b70504c  gcc/cgraph.cc
  18fbe7f9e2b6016552d7ceefd5509ed3  gcc/cgraph.h
  48d1e1b2c184a043a04232867cbbf4ee  gcc/cgraphbuild.cc
! a9521e7e3672b0a6bdeca1a495ba3627  gcc/cgraphclones.cc
  07ff6a5a4ebc4ee6b81980d65ee65753  gcc/cgraphunit.cc
  aa88558fe6b5f9d16955067b2e0ff1cf  gcc/cif-code.def
  cbd6d8995cfcad18b2f5ae1153282276  gcc/collect-utils.cc
*************** fccc6d65638a2ce66ebc6b06766912c2  gcc/co
*** 4065,4071 ****
  4f7ab8c57b3148a31d24838528313ef2  gcc/config/i386/i386-rust.h
  3c0ce201253936cd590e6ebe94b5e2fd  gcc/config/i386/i386.cc
  7f4ed5a47861156413fe67f244f01a33  gcc/config/i386/i386.h
! f65b1e43eb3c78c701c722cfda5eb64c  gcc/config/i386/i386.md
  85b5302c87709e4b2325868fe370b441  gcc/config/i386/i386.opt
  fb32c950c45e643174eb7c58d7f4218f  gcc/config/i386/i386.opt.urls
  95e430a8a19e9226167376a9a7ca34d9  gcc/config/i386/i386elf.h
--- 4065,4071 ----
  4f7ab8c57b3148a31d24838528313ef2  gcc/config/i386/i386-rust.h
  3c0ce201253936cd590e6ebe94b5e2fd  gcc/config/i386/i386.cc
  7f4ed5a47861156413fe67f244f01a33  gcc/config/i386/i386.h
! 85951c0188bf68d8d09c05f13999a98b  gcc/config/i386/i386.md
  85b5302c87709e4b2325868fe370b441  gcc/config/i386/i386.opt
  fb32c950c45e643174eb7c58d7f4218f  gcc/config/i386/i386.opt.urls
  95e430a8a19e9226167376a9a7ca34d9  gcc/config/i386/i386elf.h
*************** d36a2aabdf8da39363d9be0efef739b0  gcc/co
*** 5361,5367 ****
  11daa3f7f65177eb32e2dad6fd437637  gcc/coroutine-passes.cc
  f1ae4baa11bd5b6dd111907d100e7c0c  gcc/coverage.cc
  bf1a3b3570d1b69e07f60f5150f38a93  gcc/coverage.h
! 0b77f840aa8aee2b1b513f42c47f6fb9  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 5361,5367 ----
  11daa3f7f65177eb32e2dad6fd437637  gcc/coroutine-passes.cc
  f1ae4baa11bd5b6dd111907d100e7c0c  gcc/coverage.cc
  bf1a3b3570d1b69e07f60f5150f38a93  gcc/coverage.h
! f4cd7f5f83cf09fc87948482c5148c96  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** eb0e2e62caf98260cc2641216d140ae9  gcc/cp
*** 5401,5412 ****
  dee1bc8866869d1becc1c1459cf3853d  gcc/cp/cfns.h
  cece9d48fd49b2e27c93c08c799d3a43  gcc/cp/class.cc
  c2cee7941d7a9d85eb87f70b7f8495ac  gcc/cp/config-lang.in
! fdbccaa087b035a5aecd3be41b27dfc6  gcc/cp/constexpr.cc
  e2342416928d82aea826d50f04c9f56c  gcc/cp/constraint.cc
  7f4cf1f0f93d7aa0443c94e023845d1c  gcc/cp/contracts.cc
  5b547c5fd539f8a214ed271c5a475a85  gcc/cp/contracts.h
! 3484b55b3ed387dc1e3533752de97075  gcc/cp/coroutines.cc
! c00c917a34a1da5c9fc0740ca6cf66ae  gcc/cp/cp-gimplify.cc
  d3243151c2dc95476f1ffe37daeac128  gcc/cp/cp-lang.cc
  7c2a3efea776c90aa874253dbc0d63d5  gcc/cp/cp-name-hint.h
  85e21b04cf2b169a286ee97efb85c1b4  gcc/cp/cp-objcp-common.cc
--- 5401,5412 ----
  dee1bc8866869d1becc1c1459cf3853d  gcc/cp/cfns.h
  cece9d48fd49b2e27c93c08c799d3a43  gcc/cp/class.cc
  c2cee7941d7a9d85eb87f70b7f8495ac  gcc/cp/config-lang.in
! 2be592ffbbec6e23f2a515bccb32f835  gcc/cp/constexpr.cc
  e2342416928d82aea826d50f04c9f56c  gcc/cp/constraint.cc
  7f4cf1f0f93d7aa0443c94e023845d1c  gcc/cp/contracts.cc
  5b547c5fd539f8a214ed271c5a475a85  gcc/cp/contracts.h
! dc474088c982391206e9d6a529937f19  gcc/cp/coroutines.cc
! fbb64a63ff9ac5740b8339f18f4d0644  gcc/cp/cp-gimplify.cc
  d3243151c2dc95476f1ffe37daeac128  gcc/cp/cp-lang.cc
  7c2a3efea776c90aa874253dbc0d63d5  gcc/cp/cp-name-hint.h
  85e21b04cf2b169a286ee97efb85c1b4  gcc/cp/cp-objcp-common.cc
*************** e5de0a6c0e25db99122b38cfbd158f92  gcc/cp
*** 5443,5461 ****
  11d4b2dad811e7167eda68313cf80ac5  gcc/cp/name-lookup.cc
  4c2302075ee88f154fe1d9d5bc880b38  gcc/cp/name-lookup.h
  9071e61b746a07f7ae419836317ea8d4  gcc/cp/operators.def
! 60c299af3fd419f7a4f41273c6f5363e  gcc/cp/optimize.cc
! 858714f2d555e4551794ae01f5e0a5da  gcc/cp/parser.cc
  64953966b085a9e770be93c5d1bdca4e  gcc/cp/parser.h
! c5cecb5a2b5692e0e5862de7ec5c1c79  gcc/cp/pt.cc
  c59b967f38f4705696e11724814e2a06  gcc/cp/ptree.cc
  5e3e9c87ee323734a11e7081aaa64fa5  gcc/cp/rtti.cc
  7764edeba26dbb6b15962e6395cba9d2  gcc/cp/search.cc
! 06ca68ef3f45366416d681208aa4edc3  gcc/cp/semantics.cc
  ca8df8ebc275aae3373b59e34155cc57  gcc/cp/std-name-hint.gperf
  94fae0d321122a3989a40631ba86d13b  gcc/cp/std-name-hint.h
  41e87ed4f19ff0138f84bf27e143fc65  gcc/cp/tree.cc
  ade60cf10e86c87a2d3960a453e78059  gcc/cp/type-utils.h
! 93805b7cd471c637c830567641d943d3  gcc/cp/typeck.cc
  e8b7fc59f86c5a7c4e08ae88222ebbeb  gcc/cp/typeck2.cc
  b04e03a3822d8b9ab15575d78d4309f1  gcc/cp/vtable-class-hierarchy.cc
  d9039dac3f86bf082870bf78b964568b  gcc/cppbuiltin.cc
--- 5443,5461 ----
  11d4b2dad811e7167eda68313cf80ac5  gcc/cp/name-lookup.cc
  4c2302075ee88f154fe1d9d5bc880b38  gcc/cp/name-lookup.h
  9071e61b746a07f7ae419836317ea8d4  gcc/cp/operators.def
! b4ea7976f776ee37fce22b16756ad0e0  gcc/cp/optimize.cc
! 3005c54da5bb91ee03256ad352be3db5  gcc/cp/parser.cc
  64953966b085a9e770be93c5d1bdca4e  gcc/cp/parser.h
! b21cb4ca763e2f9f0e4e87c4f31976f7  gcc/cp/pt.cc
  c59b967f38f4705696e11724814e2a06  gcc/cp/ptree.cc
  5e3e9c87ee323734a11e7081aaa64fa5  gcc/cp/rtti.cc
  7764edeba26dbb6b15962e6395cba9d2  gcc/cp/search.cc
! 904618015813b4e7f5019d3572241aa9  gcc/cp/semantics.cc
  ca8df8ebc275aae3373b59e34155cc57  gcc/cp/std-name-hint.gperf
  94fae0d321122a3989a40631ba86d13b  gcc/cp/std-name-hint.h
  41e87ed4f19ff0138f84bf27e143fc65  gcc/cp/tree.cc
  ade60cf10e86c87a2d3960a453e78059  gcc/cp/type-utils.h
! 4ebb55c4c22d34bf9c9d1bc43b29b288  gcc/cp/typeck.cc
  e8b7fc59f86c5a7c4e08ae88222ebbeb  gcc/cp/typeck2.cc
  b04e03a3822d8b9ab15575d78d4309f1  gcc/cp/vtable-class-hierarchy.cc
  d9039dac3f86bf082870bf78b964568b  gcc/cppbuiltin.cc
*************** e8bbee6a5e33ad3d8031cd3af2c03791  gcc/di
*** 5747,5753 ****
  408fe90eba25ae524e37ff995d545527  gcc/diagnostic-spec.cc
  8913d6b5f4d620d1cae708e00c4411c3  gcc/diagnostic-spec.h
  c9132e63d297ba23a6f9993e34a99114  gcc/diagnostic-url.h
! 56c14f8de0e7d074d9ebc0a42aa88e2c  gcc/diagnostic.cc
  66ce1509fa44d91467ea72956bbbeb54  gcc/diagnostic.def
  aa1c9493107eefcfd7a64479fccc57e8  gcc/diagnostic.h
  1d5406c2c00778685af4d54cedf49ae6  gcc/digraph.cc
--- 5747,5753 ----
  408fe90eba25ae524e37ff995d545527  gcc/diagnostic-spec.cc
  8913d6b5f4d620d1cae708e00c4411c3  gcc/diagnostic-spec.h
  c9132e63d297ba23a6f9993e34a99114  gcc/diagnostic-url.h
! 2aeb60d466e82d2f199b93d128c30206  gcc/diagnostic.cc
  66ce1509fa44d91467ea72956bbbeb54  gcc/diagnostic.def
  aa1c9493107eefcfd7a64479fccc57e8  gcc/diagnostic.h
  1d5406c2c00778685af4d54cedf49ae6  gcc/digraph.cc
*************** e9b8122841fbfbbc30fee8ed6613c399  gcc/do
*** 5793,5799 ****
  aa4d93313f9b7a5aec5b09041fd796a0  gcc/doc/install.texi
  2ef5aff8fc8a7cedf6236f86835e2608  gcc/doc/install.texi2html
  26c53e1edece23eebf72e40881f20e46  gcc/doc/interface.texi
! a20bb0e311c78251cbb0278d16db0543  gcc/doc/invoke.texi
  4eb965d8ead78f1e3757415ae4d7872f  gcc/doc/languages.texi
  d2687b47a74c0bb7a227308dc1e7ba84  gcc/doc/libgcc.texi
  1e7dce602334edeb2ec545b9da6e4206  gcc/doc/loop.texi
--- 5793,5799 ----
  aa4d93313f9b7a5aec5b09041fd796a0  gcc/doc/install.texi
  2ef5aff8fc8a7cedf6236f86835e2608  gcc/doc/install.texi2html
  26c53e1edece23eebf72e40881f20e46  gcc/doc/interface.texi
! e89b8aad38e5d384f3f15b45de16bf53  gcc/doc/invoke.texi
  4eb965d8ead78f1e3757415ae4d7872f  gcc/doc/languages.texi
  d2687b47a74c0bb7a227308dc1e7ba84  gcc/doc/libgcc.texi
  1e7dce602334edeb2ec545b9da6e4206  gcc/doc/loop.texi
*************** c1dcd6f3a738eed32cfd895aa1d7c8a6  gcc/do
*** 5826,5832 ****
  335a5919c5f3951441bdb1c23a4aec9f  gcc/domwalk.h
  daff71b08321afe3ee27afca24431814  gcc/double-int.cc
  20c1bf25156bf31a0cc993c6c4f3c197  gcc/double-int.h
! 4dba037c17d097f86cdd7e2a435c7704  gcc/dse.cc
  4b55186c3cb7afeeef3ef595c7712646  gcc/dump-context.h
  de190af17b56f025e38cc7b80eb99c8b  gcc/dumpfile.cc
  8d72acdb05890d8e08bdff52e2110299  gcc/dumpfile.h
--- 5826,5832 ----
  335a5919c5f3951441bdb1c23a4aec9f  gcc/domwalk.h
  daff71b08321afe3ee27afca24431814  gcc/double-int.cc
  20c1bf25156bf31a0cc993c6c4f3c197  gcc/double-int.h
! 2b84bf179a889e94b9efbcd87c0fb2d6  gcc/dse.cc
  4b55186c3cb7afeeef3ef595c7712646  gcc/dump-context.h
  de190af17b56f025e38cc7b80eb99c8b  gcc/dumpfile.cc
  8d72acdb05890d8e08bdff52e2110299  gcc/dumpfile.h
*************** ca9033ff37a39734edcb55c478a3a1fa  gcc/dw
*** 5835,5841 ****
  40224310d2b6e68a058c4c1079917a1f  gcc/dwarf2cfi.cc
  163e5e9e8282834ce39f40a4696495a8  gcc/dwarf2ctf.cc
  be8084cbe55394042e43e039c8ed9452  gcc/dwarf2ctf.h
! db4914000c817d2d46ae175f5ec145e0  gcc/dwarf2out.cc
  15ac2573846d37a9fc761ca237cfcbb3  gcc/dwarf2out.h
  949b4f69bfb006cfb1da508bd737e550  gcc/early-remat.cc
  764b36482faefc5dac455631acf458cb  gcc/edit-context.cc
--- 5835,5841 ----
  40224310d2b6e68a058c4c1079917a1f  gcc/dwarf2cfi.cc
  163e5e9e8282834ce39f40a4696495a8  gcc/dwarf2ctf.cc
  be8084cbe55394042e43e039c8ed9452  gcc/dwarf2ctf.h
! 312c32d82cc1de564d5c2ea1a759c512  gcc/dwarf2out.cc
  15ac2573846d37a9fc761ca237cfcbb3  gcc/dwarf2out.h
  949b4f69bfb006cfb1da508bd737e550  gcc/early-remat.cc
  764b36482faefc5dac455631acf458cb  gcc/edit-context.cc
*************** a43a9b94e705e86ad90f4a5f91117cc6  gcc/fi
*** 5862,5868 ****
  33dc79bb052f00d288904f8f51fe9a56  gcc/file-find.h
  9ce851f606069da28537ea2610354edb  gcc/file-prefix-map.cc
  23460e9d5f714b4c92d070ce4e8850d4  gcc/file-prefix-map.h
! 16570c7c41dad556ec5a2d517cfeb4f7  gcc/final.cc
  417554d2d034fd13b8e584c37694fa49  gcc/fixed-value.cc
  f509ae019760fb711e40cefd2283fb1a  gcc/fixed-value.h
  93312491577dbdc275772a99528a516a  gcc/flag-types.h
--- 5862,5868 ----
  33dc79bb052f00d288904f8f51fe9a56  gcc/file-find.h
  9ce851f606069da28537ea2610354edb  gcc/file-prefix-map.cc
  23460e9d5f714b4c92d070ce4e8850d4  gcc/file-prefix-map.h
! 7d9b337dd3a561e58fceff3be47326a3  gcc/final.cc
  417554d2d034fd13b8e584c37694fa49  gcc/fixed-value.cc
  f509ae019760fb711e40cefd2283fb1a  gcc/fixed-value.h
  93312491577dbdc275772a99528a516a  gcc/flag-types.h
*************** dce7dac7e905ada28c6563d930b531eb  gcc/fo
*** 5872,5878 ****
  090850db6c719557b18e35fafc041a4c  gcc/fold-const.cc
  62f9c541bc34eb653f289ecd29c7848a  gcc/fold-const.h
  5cce8057cb6a40c0ce23fcd6497d35c0  gcc/fold-mem-offsets.cc
! 913f1e0cbad18f6ba6b1c0b72ce5e4b2  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 5872,5878 ----
  090850db6c719557b18e35fafc041a4c  gcc/fold-const.cc
  62f9c541bc34eb653f289ecd29c7848a  gcc/fold-const.h
  5cce8057cb6a40c0ce23fcd6497d35c0  gcc/fold-mem-offsets.cc
! c7b25ffca74de09241643cfa9185e3e6  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** dbbc0770ad9027571c63b5d0533e40ec  gcc/fo
*** 5916,5922 ****
  5a69241d57d8b6127ecb02e0a22bee6e  gcc/fortran/dependency.h
  af59533c4bfc13e7b07e6ec1c164832c  gcc/fortran/dump-parse-tree.cc
  eaa509e23c681b4615a43afdbfe3cb0d  gcc/fortran/error.cc
! ddc0015e1cd3c1fa7fa72f9281fcd3ee  gcc/fortran/expr.cc
  5790e4e2fb5a21288fcb647a0dca23c4  gcc/fortran/f95-lang.cc
  7e5624e7daaba902f7b3b3ee4abd8bcd  gcc/fortran/frontend-passes.cc
  f12471f71a85ea43d5295d1190faf890  gcc/fortran/gfc-diagnostic.def
--- 5916,5922 ----
  5a69241d57d8b6127ecb02e0a22bee6e  gcc/fortran/dependency.h
  af59533c4bfc13e7b07e6ec1c164832c  gcc/fortran/dump-parse-tree.cc
  eaa509e23c681b4615a43afdbfe3cb0d  gcc/fortran/error.cc
! e3557d087bbbdf3b8f63250a32e95b5c  gcc/fortran/expr.cc
  5790e4e2fb5a21288fcb647a0dca23c4  gcc/fortran/f95-lang.cc
  7e5624e7daaba902f7b3b3ee4abd8bcd  gcc/fortran/frontend-passes.cc
  f12471f71a85ea43d5295d1190faf890  gcc/fortran/gfc-diagnostic.def
*************** e85c32445c6de7c1d06b379a0d1f12ad  gcc/fo
*** 5948,5954 ****
  ba11ab9ac11e6a78fa7706263e42f1fc  gcc/fortran/options.cc
  56af741644ab30aa09221a750079e265  gcc/fortran/parse.cc
  6afe26dd3f7a33ff8c524687d1958f05  gcc/fortran/parse.h
! 9ac1b5b2244f94ac3c30803957d5c17a  gcc/fortran/primary.cc
  e8c15377bf31a221c1961801acf6b0be  gcc/fortran/resolve.cc
  bf73188a78ecc3c99bc6915db827d75f  gcc/fortran/scanner.cc
  1cfffbabece85f419a6ca2676917e619  gcc/fortran/scanner.h
--- 5948,5954 ----
  ba11ab9ac11e6a78fa7706263e42f1fc  gcc/fortran/options.cc
  56af741644ab30aa09221a750079e265  gcc/fortran/parse.cc
  6afe26dd3f7a33ff8c524687d1958f05  gcc/fortran/parse.h
! a0e2907182a3f4a299681840e8f5be43  gcc/fortran/primary.cc
  e8c15377bf31a221c1961801acf6b0be  gcc/fortran/resolve.cc
  bf73188a78ecc3c99bc6915db827d75f  gcc/fortran/scanner.cc
  1cfffbabece85f419a6ca2676917e619  gcc/fortran/scanner.h
*************** c420f80da3e0e794311a9b90c49abce5  gcc/fo
*** 5964,5970 ****
  5644e20cd4aa0324875834a377cf89a4  gcc/fortran/trans-const.h
  a13796bc19ee899957fa78d9652f5ff5  gcc/fortran/trans-decl.cc
  dcabcc3c45d48b48a898b1ae88dd1fd5  gcc/fortran/trans-expr.cc
! 7cea18402cca280d0ed82eb30178e489  gcc/fortran/trans-intrinsic.cc
  cd62c1c77bf122047b8b1222354a9b5b  gcc/fortran/trans-io.cc
  be2abe61b914863c8dce5e37cb7f1491  gcc/fortran/trans-openmp.cc
  0a23775591d7d3e4fdb603d7bd9febb1  gcc/fortran/trans-stmt.cc
--- 5964,5970 ----
  5644e20cd4aa0324875834a377cf89a4  gcc/fortran/trans-const.h
  a13796bc19ee899957fa78d9652f5ff5  gcc/fortran/trans-decl.cc
  dcabcc3c45d48b48a898b1ae88dd1fd5  gcc/fortran/trans-expr.cc
! 7376d3754fcb67bb3d440eedfce78b31  gcc/fortran/trans-intrinsic.cc
  cd62c1c77bf122047b8b1222354a9b5b  gcc/fortran/trans-io.cc
  be2abe61b914863c8dce5e37cb7f1491  gcc/fortran/trans-openmp.cc
  0a23775591d7d3e4fdb603d7bd9febb1  gcc/fortran/trans-stmt.cc
*************** e8a9eb01b9451a357155e7152df1c669  gcc/ta
*** 8060,8066 ****
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 1b433ad3f3d1a244c2ec88157fdfa89c  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 8060,8066 ----
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 4dac0d21ab4d74b1434f30bac0cbcb79  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** b980842cc9bcb2b9e860aa2e3af5dc8c  gcc/te
*** 15019,15024 ****
--- 15019,15025 ----
  eda65f9adf2b3b0f2d16abf6d3a3472a  gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
  3a086507b4173f7496d1581ef7af0f41  gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
  d70e1067c46528fe83662185c66bef45  gcc/testsuite/g++.dg/coroutines/torture/pr105104.C
+ 25fa35420b604bea9857061f35656b5b  gcc/testsuite/g++.dg/coroutines/torture/pr113773.C
  90760c8a1f8f820b4edb0f623596ca78  gcc/testsuite/g++.dg/coroutines/torture/pr115905.C
  33c54ba08ef1e709e2fb67d90cc048b4  gcc/testsuite/g++.dg/coroutines/torture/pr92933.C
  308d14f00ca84e328c3f1e144675b59b  gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
*************** e210eaaa7545615d95f00423c888ec15  gcc/te
*** 18344,18349 ****
--- 18345,18351 ----
  29d019b91f9e9754780b3f7d3b824a43  gcc/testsuite/g++.dg/cpp1y/decltype-auto6.C
  a0963c46378623804788982ece221428  gcc/testsuite/g++.dg/cpp1y/decltype-auto7.C
  6656a414d9dfcfde451bf4c7cda15e23  gcc/testsuite/g++.dg/cpp1y/decltype-auto8.C
+ bdf42806bc072f01f4ad0c2f053df450  gcc/testsuite/g++.dg/cpp1y/decltype-auto9.C
  516d0cef75f4267f67d755a810807bc2  gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
  689cbb9207e775c0f7572b0587fbd4fd  gcc/testsuite/g++.dg/cpp1y/digit-sep-line-neg.C
  b0b8339395130310f925dd038dff1c6c  gcc/testsuite/g++.dg/cpp1y/digit-sep-line.C
*************** a5fcad1d0708a6218c6fe69c1871df02  gcc/te
*** 18372,18377 ****
--- 18374,18380 ----
  613f8f1a0e37b58fd3edbb783043189f  gcc/testsuite/g++.dg/cpp1y/lambda-defarg7.C
  0dd8ee41a3d0ab18cecf9a17d6956776  gcc/testsuite/g++.dg/cpp1y/lambda-generic-100362.C
  8323a8b2c633684a23115187598b47d8  gcc/testsuite/g++.dg/cpp1y/lambda-generic-107437.C
+ 9b89364ccec98909d6159c17f6a73b89  gcc/testsuite/g++.dg/cpp1y/lambda-generic-117778.C
  acb467e6576c23ea04ca8d80f1c8a11b  gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-1.C
  fe7ad46667b9e092ad808e656e9427de  gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
  b2b66ca7cef468617193eb813e2dac6a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-69977.C
*************** cd432aa62bbbf4b16b93cb38b110d2a5  gcc/te
*** 19573,19578 ****
--- 19576,19583 ----
  44f4c7cbf1e4a45b5e275e10d9823057  gcc/testsuite/g++.dg/cpp26/name-independent-decl4.C
  f09dc9ea398bb62a535b52948f72e1f0  gcc/testsuite/g++.dg/cpp26/name-independent-decl5.C
  84e871a4b75561cbff5fe117fd5a52e9  gcc/testsuite/g++.dg/cpp26/name-independent-decl6.C
+ 5f2cde48457586ee466e647dcbc9022e  gcc/testsuite/g++.dg/cpp26/name-independent-decl7.C
+ e21940a9e7b4702fb26f7985bbb70580  gcc/testsuite/g++.dg/cpp26/name-independent-decl8.C
  81da95d53df0e0ca295568eaee63ec61  gcc/testsuite/g++.dg/cpp26/name-independent-decl9.C
  935218094ce32f7e344f11a3fd203c32  gcc/testsuite/g++.dg/cpp26/pr115754.C
  7e3e8416e6735f1e27355ec2ccdb2682  gcc/testsuite/g++.dg/cpp26/static_assert1.C
*************** a4e3473e8199aabb6d134042640d65a2  gcc/te
*** 19581,19586 ****
--- 19586,19593 ----
  b4519bce844d0325d874901a172f6d25  gcc/testsuite/g++.dg/cpp26/trivial-infinite-loop3.C
  8d19346266adba2567e40d4824bbf34c  gcc/testsuite/g++.dg/cpp26/unevalstr1.C
  fa8ccfb2aff45aa2e8fe1ec2e8c7b461  gcc/testsuite/g++.dg/cpp26/unevalstr2.C
+ 87d838f5781e95bc5519bc5cd029cd32  gcc/testsuite/g++.dg/cpp2a/abbrev-fn2.C
+ 2e791b293e77eea479b4f027aa624fcc  gcc/testsuite/g++.dg/cpp2a/abbrev-fn3.C
  6e521186d896dd387882c734f9554b0d  gcc/testsuite/g++.dg/cpp2a/aggr1.C
  4c16f1196fa5b9ac2fd9ba5882eba51c  gcc/testsuite/g++.dg/cpp2a/aggr2.C
  92044f5b7098db5aa135ac9643297edb  gcc/testsuite/g++.dg/cpp2a/array-conv1.C
*************** b62fa034bb46b39a59a7db1a60d3c927  gcc/te
*** 20128,20134 ****
--- 20135,20143 ----
  6590ffde41eddd85c60dfbd7ebcec57f  gcc/testsuite/g++.dg/cpp2a/consteval34.C
  defefd8dd547fd66cedc41bb14383765  gcc/testsuite/g++.dg/cpp2a/consteval35.C
  8b3447609c468820fafe23ed58c806cf  gcc/testsuite/g++.dg/cpp2a/consteval36.C
+ 20ce990eb517154bde9207c8afa6e20d  gcc/testsuite/g++.dg/cpp2a/consteval39.C
  2d6205fea644048201c44086df527c3a  gcc/testsuite/g++.dg/cpp2a/consteval4.C
+ 34ecadb8994bf3d4c005295e95f6f53d  gcc/testsuite/g++.dg/cpp2a/consteval40.C
  09d61acf831f6fd33b3695f66ce79b1e  gcc/testsuite/g++.dg/cpp2a/consteval41.C
  e71633ec506016932dc09c057d98c36c  gcc/testsuite/g++.dg/cpp2a/consteval5.C
  f8b2a0016c59d132f059d57a7638806f  gcc/testsuite/g++.dg/cpp2a/consteval6.C
*************** f8b2a0016c59d132f059d57a7638806f  gcc/te
*** 20138,20143 ****
--- 20147,20153 ----
  bc9287a9c261c2c6a397e45407917a6d  gcc/testsuite/g++.dg/cpp2a/constexpr-117504.C
  ae0f76ab894a07c21bf120374821b277  gcc/testsuite/g++.dg/cpp2a/constexpr-117504a.C
  6fb81533c7cb2d55e9a6e69ad7c13dd2  gcc/testsuite/g++.dg/cpp2a/constexpr-117775.C
+ 7185f762a196f2a6d81aa713399d33e1  gcc/testsuite/g++.dg/cpp2a/constexpr-86769.C
  5e488850397c427d79cc8ca55254462f  gcc/testsuite/g++.dg/cpp2a/constexpr-98122.C
  d28d3e5520803aa70919b2a4b20e6386  gcc/testsuite/g++.dg/cpp2a/constexpr-99287.C
  2004a926e55a105d0f80db50528a9def  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor1.C
*************** ac9bb69a57b021f97f435bdd64fdc923  gcc/te
*** 20217,20222 ****
--- 20227,20234 ----
  56cf7b227da9e5878b8fab57be913c5e  gcc/testsuite/g++.dg/cpp2a/constexpr-new20.C
  c045618ca4ccc6ddfb47d7c232152a06  gcc/testsuite/g++.dg/cpp2a/constexpr-new21.C
  8f15e7c6c4a56e33628394c948bba9aa  gcc/testsuite/g++.dg/cpp2a/constexpr-new22.C
+ 17161417d1b314f548eb76ed51f06d30  gcc/testsuite/g++.dg/cpp2a/constexpr-new24.C
+ 842eb288f31fa0fd04ade7dce7711c8f  gcc/testsuite/g++.dg/cpp2a/constexpr-new25.C
  facf8a64095f08ebe438ac7a031006a1  gcc/testsuite/g++.dg/cpp2a/constexpr-new3.C
  44e96a6cfd450fc9d40c13cc7a4e98f3  gcc/testsuite/g++.dg/cpp2a/constexpr-new4.C
  09667d3c51ef176269e12b2ece101f3d  gcc/testsuite/g++.dg/cpp2a/constexpr-new5.C
*************** c79632f5b81fdadda65a61ca549d97f6  gcc/te
*** 20483,20489 ****
--- 20495,20503 ----
  39a9dd88b9fa47a34b758e6abf328a7a  gcc/testsuite/g++.dg/cpp2a/lambda-uneval16.C
  e1f6714196bc4cc815de786f8301141d  gcc/testsuite/g++.dg/cpp2a/lambda-uneval17.C
  e99d0c361f9eaa55d53c9232f30b64cf  gcc/testsuite/g++.dg/cpp2a/lambda-uneval2.C
+ 8673bb6ceac7eb0d12e1269d3a4cd70e  gcc/testsuite/g++.dg/cpp2a/lambda-uneval23.C
  5f89a0a811ca20d222ad6994a619a023  gcc/testsuite/g++.dg/cpp2a/lambda-uneval24.C
+ e59f63d278e1f049c181594746f34930  gcc/testsuite/g++.dg/cpp2a/lambda-uneval26.C
  7bb4a9851f98debfb5698f0c4a582baa  gcc/testsuite/g++.dg/cpp2a/lambda-uneval27.C
  95297857429ac8850dbeb5773639ea6b  gcc/testsuite/g++.dg/cpp2a/lambda-uneval3.C
  2f7bd1774e5f890e65ee937419a29669  gcc/testsuite/g++.dg/cpp2a/lambda-uneval4.C
*************** b366f10d78ca81d757eef37957892a2f  gcc/te
*** 21197,21202 ****
--- 21211,21217 ----
  562879c7f9aec2c2d87cad70518ca469  gcc/testsuite/g++.dg/diagnostic/redeclaration-3.C
  6ba8ddd42905d56aa4169a6f75a2352a  gcc/testsuite/g++.dg/diagnostic/redeclaration-4.C
  c9965ff02480558cef893efd4316a232  gcc/testsuite/g++.dg/diagnostic/redeclaration-5.C
+ 8b89f091315ee5d72b7a399225d5df33  gcc/testsuite/g++.dg/diagnostic/redeclaration-7.C
  bb193b240fa78433d956d57357da2858  gcc/testsuite/g++.dg/diagnostic/ref1.C
  b70b854343c43b4b0eac609476ee8fc1  gcc/testsuite/g++.dg/diagnostic/ref2.C
  fabec9ff676df7e51a4bfcca57117fa6  gcc/testsuite/g++.dg/diagnostic/ref3.C
*************** bf7f67a5fc1bd44b05d5e417998e5219  gcc/te
*** 21468,21473 ****
--- 21483,21495 ----
  fd680877ab1cfa7b118501bb1e133e2a  gcc/testsuite/g++.dg/expr/enum1.C
  4d4bd4c17e114aaf9f89d2929fc74cfe  gcc/testsuite/g++.dg/expr/for1.C
  cd7f4946b61f298e733a92601139e8ef  gcc/testsuite/g++.dg/expr/for2.C
+ 18360989c3fc169b2e701dd8dfcd6899  gcc/testsuite/g++.dg/expr/for3.C
+ 10902377ab40cc355697abfa90c7693d  gcc/testsuite/g++.dg/expr/for4.C
+ e8800c3d3298f6f6b41f3e208d0ca496  gcc/testsuite/g++.dg/expr/for5.C
+ 541921263f7d54483e045b47e6105a91  gcc/testsuite/g++.dg/expr/for6.C
+ 4085af9e665070509798cb4c85b5b19e  gcc/testsuite/g++.dg/expr/for7.C
+ d3a2729557e954dd2b3b5dd834d711f7  gcc/testsuite/g++.dg/expr/for8.C
+ fd1d0df4853140248f559a02fb5137c6  gcc/testsuite/g++.dg/expr/for9.C
  a7b2ff0b7e3eb33ae39f51b9c2436899  gcc/testsuite/g++.dg/expr/incomplete1.C
  37a784f394dfd311c58877d862824189  gcc/testsuite/g++.dg/expr/lval1.C
  512351301e4c678c8c359d27dd7ef411  gcc/testsuite/g++.dg/expr/lval2.C
*************** e6bc1a09cf3c9d838c7ad4575c3d8740  gcc/te
*** 22251,22256 ****
--- 22273,22279 ----
  50b71ec6184b5e6c3e905f0038802697  gcc/testsuite/g++.dg/ext/stmtexpr24.C
  f203a0d905b5296ac5492e53575e933d  gcc/testsuite/g++.dg/ext/stmtexpr25.C
  fb5464937383d03f7e56903a4aec5a8f  gcc/testsuite/g++.dg/ext/stmtexpr26.C
+ 11def7548cdd94097acc7d018942b6a6  gcc/testsuite/g++.dg/ext/stmtexpr27.C
  15be25b1a07f94e4d65103bfb52d6406  gcc/testsuite/g++.dg/ext/stmtexpr3.C
  7f4e8ebedb382ebc1349d7067b034121  gcc/testsuite/g++.dg/ext/stmtexpr4.C
  a6cc01634e0bd707301c873f2d35f891  gcc/testsuite/g++.dg/ext/stmtexpr5.C
*************** ab5a2e3886c2a5718ee179f9c9a446ce  gcc/te
*** 22576,22581 ****
--- 22599,22605 ----
  d597d4e7ee031afa50fadecd64ddac77  gcc/testsuite/g++.dg/goacc/pr101759.C
  e52e88addea4404d3b276d25b44761c5  gcc/testsuite/g++.dg/goacc/pr107028-1.C
  850fa88299e8bcfd8762d4f56284ac92  gcc/testsuite/g++.dg/goacc/pr107028-2.C
+ 91d9384703986e459702bbc6ba03ac37  gcc/testsuite/g++.dg/goacc/pr118590.C
  e2e937b81f60d45e6f0fbe6cdc7207e4  gcc/testsuite/g++.dg/goacc/reference.C
  18b27d379a2a779f530009ced1114ae3  gcc/testsuite/g++.dg/goacc/routine-1.C
  9be1fd00ad32c627f4396d3b564fad56  gcc/testsuite/g++.dg/goacc/routine-2.C
*************** bc38928c9f8a6800dafc162f6e6f58fb  gcc/te
*** 24552,24557 ****
--- 24576,24583 ----
  4cda6e81598164c1353e6d8587668d7d  gcc/testsuite/g++.dg/modules/class-8_b.C
  2b3f45f6e4c8ec8128239deb281b75bd  gcc/testsuite/g++.dg/modules/clone-1_a.C
  9f5521e5bd740049dc967e0822fcb6ba  gcc/testsuite/g++.dg/modules/clone-1_b.C
+ b1c5e17ba398b715977e817f26ca07fb  gcc/testsuite/g++.dg/modules/clone-4_a.C
+ 9480c3115bf971cf18d011f9eeca032e  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
  b82e625ae44f653d9caf5a917ed2565a  gcc/testsuite/g++.dg/modules/concept-1_a.C
*************** ae9a3af4df170ef073f8bd08fed6b35c  gcc/te
*** 24856,24864 ****
  29dcd71cd48f007a0bad4adf3a97f976  gcc/testsuite/g++.dg/modules/lambda-6_a.C
  e9fdcf0fa0065362d2797bb17a15c71d  gcc/testsuite/g++.dg/modules/lambda-6_b.C
  1dd0b81eeecb45a50fb94f0940704c22  gcc/testsuite/g++.dg/modules/lambda-7.h
! 3345057ab60674f5c399532abf09150c  gcc/testsuite/g++.dg/modules/lambda-7_a.H
! 5be1ae47b01607dac87360aded4edc07  gcc/testsuite/g++.dg/modules/lambda-7_b.C
! 33861865626324fceeda2c2492590473  gcc/testsuite/g++.dg/modules/lambda-7_c.C
  339bacba8e80ec5eeefc4bb1a3dba7ba  gcc/testsuite/g++.dg/modules/lang-1_a.H
  6340d54fa6505dc3e1f348d4eb7c40ff  gcc/testsuite/g++.dg/modules/lang-1_b.C
  59ccc3469393fd4a35b408bbf78b94d9  gcc/testsuite/g++.dg/modules/lang-1_c.C
--- 24882,24890 ----
  29dcd71cd48f007a0bad4adf3a97f976  gcc/testsuite/g++.dg/modules/lambda-6_a.C
  e9fdcf0fa0065362d2797bb17a15c71d  gcc/testsuite/g++.dg/modules/lambda-6_b.C
  1dd0b81eeecb45a50fb94f0940704c22  gcc/testsuite/g++.dg/modules/lambda-7.h
! f03e4a31a4e9e2911383f4e217c26028  gcc/testsuite/g++.dg/modules/lambda-7_a.H
! 622d51f9d9e2265f4cd256855026d8da  gcc/testsuite/g++.dg/modules/lambda-7_b.C
! a3a674ca012f998a7f5ee35a0655be70  gcc/testsuite/g++.dg/modules/lambda-7_c.C
  339bacba8e80ec5eeefc4bb1a3dba7ba  gcc/testsuite/g++.dg/modules/lang-1_a.H
  6340d54fa6505dc3e1f348d4eb7c40ff  gcc/testsuite/g++.dg/modules/lang-1_b.C
  59ccc3469393fd4a35b408bbf78b94d9  gcc/testsuite/g++.dg/modules/lang-1_c.C
*************** cbeb61a079567f59bdce9faa40877398  gcc/te
*** 31500,31505 ****
--- 31526,31532 ----
  70adf2e2f20bd052cfca2787bd225b0c  gcc/testsuite/g++.dg/warn/template-2.C
  6f5999bf56f2861a257750422cda17b6  gcc/testsuite/g++.dg/warn/translate-ice-1.C
  81ccb812ec92857cf80d860b4ffa0d31  gcc/testsuite/g++.dg/warn/undefined1.C
+ ea3b303b6284894a2a7543bc63c639eb  gcc/testsuite/g++.dg/warn/undefined2.C
  338b16478b2b401f31f40a2d7b08dfb1  gcc/testsuite/g++.dg/warn/uninit-1.C
  c439e6ca6ae1ca3377fa6507bf891b6c  gcc/testsuite/g++.dg/warn/uninit-pr105562.C
  69c608be9c8c02e5a60a4342603a5fac  gcc/testsuite/g++.dg/warn/uninit-pr48483.C
*************** c9d7810fb25abff9e36f2472a26b7432  gcc/te
*** 38602,38607 ****
--- 38629,38636 ----
  c79311114bc2631215d25bfb45117788  gcc/testsuite/gcc.c-torture/execute/pr116799.c
  5ddda4b8eb54ab388a566dc4456abe06  gcc/testsuite/gcc.c-torture/execute/pr117095.c
  ff6bb4fb6706fea0c26d717754a6569c  gcc/testsuite/gcc.c-torture/execute/pr117432.c
+ 5ea8b1886f746d04f95ef6475b79bbac  gcc/testsuite/gcc.c-torture/execute/pr117498.c
+ abc98cdd2ec724c17d58a00efc56816b  gcc/testsuite/gcc.c-torture/execute/pr118623.c
  a1b7f9f7cdc342ff771a30f551e3bc3b  gcc/testsuite/gcc.c-torture/execute/pr118638.c
  5802f1a3b7f07033d3e5c9e6bc333779  gcc/testsuite/gcc.c-torture/execute/pr118915.c
  fd7185346c3b94c0a7f7afba7b6bc241  gcc/testsuite/gcc.c-torture/execute/pr119071.c
*************** fb15d13b559e6ed4b77b925f2174bd6b  gcc/te
*** 41501,41506 ****
--- 41530,41536 ----
  bd510e212640224d22dba81f49c4b9e7  gcc/testsuite/gcc.dg/c11-noreturn-3.c
  d8272e1d572d33a852614f0a74a31345  gcc/testsuite/gcc.dg/c11-noreturn-4.c
  f9262f126c900d76cdb16f0afbfc600f  gcc/testsuite/gcc.dg/c11-noreturn-5.c
+ 96df779bf45fc66fdfa10ef90501ce52  gcc/testsuite/gcc.dg/c11-null-pointer-constant-1.c
  abfbae98d3f37ff0d3a2b7bda81a856c  gcc/testsuite/gcc.dg/c11-nullptr-1.c
  26c6f6017d071e0f6332c8a8302c319e  gcc/testsuite/gcc.dg/c11-old-style-definition-1.c
  1fff561a5101a4713958b047c7f8aa8d  gcc/testsuite/gcc.dg/c11-old-style-definition-2.c
*************** ae562be53251d621831c177e0e8480cc  gcc/te
*** 41670,41675 ****
--- 41700,41706 ----
  5695ab5488ac5b615bee767303feecd8  gcc/testsuite/gcc.dg/c23-labels-3.c
  8457f3a053b24748a1159ab31bad49ae  gcc/testsuite/gcc.dg/c23-limits-1.c
  dd04bee5ff3c35fe05a9082f06488d4b  gcc/testsuite/gcc.dg/c23-no-dfp-1.c
+ 95762836148a81f6c1880fa0e0aed8e9  gcc/testsuite/gcc.dg/c23-null-pointer-constant-1.c
  a251b8fbb1a1e2de01f33345da5b30aa  gcc/testsuite/gcc.dg/c23-nullptr-1.c
  b2aa5b3a2a0f10db7caf478ebc09b44c  gcc/testsuite/gcc.dg/c23-nullptr-2.c
  36399b68ea5d874fde458587f0ba2b77  gcc/testsuite/gcc.dg/c23-nullptr-3.c
*************** f741ddb64786110b58c8991c33d44c79  gcc/te
*** 45280,45285 ****
--- 45311,45317 ----
  6cadebd8b42bda8557c5814d0103a2fa  gcc/testsuite/gcc.dg/ipa/pr112616.c
  32227973eac51db77fc53f4f18573df2  gcc/testsuite/gcc.dg/ipa/pr113490.c
  b7a69609ea582386c302afd514d8e233  gcc/testsuite/gcc.dg/ipa/pr114247.c
+ e39432b4ae7797e55b13f6d2fd29a4a6  gcc/testsuite/gcc.dg/ipa/pr119852.c
  40bd41302666d56c4edf7330db97920e  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
  6e1b4f2c5d0c0d768778da8e3b7df828  gcc/testsuite/gcc.dg/ipa/pr48195.c
*************** ef0b90ba09e6e56d1d655afdcb63cdd4  gcc/te
*** 45657,45662 ****
--- 45689,45696 ----
  c3ad752a64c11978f9f2cce0520bf58c  gcc/testsuite/gcc.dg/lto/pr109778_1.c
  416450f6c91d224b71df4377a39b3fe7  gcc/testsuite/gcc.dg/lto/pr111157_0.c
  d2a12eff624006349f40806ec941ae27  gcc/testsuite/gcc.dg/lto/pr111157_1.c
+ 359827f0dc7362f6fa180747ada4d694  gcc/testsuite/gcc.dg/lto/pr113197_0.c
+ 289508a36589fa396738b43c93b10d77  gcc/testsuite/gcc.dg/lto/pr113197_1.c
  c8f6b1129e2eea0401251eaa5bad2940  gcc/testsuite/gcc.dg/lto/pr113233_0.c
  5a30be7e5faebcb3c788634739d7942d  gcc/testsuite/gcc.dg/lto/pr113359-1_0.c
  689493d8859ebd5141c7576ea5812894  gcc/testsuite/gcc.dg/lto/pr113359-1_1.c
*************** d0b909d869e818b5b2abd0395ab17271  gcc/te
*** 85441,85446 ****
--- 85475,85481 ----
  121e06a5dd20d140f160d5c0fcb057b6  gcc/testsuite/gcc.target/riscv/rvv/base/bug-3.c
  8c5f12e7d8382592aebacb0ea5057b41  gcc/testsuite/gcc.target/riscv/rvv/base/bug-4.c
  98e95e62c4d0b0cb1ddcbce4b54a6a6e  gcc/testsuite/gcc.target/riscv/rvv/base/bug-5.c
+ 8a331ec5fc9b791606e17f26549b72f3  gcc/testsuite/gcc.target/riscv/rvv/base/bug-6.c
  bb00467bf137910c133163c0e59ee5b4  gcc/testsuite/gcc.target/riscv/rvv/base/cpymem-1.c
  d0518f38fd0f70ecee9e4e54fb74b51e  gcc/testsuite/gcc.target/riscv/rvv/base/cpymem-2.c
  1d3ea8a2d452df16e19bd8b4da8d50f8  gcc/testsuite/gcc.target/riscv/rvv/base/cpymem-strategy-1.c
*************** ac3c78981b68dd7570fbf24a454c1f49  gcc/te
*** 92899,92904 ****
--- 92934,92940 ----
  aef95d16f07bbc2f2592af837c0f0108  gcc/testsuite/gfortran.dg/actual_array_interface_2.f90
  d10dc24f807a9caca22b1c9623e9c39f  gcc/testsuite/gfortran.dg/actual_array_offset_1.f90
  9b341000c34ce58fa97f33ace5dbf227  gcc/testsuite/gfortran.dg/actual_array_result_1.f90
+ cbe33d1d01d7cc0022a9b6df9e8e910a  gcc/testsuite/gfortran.dg/actual_array_subref.f90
  81f66fad745137fdc59d9f22263c998c  gcc/testsuite/gfortran.dg/actual_array_substr_1.f90
  88b6ef62ab16543451c11af1d3b04340  gcc/testsuite/gfortran.dg/actual_array_substr_2.f90
  44b6d072205845c3f335b3d48de5e240  gcc/testsuite/gfortran.dg/actual_array_substr_3.f90
*************** c409953e60b511d0f73cda8df16bc1dc  gcc/te
*** 98579,98584 ****
--- 98615,98624 ----
  02812eb85d61bb134c890f0a34cc8511  gcc/testsuite/gfortran.dg/pr117819.f90
  d8b2b1281d8bcf0eb181e2643ffb6265  gcc/testsuite/gfortran.dg/pr117820.f90
  dcb4fe6d926f672dd118a4a8ec9b6625  gcc/testsuite/gfortran.dg/pr118640.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
*************** b53b0e038a499606b2d119c62b6fc3c8  gcc/tr
*** 110208,110215 ****
  93e3a89424169fea13caf4b3f341effe  gcc/tree-inline.h
  14fbc08d8db9b07d391efa6716aea4d8  gcc/tree-into-ssa.cc
  75ead7abe52cb77f14845ac9c55bbc29  gcc/tree-into-ssa.h
! 856ba3876d6df924db1a685d084281ff  gcc/tree-iterator.cc
! 34c67d9bc9ff4398020de83e3863c714  gcc/tree-iterator.h
  06e8f08e601771f0ed17d24d2ed46619  gcc/tree-logical-location.cc
  2e3b7c0529a53dbc24fc1e6fecf628c8  gcc/tree-logical-location.h
  f22bed82b0f681104f231aef4c6512db  gcc/tree-loop-distribution.cc
--- 110248,110255 ----
  93e3a89424169fea13caf4b3f341effe  gcc/tree-inline.h
  14fbc08d8db9b07d391efa6716aea4d8  gcc/tree-into-ssa.cc
  75ead7abe52cb77f14845ac9c55bbc29  gcc/tree-into-ssa.h
! 1927c4cb3537f3304a5435b1b667b0e3  gcc/tree-iterator.cc
! 37717c26a30c0232ff55dd6cb354524f  gcc/tree-iterator.h
  06e8f08e601771f0ed17d24d2ed46619  gcc/tree-logical-location.cc
  2e3b7c0529a53dbc24fc1e6fecf628c8  gcc/tree-logical-location.h
  f22bed82b0f681104f231aef4c6512db  gcc/tree-loop-distribution.cc
*************** ea6d5ea2f3442b7c3f3a8b3356e827ca  gcc/tr
*** 110285,110291 ****
  5fd4dbd0469a4e81b1036fc3449f791d  gcc/tree-ssa-sink.cc
  b0c107ee22f3f20de79434e3ca50cf00  gcc/tree-ssa-strlen.cc
  99d54f633ea0ea6b7eb29b8647a88ae6  gcc/tree-ssa-strlen.h
! b7d23ae6d873c552f822e9d12a3ca905  gcc/tree-ssa-structalias.cc
  1a410ed280c0cf57c44dd25b73c91998  gcc/tree-ssa-tail-merge.cc
  7d4eaa3828d8666a6bd7e6af8f65adc4  gcc/tree-ssa-ter.cc
  b10f3dee35565bc7bd7b5888c46bdecf  gcc/tree-ssa-ter.h
--- 110325,110331 ----
  5fd4dbd0469a4e81b1036fc3449f791d  gcc/tree-ssa-sink.cc
  b0c107ee22f3f20de79434e3ca50cf00  gcc/tree-ssa-strlen.cc
  99d54f633ea0ea6b7eb29b8647a88ae6  gcc/tree-ssa-strlen.h
! e4c6854d84c9ed934e02630e024595c1  gcc/tree-ssa-structalias.cc
  1a410ed280c0cf57c44dd25b73c91998  gcc/tree-ssa-tail-merge.cc
  7d4eaa3828d8666a6bd7e6af8f65adc4  gcc/tree-ssa-ter.cc
  b10f3dee35565bc7bd7b5888c46bdecf  gcc/tree-ssa-ter.h
*************** f6c4d44f37206d08e1fbe17c599cb846  libgcc
*** 112752,112758 ****
  a772bb5e7a5802d9a8a1b189bd759625  libgcc/vtv_end_preinit.c
  6693cc083342d326d63d41f6530df254  libgcc/vtv_start.c
  34a208666457ea33f55c795c9cffe121  libgcc/vtv_start_preinit.c
! 4a37ee0fbc141dea0c3386b01c767cc6  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
--- 112792,112798 ----
  a772bb5e7a5802d9a8a1b189bd759625  libgcc/vtv_end_preinit.c
  6693cc083342d326d63d41f6530df254  libgcc/vtv_start.c
  34a208666457ea33f55c795c9cffe121  libgcc/vtv_start_preinit.c
! a163584f04d9de2a0902c055c2ff7f55  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
*************** f9411ccc9006b92a9da8fb9543d87bff  libgfo
*** 113085,113092 ****
  26fd560e6c7de1b0aec2b52bb1d42e70  libgfortran/generated/findloc1_r8.c
  e4a6840d29c622eccb399f5c81f4a9fb  libgfortran/generated/findloc1_s1.c
  bb51e94ffbc09461a0eb39cf16fc6f0f  libgfortran/generated/findloc1_s4.c
! 2942f76485cc39af747ce6084304c987  libgfortran/generated/findloc2_s1.c
! a1c01c9192d7994dd6c2f4f2824a8366  libgfortran/generated/findloc2_s4.c
  688f0c37c26e2d950561ade4f535d193  libgfortran/generated/iall_i1.c
  e061607295b9d0befe789dc2efe9a9b3  libgfortran/generated/iall_i16.c
  636272c7b14ba0ccf7d61ba0fc5cf8d6  libgfortran/generated/iall_i2.c
--- 113125,113132 ----
  26fd560e6c7de1b0aec2b52bb1d42e70  libgfortran/generated/findloc1_r8.c
  e4a6840d29c622eccb399f5c81f4a9fb  libgfortran/generated/findloc1_s1.c
  bb51e94ffbc09461a0eb39cf16fc6f0f  libgfortran/generated/findloc1_s4.c
! 2259f052dff711faed9ecba3f762178b  libgfortran/generated/findloc2_s1.c
! 6f6cd260ff85503faded160b39143553  libgfortran/generated/findloc2_s4.c
  688f0c37c26e2d950561ade4f535d193  libgfortran/generated/iall_i1.c
  e061607295b9d0befe789dc2efe9a9b3  libgfortran/generated/iall_i16.c
  636272c7b14ba0ccf7d61ba0fc5cf8d6  libgfortran/generated/iall_i2.c
*************** b89cc040fb7d7dda1fa52f678b27db18  libgfo
*** 113211,113218 ****
  1fcb966005454ae756d1416e75c5ab97  libgfortran/generated/maxloc1_16_r17.c
  55fe4360653c229542c2ebdbcc04e75a  libgfortran/generated/maxloc1_16_r4.c
  cd4e6906724cec214a9088c0b1a7b6c0  libgfortran/generated/maxloc1_16_r8.c
! fb4dabcbde30400b05fea25ef9bf5df5  libgfortran/generated/maxloc1_16_s1.c
! b4b7a5d02f9a3a3ff598861e32dc3cb8  libgfortran/generated/maxloc1_16_s4.c
  ac9bded109c805f180ab795ed34182fd  libgfortran/generated/maxloc1_4_i1.c
  31c7f79ebc0c2de664d101f7f0ea12e3  libgfortran/generated/maxloc1_4_i16.c
  27ce0fa65fdf33eea73b172ef28307df  libgfortran/generated/maxloc1_4_i2.c
--- 113251,113258 ----
  1fcb966005454ae756d1416e75c5ab97  libgfortran/generated/maxloc1_16_r17.c
  55fe4360653c229542c2ebdbcc04e75a  libgfortran/generated/maxloc1_16_r4.c
  cd4e6906724cec214a9088c0b1a7b6c0  libgfortran/generated/maxloc1_16_r8.c
! fdd0832409c8efae7e80f08d900c89b4  libgfortran/generated/maxloc1_16_s1.c
! 50fecd1d2bebeec37010853eabc0fbd2  libgfortran/generated/maxloc1_16_s4.c
  ac9bded109c805f180ab795ed34182fd  libgfortran/generated/maxloc1_4_i1.c
  31c7f79ebc0c2de664d101f7f0ea12e3  libgfortran/generated/maxloc1_4_i16.c
  27ce0fa65fdf33eea73b172ef28307df  libgfortran/generated/maxloc1_4_i2.c
*************** f5a666db284650eca849bf6443b98008  libgfo
*** 113223,113230 ****
  5c7c06b0d203e9f1a5373aa5da9afc44  libgfortran/generated/maxloc1_4_r17.c
  5d43efe60f963098bb7e8183bc6297cf  libgfortran/generated/maxloc1_4_r4.c
  211cb8871e93621b04ce2db2ed1815a0  libgfortran/generated/maxloc1_4_r8.c
! a24c93ba99db6a8c0311a7882c024be0  libgfortran/generated/maxloc1_4_s1.c
! b22990df135b9731c617957d05b5d445  libgfortran/generated/maxloc1_4_s4.c
  949612df9d869b75d6653c44cd857131  libgfortran/generated/maxloc1_8_i1.c
  8233d7ead8f19aac1627b1b261dcf1e4  libgfortran/generated/maxloc1_8_i16.c
  5017a3b29fd6c205c0b7774db652b8ee  libgfortran/generated/maxloc1_8_i2.c
--- 113263,113270 ----
  5c7c06b0d203e9f1a5373aa5da9afc44  libgfortran/generated/maxloc1_4_r17.c
  5d43efe60f963098bb7e8183bc6297cf  libgfortran/generated/maxloc1_4_r4.c
  211cb8871e93621b04ce2db2ed1815a0  libgfortran/generated/maxloc1_4_r8.c
! 1f4cdd64960f36a2082a6ba77808ae98  libgfortran/generated/maxloc1_4_s1.c
! 737f4fe4e6ac760ec2f83c2cdd8ee408  libgfortran/generated/maxloc1_4_s4.c
  949612df9d869b75d6653c44cd857131  libgfortran/generated/maxloc1_8_i1.c
  8233d7ead8f19aac1627b1b261dcf1e4  libgfortran/generated/maxloc1_8_i16.c
  5017a3b29fd6c205c0b7774db652b8ee  libgfortran/generated/maxloc1_8_i2.c
*************** e8cea44b2a02edca779b5cd90ee9218c  libgfo
*** 113235,113248 ****
  045ff8c57a8ffaf3dd257dbaff135c08  libgfortran/generated/maxloc1_8_r17.c
  1f0c321a859c98b36d3e06257d9fbf21  libgfortran/generated/maxloc1_8_r4.c
  968a7759508754e1129c75de3e03dc2d  libgfortran/generated/maxloc1_8_r8.c
! 010d7b87dc174f2b28981cb2d48db32e  libgfortran/generated/maxloc1_8_s1.c
! 29c42fcbd72d37762b5e8bf6f7d70877  libgfortran/generated/maxloc1_8_s4.c
! b60d2a7492ca85aac55061ad1f93889a  libgfortran/generated/maxloc2_16_s1.c
! 52c52996500bbb8796dbb98870d327ea  libgfortran/generated/maxloc2_16_s4.c
! d53b7682d95e68a2d701706d5e8d4816  libgfortran/generated/maxloc2_4_s1.c
! 286c256c3459efc546789e81e66f01ca  libgfortran/generated/maxloc2_4_s4.c
! 7714e423db88b250fd3a0e487e4dbdf3  libgfortran/generated/maxloc2_8_s1.c
! b6be9c5166c23884f06098df629e086c  libgfortran/generated/maxloc2_8_s4.c
  c037f06d5c12d0c777b8a54b162e2590  libgfortran/generated/maxval0_s1.c
  964f58525bf7e4ae3f056bd1f60e4e0f  libgfortran/generated/maxval0_s4.c
  aefd5aca5907f28b47a4b948143c151c  libgfortran/generated/maxval1_s1.c
--- 113275,113288 ----
  045ff8c57a8ffaf3dd257dbaff135c08  libgfortran/generated/maxloc1_8_r17.c
  1f0c321a859c98b36d3e06257d9fbf21  libgfortran/generated/maxloc1_8_r4.c
  968a7759508754e1129c75de3e03dc2d  libgfortran/generated/maxloc1_8_r8.c
! 7a1d799e5b288506f435ef8a26ea7d2f  libgfortran/generated/maxloc1_8_s1.c
! eef4805305d39b58cedeb129c1364fa7  libgfortran/generated/maxloc1_8_s4.c
! 98ed6446899b9a0ce366086db09c2453  libgfortran/generated/maxloc2_16_s1.c
! bed08d1e10e1d64fb8b47759348a8e9c  libgfortran/generated/maxloc2_16_s4.c
! 0fe568d66df7b38a1e326e5b562130f3  libgfortran/generated/maxloc2_4_s1.c
! 9ef32c0f542e207f5c4477cc97723d0c  libgfortran/generated/maxloc2_4_s4.c
! 19a4576ddd822b6d8503eebd551d5186  libgfortran/generated/maxloc2_8_s1.c
! c43ed1bb37dca550f03e1b14ab05d00a  libgfortran/generated/maxloc2_8_s4.c
  c037f06d5c12d0c777b8a54b162e2590  libgfortran/generated/maxval0_s1.c
  964f58525bf7e4ae3f056bd1f60e4e0f  libgfortran/generated/maxval0_s4.c
  aefd5aca5907f28b47a4b948143c151c  libgfortran/generated/maxval1_s1.c
*************** c08422a1c64a6c2e11200127f89da74a  libgfo
*** 113303,113310 ****
  a56ee34e921a131d3a396d494ac3e32d  libgfortran/generated/minloc1_16_r17.c
  d55bd8f1a8754bf8b676b993af46f8c3  libgfortran/generated/minloc1_16_r4.c
  bd28c02381dc125b1e2c9d4ae9f4aed9  libgfortran/generated/minloc1_16_r8.c
! 1432283e46f61c40d86737be61b98b8a  libgfortran/generated/minloc1_16_s1.c
! 0a26c52c0106d35cb3c750b7eeb65825  libgfortran/generated/minloc1_16_s4.c
  415c74d07a5048c5f20ecb72e8f65f30  libgfortran/generated/minloc1_4_i1.c
  047d992ff3d74ebf0306825a63ab1fbd  libgfortran/generated/minloc1_4_i16.c
  a117bd16618c9710f3911681f32fd4f2  libgfortran/generated/minloc1_4_i2.c
--- 113343,113350 ----
  a56ee34e921a131d3a396d494ac3e32d  libgfortran/generated/minloc1_16_r17.c
  d55bd8f1a8754bf8b676b993af46f8c3  libgfortran/generated/minloc1_16_r4.c
  bd28c02381dc125b1e2c9d4ae9f4aed9  libgfortran/generated/minloc1_16_r8.c
! 02f483e990942206673f58fe8a7de728  libgfortran/generated/minloc1_16_s1.c
! 3f2ec97dc4377dd17ee0cf23d6d3db91  libgfortran/generated/minloc1_16_s4.c
  415c74d07a5048c5f20ecb72e8f65f30  libgfortran/generated/minloc1_4_i1.c
  047d992ff3d74ebf0306825a63ab1fbd  libgfortran/generated/minloc1_4_i16.c
  a117bd16618c9710f3911681f32fd4f2  libgfortran/generated/minloc1_4_i2.c
*************** a117bd16618c9710f3911681f32fd4f2  libgfo
*** 113315,113322 ****
  0f243c52adc93aaa997ffb27099106d2  libgfortran/generated/minloc1_4_r17.c
  ce3d1d3ea8171a911507a0ad76369e48  libgfortran/generated/minloc1_4_r4.c
  af898f81e4278b547b526193f873796e  libgfortran/generated/minloc1_4_r8.c
! 3ff8ce54d4acf75e03b4d60b0e920f03  libgfortran/generated/minloc1_4_s1.c
! 90eac85ef4a48572ee4e6cf9cf921c18  libgfortran/generated/minloc1_4_s4.c
  2c2b42477a4a98c921bd4905ce4ccc01  libgfortran/generated/minloc1_8_i1.c
  4464162f30efd58003a056cf7ad50d06  libgfortran/generated/minloc1_8_i16.c
  ddd136269919f969b5e627866af624b2  libgfortran/generated/minloc1_8_i2.c
--- 113355,113362 ----
  0f243c52adc93aaa997ffb27099106d2  libgfortran/generated/minloc1_4_r17.c
  ce3d1d3ea8171a911507a0ad76369e48  libgfortran/generated/minloc1_4_r4.c
  af898f81e4278b547b526193f873796e  libgfortran/generated/minloc1_4_r8.c
! f2be074416f029dfabf438641ddc3bcf  libgfortran/generated/minloc1_4_s1.c
! 9bb63981f25bf2f6d8c391ca972c0756  libgfortran/generated/minloc1_4_s4.c
  2c2b42477a4a98c921bd4905ce4ccc01  libgfortran/generated/minloc1_8_i1.c
  4464162f30efd58003a056cf7ad50d06  libgfortran/generated/minloc1_8_i16.c
  ddd136269919f969b5e627866af624b2  libgfortran/generated/minloc1_8_i2.c
*************** a9c5d0caadad81b121233e1c32582273  libgfo
*** 113327,113340 ****
  c360240d0756b20a54b6243ed5bafcb9  libgfortran/generated/minloc1_8_r17.c
  e92a5c56e2631d88007cc005fbae3fdd  libgfortran/generated/minloc1_8_r4.c
  21e898ce23b72a4062f2da81d8bdcf5c  libgfortran/generated/minloc1_8_r8.c
! 634b628733336dd061fae2a3f9588930  libgfortran/generated/minloc1_8_s1.c
! 79c39e06e385fc24ad49bf92d0d5442a  libgfortran/generated/minloc1_8_s4.c
! da343ac962d2847454f0f197bf80f9f2  libgfortran/generated/minloc2_16_s1.c
! a289dfebd47d7832c188d80f191087a1  libgfortran/generated/minloc2_16_s4.c
! a861ad510654eb1b21f3d11b5bf32ba6  libgfortran/generated/minloc2_4_s1.c
! d94cd0afa8bfc363f2430059e13e2c32  libgfortran/generated/minloc2_4_s4.c
! b3bee617b296038fea658bf01c455117  libgfortran/generated/minloc2_8_s1.c
! 5c014078c93c6af2d6f42aad983c7f3b  libgfortran/generated/minloc2_8_s4.c
  f6a517a45bd243571b3cfc9357b31f35  libgfortran/generated/minval0_s1.c
  b92f83fe69aa63ae5d0d785b591826cc  libgfortran/generated/minval0_s4.c
  7062ae684759056ae786ef7b49118056  libgfortran/generated/minval1_s1.c
--- 113367,113380 ----
  c360240d0756b20a54b6243ed5bafcb9  libgfortran/generated/minloc1_8_r17.c
  e92a5c56e2631d88007cc005fbae3fdd  libgfortran/generated/minloc1_8_r4.c
  21e898ce23b72a4062f2da81d8bdcf5c  libgfortran/generated/minloc1_8_r8.c
! 77961061fc247a535a9d9f53acb35c5d  libgfortran/generated/minloc1_8_s1.c
! 30387509f1986dbde34d2740f4ee2b80  libgfortran/generated/minloc1_8_s4.c
! e3edefea0b6f9616aa521c9e2aab40dd  libgfortran/generated/minloc2_16_s1.c
! 14f5d03d6fd67ca82c85ca253e035f7c  libgfortran/generated/minloc2_16_s4.c
! 6865019ba454c9a28fe339ef1b4f701e  libgfortran/generated/minloc2_4_s1.c
! 7a48feadbc2458bbeb51615836783b65  libgfortran/generated/minloc2_4_s4.c
! 4a1f0df097a0cb8b447bb4d50ff3da02  libgfortran/generated/minloc2_8_s1.c
! 69f23c164cc92f9cc3be924a5c072419  libgfortran/generated/minloc2_8_s4.c
  f6a517a45bd243571b3cfc9357b31f35  libgfortran/generated/minval0_s1.c
  b92f83fe69aa63ae5d0d785b591826cc  libgfortran/generated/minval0_s4.c
  7062ae684759056ae786ef7b49118056  libgfortran/generated/minval1_s1.c
*************** be432b0e528c65667e6d736e1537515d  libgfo
*** 113606,113617 ****
  abb53196394ee3a9c411949ae9458436  libgfortran/m4/iany.m4
  afeeaf8dc7f1645eef2978dc1bc558bc  libgfortran/m4/ifindloc0.m4
  a9c83a955705ca623049c26bb9a16165  libgfortran/m4/ifindloc1.m4
! 68d4e0f33849e74bb43c55c169324afc  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
  16a0e345a100895cf0ec39166e09e5e8  libgfortran/m4/ifunction.m4
  10f323195ca3a220ce7b74b132d15fd7  libgfortran/m4/ifunction_logical.m4
--- 113646,113657 ----
  abb53196394ee3a9c411949ae9458436  libgfortran/m4/iany.m4
  afeeaf8dc7f1645eef2978dc1bc558bc  libgfortran/m4/ifindloc0.m4
  a9c83a955705ca623049c26bb9a16165  libgfortran/m4/ifindloc1.m4
! 29610fbe95b5b791483650a253497653  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
  16a0e345a100895cf0ec39166e09e5e8  libgfortran/m4/ifunction.m4
  10f323195ca3a220ce7b74b132d15fd7  libgfortran/m4/ifunction_logical.m4
*************** cc5dab19abf6522bc987ccb9c922dca3  libgfo
*** 113627,113633 ****
  3b456f29a7cdb2270325dc91d5471787  libgfortran/m4/maxloc0s.m4
  5fb7122eea65fac7d173491f6416e427  libgfortran/m4/maxloc1.m4
  e988be09163f694b763fae1ffeaa7f28  libgfortran/m4/maxloc1s.m4
! cceba3884095d0eaaa8eb349b2035ebe  libgfortran/m4/maxloc2s.m4
  205d49f646f31d2d169bf466178906f0  libgfortran/m4/maxval.m4
  f1a2b8c8046423c58d9fb99bc29698af  libgfortran/m4/maxval0s.m4
  e1fb783a9780e4cb4468a147fdf3ece8  libgfortran/m4/maxval1s.m4
--- 113667,113673 ----
  3b456f29a7cdb2270325dc91d5471787  libgfortran/m4/maxloc0s.m4
  5fb7122eea65fac7d173491f6416e427  libgfortran/m4/maxloc1.m4
  e988be09163f694b763fae1ffeaa7f28  libgfortran/m4/maxloc1s.m4
! 447de98c7d42a29b7c658780740e56e4  libgfortran/m4/maxloc2s.m4
  205d49f646f31d2d169bf466178906f0  libgfortran/m4/maxval.m4
  f1a2b8c8046423c58d9fb99bc29698af  libgfortran/m4/maxval0s.m4
  e1fb783a9780e4cb4468a147fdf3ece8  libgfortran/m4/maxval1s.m4
*************** ae6c27a5efec6b813c20a7338c924e38  libgfo
*** 113635,113641 ****
  e0db65efd5541ed284ee8e8188b5b7e8  libgfortran/m4/minloc0s.m4
  23d6d83d27dbe42746bbc15be1ec83da  libgfortran/m4/minloc1.m4
  3409abe100b23ae7aa92e9ecbb55a562  libgfortran/m4/minloc1s.m4
! f64eef67f146508f5f4d0146356085c5  libgfortran/m4/minloc2s.m4
  cb74f79a85702612521129f3f044b297  libgfortran/m4/minval.m4
  05b15f04af35b06c69b77566da81a5ac  libgfortran/m4/minval0s.m4
  70e6fdadb9807835b5e9e65f579543a7  libgfortran/m4/minval1s.m4
--- 113675,113681 ----
  e0db65efd5541ed284ee8e8188b5b7e8  libgfortran/m4/minloc0s.m4
  23d6d83d27dbe42746bbc15be1ec83da  libgfortran/m4/minloc1.m4
  3409abe100b23ae7aa92e9ecbb55a562  libgfortran/m4/minloc1s.m4
! 8fda3d6e46e4daf06b8d487f21fab9a9  libgfortran/m4/minloc2s.m4
  cb74f79a85702612521129f3f044b297  libgfortran/m4/minval.m4
  05b15f04af35b06c69b77566da81a5ac  libgfortran/m4/minval0s.m4
  70e6fdadb9807835b5e9e65f579543a7  libgfortran/m4/minval1s.m4
*************** dcdcea9380167bc0fc31fbcc9ae7cd70  libgo/
*** 115476,115489 ****
  1e4c9666f505813e54ed2b3d4056d2f8  libgo/go/crypto/tls/example_test.go
  6c121e7342c13fdc786312f66d8dbb99  libgo/go/crypto/tls/generate_cert.go
  92c22ddf04bfc1134e9ce858e4fe63d1  libgo/go/crypto/tls/handshake_client.go
! b1c3932241580b99b951fae0edb61fd8  libgo/go/crypto/tls/handshake_client_test.go
  0427ef397843c02f3be96cfacd0f14a3  libgo/go/crypto/tls/handshake_client_tls13.go
  46b69f2680156d5e71cb8c6ae2343e94  libgo/go/crypto/tls/handshake_messages.go
  0945ccb0c15b2deb95d8ca2b33b0ea54  libgo/go/crypto/tls/handshake_messages_test.go
  5acf20b462aafc7a101527ee55f5c865  libgo/go/crypto/tls/handshake_server.go
! 2b8b5b21bf0ce23f0cc1267b74babf93  libgo/go/crypto/tls/handshake_server_test.go
  4de3e07cdf2105cfcbfc08e792804987  libgo/go/crypto/tls/handshake_server_tls13.go
! b064ac2d0b92b42852f6ecd68366b46d  libgo/go/crypto/tls/handshake_test.go
  9a32a638fe102dd2d9c10bdc7fea9e5e  libgo/go/crypto/tls/handshake_unix_test.go
  a7f68e8d2ee39cb8a707a0e0eba8ca47  libgo/go/crypto/tls/key_agreement.go
  aa7a95034a03be2806fa57040be5dc21  libgo/go/crypto/tls/key_schedule.go
--- 115516,115529 ----
  1e4c9666f505813e54ed2b3d4056d2f8  libgo/go/crypto/tls/example_test.go
  6c121e7342c13fdc786312f66d8dbb99  libgo/go/crypto/tls/generate_cert.go
  92c22ddf04bfc1134e9ce858e4fe63d1  libgo/go/crypto/tls/handshake_client.go
! f76251738608d414afc6c3f485ba35a8  libgo/go/crypto/tls/handshake_client_test.go
  0427ef397843c02f3be96cfacd0f14a3  libgo/go/crypto/tls/handshake_client_tls13.go
  46b69f2680156d5e71cb8c6ae2343e94  libgo/go/crypto/tls/handshake_messages.go
  0945ccb0c15b2deb95d8ca2b33b0ea54  libgo/go/crypto/tls/handshake_messages_test.go
  5acf20b462aafc7a101527ee55f5c865  libgo/go/crypto/tls/handshake_server.go
! 20c613e2c2699d3c223d49f0ca1b8984  libgo/go/crypto/tls/handshake_server_test.go
  4de3e07cdf2105cfcbfc08e792804987  libgo/go/crypto/tls/handshake_server_tls13.go
! 6a407d52ecada2de1da0168e7271f0c0  libgo/go/crypto/tls/handshake_test.go
  9a32a638fe102dd2d9c10bdc7fea9e5e  libgo/go/crypto/tls/handshake_unix_test.go
  a7f68e8d2ee39cb8a707a0e0eba8ca47  libgo/go/crypto/tls/key_agreement.go
  aa7a95034a03be2806fa57040be5dc21  libgo/go/crypto/tls/key_schedule.go
*************** d6a3256a046d57feca0ff021235c9ede  libgo/
*** 115614,115620 ****
  e2ec9bd8f6f42c104c048bb324bf00d7  libgo/go/crypto/tls/testdata/example-key.pem
  e0281d4b0d8067540dc185550b995938  libgo/go/crypto/tls/ticket.go
  fb39d36797992586f3178188718b0c36  libgo/go/crypto/tls/tls.go
! 7f2c0871f5c00a0aeaa3fad129d50796  libgo/go/crypto/tls/tls_test.go
  fee50745a618969de6971115cea99c5b  libgo/go/crypto/x509/cert_pool.go
  6ba0dbba8fd8e3ffecd7972e85cfdc83  libgo/go/crypto/x509/hybrid_pool_test.go
  7fc12e96e70223731b3f6723c759bcee  libgo/go/crypto/x509/name_constraints_test.go
--- 115654,115660 ----
  e2ec9bd8f6f42c104c048bb324bf00d7  libgo/go/crypto/tls/testdata/example-key.pem
  e0281d4b0d8067540dc185550b995938  libgo/go/crypto/tls/ticket.go
  fb39d36797992586f3178188718b0c36  libgo/go/crypto/tls/tls.go
! bdd3816b98bd07ab38ad8cfdfc5ac82b  libgo/go/crypto/tls/tls_test.go
  fee50745a618969de6971115cea99c5b  libgo/go/crypto/x509/cert_pool.go
  6ba0dbba8fd8e3ffecd7972e85cfdc83  libgo/go/crypto/x509/hybrid_pool_test.go
  7fc12e96e70223731b3f6723c759bcee  libgo/go/crypto/x509/name_constraints_test.go
*************** d828e38384c506bf5e7d5a3c02725a37  libssp
*** 123562,123568 ****
  7bb3c32ba0a48d1cf785305e1b783eb6  libssp/strncpy-chk.c
  a19c79c1d86436e86b0fee41e6cf6b15  libssp/vsnprintf-chk.c
  145156e880b03115b393070d0ed37be3  libssp/vsprintf-chk.c
! f10c9a63cdc70f56f6f16a0c40804d1d  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 123602,123608 ----
  7bb3c32ba0a48d1cf785305e1b783eb6  libssp/strncpy-chk.c
  a19c79c1d86436e86b0fee41e6cf6b15  libssp/vsnprintf-chk.c
  145156e880b03115b393070d0ed37be3  libssp/vsprintf-chk.c
! 3e316eb0418e7252f0643614d916b8d3  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** d55e182adbf08772ec85b18d390b0dbb  libstd
*** 123966,123972 ****
  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
! d669a5dddae5af7b4f2efa65ff43f738  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  ae6c18dfed9687f9a8c9d622435fda72  libstdc++-v3/doc/html/manual/strings.html
--- 124006,124012 ----
  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
! e929157449f6375ef20f4b9e215739cd  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  ae6c18dfed9687f9a8c9d622435fda72  libstdc++-v3/doc/html/manual/strings.html
*************** f5e5c164b379543f33fa58c890568600  libstd
*** 124213,124219 ****
  76fe5dbda49c296862d18751dba25d48  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
  356386c3ca52162ea521f80496d0163d  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  61a0688e4d261cfe30d6f43067137d49  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
! 3e8ec618f250016b2f9d6aac6adf82a9  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  34d70ea8878798badc9d17080f247e71  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  57cffe9962527982e60fd711a05c949d  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
--- 124253,124259 ----
  76fe5dbda49c296862d18751dba25d48  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
  356386c3ca52162ea521f80496d0163d  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
  61a0688e4d261cfe30d6f43067137d49  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
! ed98cae6a6568a0cd046979948e057ba  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  34d70ea8878798badc9d17080f247e71  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  57cffe9962527982e60fd711a05c949d  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
*************** b051e1657f96388a3e7d5d0d670145e5  libstd
*** 124391,124398 ****
  d2c6eb67d615d7d096f492b22eea4b6f  libstdc++-v3/include/bits/valarray_array.tcc
  296f16b1a6f6cf57ecd784ec331fc19e  libstdc++-v3/include/bits/valarray_before.h
  7bbbc93ff2717eacbdebe7603b9cd709  libstdc++-v3/include/bits/vector.tcc
! f9f1c9ee9addbd0086793181a18eb8e8  libstdc++-v3/include/bits/version.def
! 88842e6ffe62ddb64e735c2a9d3d3ece  libstdc++-v3/include/bits/version.h
  f6488e249fd41122a0aa656a7b88f669  libstdc++-v3/include/bits/version.tpl
  23670bf0ed7006b56169654e79313316  libstdc++-v3/include/c/cassert
  54f4af5417eacea0760d6a9554d593bc  libstdc++-v3/include/c/cctype
--- 124431,124438 ----
  d2c6eb67d615d7d096f492b22eea4b6f  libstdc++-v3/include/bits/valarray_array.tcc
  296f16b1a6f6cf57ecd784ec331fc19e  libstdc++-v3/include/bits/valarray_before.h
  7bbbc93ff2717eacbdebe7603b9cd709  libstdc++-v3/include/bits/vector.tcc
! 432f9805e57f028de277d620c0bd955c  libstdc++-v3/include/bits/version.def
! 79dffe9ba62dab2f07ab10564feb1c43  libstdc++-v3/include/bits/version.h
  f6488e249fd41122a0aa656a7b88f669  libstdc++-v3/include/bits/version.tpl
  23670bf0ed7006b56169654e79313316  libstdc++-v3/include/c/cassert
  54f4af5417eacea0760d6a9554d593bc  libstdc++-v3/include/c/cctype
*************** d2516f1592a95141d667a726c219a5b8  libstd
*** 124972,124978 ****
  2d8375c801ecdd87116fe153d972e927  libstdc++-v3/include/std/map
  7d840f2456c0d2a16866065760922b47  libstdc++-v3/include/std/memory
  b95756c8b75f0ba0696fe0d53e25c2c8  libstdc++-v3/include/std/memory_resource
! 41cd6b791822b87ce3f2e3e2bc0d425d  libstdc++-v3/include/std/mutex
  b162db38fed9250df89cd38bf8a9f2a9  libstdc++-v3/include/std/numbers
  bdc0f4ffef7dc0e791075f89161516f2  libstdc++-v3/include/std/numeric
  d7b2e090e45e539512d63eec607efb27  libstdc++-v3/include/std/optional
--- 125012,125018 ----
  2d8375c801ecdd87116fe153d972e927  libstdc++-v3/include/std/map
  7d840f2456c0d2a16866065760922b47  libstdc++-v3/include/std/memory
  b95756c8b75f0ba0696fe0d53e25c2c8  libstdc++-v3/include/std/memory_resource
! b00cd66a2e29d16a92d1bba2dd0ac61a  libstdc++-v3/include/std/mutex
  b162db38fed9250df89cd38bf8a9f2a9  libstdc++-v3/include/std/numbers
  bdc0f4ffef7dc0e791075f89161516f2  libstdc++-v3/include/std/numeric
  d7b2e090e45e539512d63eec607efb27  libstdc++-v3/include/std/optional
*************** b9e8970e7d57e4de969143926bc08cbd  libstd
*** 132877,132883 ****
  23e1fb2b4450d6c2fa8b07c29fdfc7fa  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
  6d91a3500350913fb0ad2c995ac5c8b5  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/nodiscard.cc
  348d44238d6d182ae0833dab91bd7f5a  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! 6969786caeadffcbffb81e51f43699cd  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
  ed9bdd9b73d78e1002dffec5e3823b86  libstdc++-v3/testsuite/30_threads/semaphore/1.cc
  e7a6c2bc00e156939f96d542373fea2d  libstdc++-v3/testsuite/30_threads/semaphore/100806.cc
  7e0d9d03a7b2b56e626e592af5a44b25  libstdc++-v3/testsuite/30_threads/semaphore/2.cc
--- 132917,132923 ----
  23e1fb2b4450d6c2fa8b07c29fdfc7fa  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
  6d91a3500350913fb0ad2c995ac5c8b5  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/nodiscard.cc
  348d44238d6d182ae0833dab91bd7f5a  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! 654b1de57968b912e355f1b82bf28930  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
  ed9bdd9b73d78e1002dffec5e3823b86  libstdc++-v3/testsuite/30_threads/semaphore/1.cc
  e7a6c2bc00e156939f96d542373fea2d  libstdc++-v3/testsuite/30_threads/semaphore/100806.cc
  7e0d9d03a7b2b56e626e592af5a44b25  libstdc++-v3/testsuite/30_threads/semaphore/2.cc
diff -Nrcpad gcc-14-20250509/gcc/ChangeLog gcc-14-20250516/gcc/ChangeLog
*** gcc-14-20250509/gcc/ChangeLog	Fri May  9 22:32:10 2025
--- gcc-14-20250516/gcc/ChangeLog	Fri May 16 22:32:08 2025
***************
*** 1,3 ****
--- 1,105 ----
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/118623
+ 	* config/i386/i386.md (*bt<mode>): Represent bt as
+ 	compare:CCC of const0_rtx and zero_extract rather than
+ 	zero_extract and const0_rtx.
+ 	(*bt<SWI48:mode>_mask): Likewise.
+ 	(*jcc_bt<mode>): Likewise.  Use LTU and GEU as flags test
+ 	instead of EQ and NE.
+ 	(*jcc_bt<mode>_mask): Likewise.
+ 	(*jcc_bt<SWI48:mode>_mask_1): Likewise.
+ 	(Help combine recognize bt followed by cmov splitter): Likewise.
+ 	(*bt<mode>_setcqi): Likewise.
+ 	(*bt<mode>_setncqi): Likewise.
+ 	(*bt<mode>_setnc<mode>): Likewise.
+ 	(*bt<mode>_setncqi_2): Likewise.
+ 	(*bt<mode>_setc<mode>_mask): Likewise.
+ 
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/118822
+ 	* tree-iterator.h (tsi_split_stmt_list): Declare.
+ 	* tree-iterator.cc (tsi_split_stmt_list): New function.
+ 
+ 2025-05-14  Kyle Huey  <me@kylehuey.com>
+ 
+ 	Backported from master:
+ 	2025-05-14  Kyle Huey  <me@kylehuey.com>
+ 
+ 	* dwarf2out.cc (resolve_addr_in_expr): Propagate dtprel into the address
+ 	table when appropriate.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/116960
+ 	PR c++/119303
+ 	* diagnostic.cc (diagnostic_context::report_diagnostic): Check for
+ 	non-zero m_lock later, after checking diagnostic_enabled.
+ 
+ 2025-05-12  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-01-12  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR middle-end/118411
+ 	* final.cc (get_attr_length_1): Handle asm for CALL_INSN
+ 	and JUMP_INSNs.
+ 
+ 2025-05-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2025-05-06  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/119852
+ 	* cgraphclones.cc (dump_callgraph_transformation): Document the
+ 	function.  Do not dump if suffix is NULL.
+ 
+ 2025-05-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2025-05-06  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* doc/invoke.texi (Developer Options): Document -fdump-ipa-clones.
+ 
+ 2025-05-11  Pan Li  <pan2.li@intel.com>
+ 
+ 	Backported from master:
+ 	2024-05-20  Pan Li  <pan2.li@intel.com>
+ 
+ 	* dse.cc (get_stored_val): Make sure read_mode/write_mode
+ 	is valid subreg before gen_lowpart.
+ 
+ 2025-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2024-10-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/113197
+ 	* tree-ssa-structalias.cc (handle_call_arg): Remove bougs
+ 	assert.
+ 
+ 2025-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* vr-values.cc (simplify_using_ranges::simplify) <BIT_AND_EXPR>:
+ 	Do not call simplify_bit_ops_using_ranges for boolean types whose
+ 	precision is not 1.
+ 
+ 2025-05-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2024-05-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120156
+ 	* tree-ssa-alias.cc (ptr_deref_may_alias_decl_p): Verify
+ 	the pointer is an SSA name.
+ 
  2025-05-08  Richard Sandiford  <richard.sandiford@arm.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20250509/gcc/DATESTAMP gcc-14-20250516/gcc/DATESTAMP
*** gcc-14-20250509/gcc/DATESTAMP	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/DATESTAMP	Fri May 16 22:32:08 2025
***************
*** 1 ****
! 20250509
--- 1 ----
! 20250516
diff -Nrcpad gcc-14-20250509/gcc/c/ChangeLog gcc-14-20250516/gcc/c/ChangeLog
*** gcc-14-20250509/gcc/c/ChangeLog	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/c/ChangeLog	Fri May 16 22:32:09 2025
***************
*** 1,3 ****
--- 1,23 ----
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86769
+ 	* c-parser.cc (c_parser_while_statement): Add 2 further NULL_TREE
+ 	operands to build_stmt.
+ 	(c_parser_for_statement): Likewise.
+ 
+ 2025-05-14  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	Backported from master:
+ 	2024-11-18  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	PR c/112556
+ 	* c-typeck.cc (convert_for_assignment): Allow conversion of
+ 	ENUMERAL_TYPE and BOOLEAN_TYPE null pointer constants to pointers.
+ 
  2025-04-19  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20250509/gcc/c/c-parser.cc gcc-14-20250516/gcc/c/c-parser.cc
*** gcc-14-20250509/gcc/c/c-parser.cc	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/c/c-parser.cc	Fri May 16 22:32:09 2025
*************** c_parser_while_statement (c_parser *pars
*** 8149,8155 ****
    location_t loc_after_labels;
    bool open_brace = c_parser_next_token_is (parser, CPP_OPEN_BRACE);
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
!   add_stmt (build_stmt (loc, WHILE_STMT, cond, body));
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
    c_parser_maybe_reclassify_token (parser);
  
--- 8149,8156 ----
    location_t loc_after_labels;
    bool open_brace = c_parser_next_token_is (parser, CPP_OPEN_BRACE);
    body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels);
!   add_stmt (build_stmt (loc, WHILE_STMT, cond, body, NULL_TREE,
! 			NULL_TREE));
    add_stmt (c_end_compound_stmt (loc, block, flag_isoc99));
    c_parser_maybe_reclassify_token (parser);
  
*************** c_parser_for_statement (c_parser *parser
*** 8507,8513 ****
  			      objc_foreach_continue_label);
    else
      add_stmt (build_stmt (for_loc, FOR_STMT, NULL_TREE, cond, incr,
! 			  body, NULL_TREE));
    add_stmt (c_end_compound_stmt (for_loc, block,
  				 flag_isoc99 || c_dialect_objc ()));
    c_parser_maybe_reclassify_token (parser);
--- 8508,8514 ----
  			      objc_foreach_continue_label);
    else
      add_stmt (build_stmt (for_loc, FOR_STMT, NULL_TREE, cond, incr,
! 			  body, NULL_TREE, NULL_TREE, NULL_TREE));
    add_stmt (c_end_compound_stmt (for_loc, block,
  				 flag_isoc99 || c_dialect_objc ()));
    c_parser_maybe_reclassify_token (parser);
diff -Nrcpad gcc-14-20250509/gcc/c/c-typeck.cc gcc-14-20250516/gcc/c/c-typeck.cc
*** gcc-14-20250509/gcc/c/c-typeck.cc	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/c/c-typeck.cc	Fri May 16 22:32:09 2025
*************** convert_for_assignment (location_t locat
*** 8151,8156 ****
--- 8151,8158 ----
      }
    else if (codel == POINTER_TYPE
  	   && (coder == INTEGER_TYPE
+ 	       || coder == ENUMERAL_TYPE
+ 	       || coder == BOOLEAN_TYPE
  	       || coder == NULLPTR_TYPE
  	       || coder == BITINT_TYPE))
      {
diff -Nrcpad gcc-14-20250509/gcc/c-family/ChangeLog gcc-14-20250516/gcc/c-family/ChangeLog
*** gcc-14-20250509/gcc/c-family/ChangeLog	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/c-family/ChangeLog	Fri May 16 22:32:09 2025
***************
*** 1,3 ****
--- 1,31 ----
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/118822
+ 	* c-common.h (WHILE_COND_CLEANUP): Change description in comment.
+ 	(FOR_COND_CLEANUP): Likewise.
+ 	* c-gimplify.cc (genericize_c_loop): Adjust for COND_CLEANUP
+ 	being CLEANUP_STMT/TRY_FINALLY_EXPR trailing nesting depth
+ 	instead of actual cleanup.
+ 
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86769
+ 	* c-common.def (FOR_STMT): Add 2 operands and document them.
+ 	(WHILE_STMT): Likewise.
+ 	* c-common.h (WHILE_COND_PREP, WHILE_COND_CLEANUP): Define.
+ 	(FOR_COND_PREP, FOR_COND_CLEANUP): Define.
+ 	* c-gimplify.cc (genericize_c_loop): Add COND_PREP and COND_CLEANUP
+ 	arguments, handle them if they are non-NULL.
+ 	(genericize_for_stmt, genericize_while_stmt, genericize_do_stmt):
+ 	Adjust callers.
+ 
  2025-03-22  Martin Uecker  <uecker@tugraz.at>
  
  	Backported from master:
diff -Nrcpad gcc-14-20250509/gcc/c-family/c-common.def gcc-14-20250516/gcc/c-family/c-common.def
*** gcc-14-20250509/gcc/c-family/c-common.def	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/c-family/c-common.def	Fri May 16 22:32:09 2025
*************** DEFTREECODE (SIZEOF_EXPR, "sizeof_expr",
*** 58,70 ****
  DEFTREECODE (PAREN_SIZEOF_EXPR, "paren_sizeof_expr", tcc_expression, 1)
  
  /* Used to represent a `for' statement. The operands are
!    FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY, and FOR_SCOPE,
!    respectively.  */
! DEFTREECODE (FOR_STMT, "for_stmt", tcc_statement, 5)
  
! /* Used to represent a 'while' statement. The operands are WHILE_COND
!    and WHILE_BODY, respectively.  */
! DEFTREECODE (WHILE_STMT, "while_stmt", tcc_statement, 2)
  
  /* Used to represent a 'do' statement. The operands are DO_COND and
     DO_BODY, respectively.  */
--- 58,71 ----
  DEFTREECODE (PAREN_SIZEOF_EXPR, "paren_sizeof_expr", tcc_expression, 1)
  
  /* Used to represent a `for' statement. The operands are
!    FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY, FOR_SCOPE,
!    FOR_COND_PREP and FOR_COND_CLEANUP, respectively.  */
! DEFTREECODE (FOR_STMT, "for_stmt", tcc_statement, 7)
  
! /* Used to represent a 'while' statement. The operands are WHILE_COND,
!    WHILE_BODY, WHILE_COND_PREP and WHILE_COND_CLEANUP,
!    respectively.  */
! DEFTREECODE (WHILE_STMT, "while_stmt", tcc_statement, 4)
  
  /* Used to represent a 'do' statement. The operands are DO_COND and
     DO_BODY, respectively.  */
diff -Nrcpad gcc-14-20250509/gcc/c-family/c-common.h gcc-14-20250516/gcc/c-family/c-common.h
*** gcc-14-20250509/gcc/c-family/c-common.h	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/c-family/c-common.h	Fri May 16 22:32:09 2025
*************** extern tree build_userdef_literal (tree
*** 1490,1513 ****
  				   tree num_string);
  
  
! /* WHILE_STMT accessors. These give access to the condition of the
!    while statement and the body of the while statement, respectively.  */
  #define WHILE_COND(NODE)	TREE_OPERAND (WHILE_STMT_CHECK (NODE), 0)
  #define WHILE_BODY(NODE)	TREE_OPERAND (WHILE_STMT_CHECK (NODE), 1)
  
  /* DO_STMT accessors. These give access to the condition of the do
     statement and the body of the do statement, respectively.  */
  #define DO_COND(NODE)		TREE_OPERAND (DO_STMT_CHECK (NODE), 0)
  #define DO_BODY(NODE)		TREE_OPERAND (DO_STMT_CHECK (NODE), 1)
  
! /* FOR_STMT accessors. These give access to the init statement,
     condition, update expression, and body of the for statement,
     respectively.  */
  #define FOR_INIT_STMT(NODE)	TREE_OPERAND (FOR_STMT_CHECK (NODE), 0)
  #define FOR_COND(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 1)
  #define FOR_EXPR(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 2)
  #define FOR_BODY(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 3)
  #define FOR_SCOPE(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 4)
  
  #define SWITCH_STMT_COND(NODE)	TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 0)
  #define SWITCH_STMT_BODY(NODE)	TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1)
--- 1490,1520 ----
  				   tree num_string);
  
  
! /* WHILE_STMT accessors.  These give access to the condition of the
!    while statement and the body of the while statement, and
!    condition preparation statements and number of its nested cleanups,
!    respectively.  */
  #define WHILE_COND(NODE)	TREE_OPERAND (WHILE_STMT_CHECK (NODE), 0)
  #define WHILE_BODY(NODE)	TREE_OPERAND (WHILE_STMT_CHECK (NODE), 1)
+ #define WHILE_COND_PREP(NODE)	TREE_OPERAND (WHILE_STMT_CHECK (NODE), 2)
+ #define WHILE_COND_CLEANUP(NODE) TREE_OPERAND (WHILE_STMT_CHECK (NODE), 3)
  
  /* DO_STMT accessors. These give access to the condition of the do
     statement and the body of the do statement, respectively.  */
  #define DO_COND(NODE)		TREE_OPERAND (DO_STMT_CHECK (NODE), 0)
  #define DO_BODY(NODE)		TREE_OPERAND (DO_STMT_CHECK (NODE), 1)
  
! /* FOR_STMT accessors.  These give access to the init statement,
     condition, update expression, and body of the for statement,
+    and condition preparation statements and number of its nested cleanups,
     respectively.  */
  #define FOR_INIT_STMT(NODE)	TREE_OPERAND (FOR_STMT_CHECK (NODE), 0)
  #define FOR_COND(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 1)
  #define FOR_EXPR(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 2)
  #define FOR_BODY(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 3)
  #define FOR_SCOPE(NODE)		TREE_OPERAND (FOR_STMT_CHECK (NODE), 4)
+ #define FOR_COND_PREP(NODE)	TREE_OPERAND (FOR_STMT_CHECK (NODE), 5)
+ #define FOR_COND_CLEANUP(NODE)	TREE_OPERAND (FOR_STMT_CHECK (NODE), 6)
  
  #define SWITCH_STMT_COND(NODE)	TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 0)
  #define SWITCH_STMT_BODY(NODE)	TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1)
diff -Nrcpad gcc-14-20250509/gcc/c-family/c-gimplify.cc gcc-14-20250516/gcc/c-family/c-gimplify.cc
*** gcc-14-20250509/gcc/c-family/c-gimplify.cc	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/c-family/c-gimplify.cc	Fri May 16 22:32:09 2025
*************** expr_loc_or_loc (const_tree expr, locati
*** 225,245 ****
     controlled by the loop.  INCR is the increment expression of a for-loop,
     or NULL_TREE.  COND_IS_FIRST indicates whether the condition is
     evaluated before the loop body as in while and for loops, or after the
!    loop body as in do-while loops.  */
  
  static void
  genericize_c_loop (tree *stmt_p, location_t start_locus, tree cond, tree body,
! 		   tree incr, bool cond_is_first, int *walk_subtrees,
! 		   void *data, walk_tree_fn func, walk_tree_lh lh)
  {
    tree blab, clab;
    tree entry = NULL, exit = NULL, t;
!   tree stmt_list = NULL;
    location_t cond_locus = expr_loc_or_loc (cond, start_locus);
    location_t incr_locus = expr_loc_or_loc (incr, start_locus);
  
    protected_set_expr_location_if_unset (incr, start_locus);
  
    walk_tree_1 (&cond, func, data, NULL, lh);
    walk_tree_1 (&incr, func, data, NULL, lh);
  
--- 225,254 ----
     controlled by the loop.  INCR is the increment expression of a for-loop,
     or NULL_TREE.  COND_IS_FIRST indicates whether the condition is
     evaluated before the loop body as in while and for loops, or after the
!    loop body as in do-while loops.  COND_PREP and COND_CLEANUP are used
!    for C++ for/while loops with variable declaration as condition.  COND_PREP
!    is a BIND_EXPR with the declaration and initialization of the condition
!    variable, into which COND, BODY, continue label if needed and INCR if
!    non-NULL should be appended, and COND_CLEANUP is number of nested
!    CLEANUP_STMT -> TRY_FINALLY_EXPR statements at the end.  If non-NULL,
!    COND, BODY, continue label if needed and INCR if non-NULL should be
!    appended to the body of the COND_CLEANUP's nested TRY_FINALLY_EXPR.  */
  
  static void
  genericize_c_loop (tree *stmt_p, location_t start_locus, tree cond, tree body,
! 		   tree incr, tree cond_prep, tree cond_cleanup,
! 		   bool cond_is_first, int *walk_subtrees, void *data,
! 		   walk_tree_fn func, walk_tree_lh lh)
  {
    tree blab, clab;
    tree entry = NULL, exit = NULL, t;
!   tree stmt_list = NULL, outer_stmt_list = NULL_TREE, *stmt_list_p = NULL;
    location_t cond_locus = expr_loc_or_loc (cond, start_locus);
    location_t incr_locus = expr_loc_or_loc (incr, start_locus);
  
    protected_set_expr_location_if_unset (incr, start_locus);
  
+   walk_tree_1 (&cond_prep, func, data, NULL, lh);
    walk_tree_1 (&cond, func, data, NULL, lh);
    walk_tree_1 (&incr, func, data, NULL, lh);
  
*************** genericize_c_loop (tree *stmt_p, locatio
*** 249,257 ****
    walk_tree_1 (&body, func, data, NULL, lh);
    *walk_subtrees = 0;
  
!   /* If condition is zero don't generate a loop construct.  */
!   if (cond && integer_zerop (cond))
      {
        if (cond_is_first)
  	{
  	  t = build1_loc (start_locus, GOTO_EXPR, void_type_node,
--- 258,311 ----
    walk_tree_1 (&body, func, data, NULL, lh);
    *walk_subtrees = 0;
  
!   if (cond_prep)
      {
+       /* The C++ cases of
+ 	 while (A x = 42) body;
+ 	 for (; A x = 42; expr) body;
+ 	 This should be expanded into:
+ 
+ 	 top:
+ 	 COND_PREP
+ 
+ 	 with either
+ 
+ 	 if (COND); else break;
+ 	 BODY;
+ 	 cont:
+ 	 EXPR;
+ 	 goto top;
+ 
+ 	 appended into COND_PREP body or body of some TRY_FINALLY_EXPRs
+ 	 at the end of COND_PREP.  */
+       gcc_assert (cond_is_first && TREE_CODE (cond_prep) == BIND_EXPR);
+       tree top = build1 (LABEL_EXPR, void_type_node,
+ 			 create_artificial_label (start_locus));
+       exit = build1 (GOTO_EXPR, void_type_node, LABEL_EXPR_LABEL (top));
+       append_to_statement_list (top, &outer_stmt_list);
+       append_to_statement_list (cond_prep, &outer_stmt_list);
+       stmt_list_p = &BIND_EXPR_BODY (cond_prep);
+       if (cond_cleanup)
+ 	for (unsigned depth = tree_to_uhwi (cond_cleanup); depth; --depth)
+ 	  {
+ 	    t = tsi_stmt (tsi_last (*stmt_list_p));
+ 	    gcc_assert (TREE_CODE (t) == TRY_FINALLY_EXPR);
+ 	    stmt_list_p = &TREE_OPERAND (t, 0);
+ 	  }
+       stmt_list = *stmt_list_p;
+       *stmt_list_p = NULL_TREE;
+       tree after_cond = create_artificial_label (cond_locus);
+       tree goto_after_cond = build1 (GOTO_EXPR, void_type_node, after_cond);
+       t = build1 (GOTO_EXPR, void_type_node, get_bc_label (bc_break));
+       t = fold_build3_loc (cond_locus, COND_EXPR, void_type_node, cond,
+ 			   goto_after_cond, t);
+       append_to_statement_list (t, &stmt_list);
+       t = build1 (LABEL_EXPR, void_type_node, after_cond);
+       append_to_statement_list (t, &stmt_list);
+     }
+   else if (cond && integer_zerop (cond))
+     {
+       /* If condition is zero don't generate a loop construct.  */
        if (cond_is_first)
  	{
  	  t = build1_loc (start_locus, GOTO_EXPR, void_type_node,
*************** genericize_c_loop (tree *stmt_p, locatio
*** 348,353 ****
--- 402,412 ----
        append_to_statement_list (d, &stmt_list);
      }
    append_to_statement_list (exit, &stmt_list);
+   if (stmt_list_p)
+     {
+       *stmt_list_p = stmt_list;
+       stmt_list = outer_stmt_list;
+     }
    finish_bc_block (&stmt_list, bc_break, blab);
    if (!stmt_list)
      stmt_list = build_empty_stmt (start_locus);
*************** genericize_for_stmt (tree *stmt_p, int *
*** 373,380 ****
      }
  
    genericize_c_loop (&loop, EXPR_LOCATION (stmt), FOR_COND (stmt),
! 		     FOR_BODY (stmt), FOR_EXPR (stmt), 1, walk_subtrees,
! 		     data, func, lh);
    append_to_statement_list (loop, &expr);
    if (expr == NULL_TREE)
      expr = loop;
--- 432,440 ----
      }
  
    genericize_c_loop (&loop, EXPR_LOCATION (stmt), FOR_COND (stmt),
! 		     FOR_BODY (stmt), FOR_EXPR (stmt),
! 		     FOR_COND_PREP (stmt), FOR_COND_CLEANUP (stmt), 1,
! 		     walk_subtrees, data, func, lh);
    append_to_statement_list (loop, &expr);
    if (expr == NULL_TREE)
      expr = loop;
*************** genericize_while_stmt (tree *stmt_p, int
*** 389,396 ****
  {
    tree stmt = *stmt_p;
    genericize_c_loop (stmt_p, EXPR_LOCATION (stmt), WHILE_COND (stmt),
! 		     WHILE_BODY (stmt), NULL_TREE, 1, walk_subtrees,
! 		     data, func, lh);
  }
  
  /* Genericize a DO_STMT node *STMT_P.  */
--- 449,457 ----
  {
    tree stmt = *stmt_p;
    genericize_c_loop (stmt_p, EXPR_LOCATION (stmt), WHILE_COND (stmt),
! 		     WHILE_BODY (stmt), NULL_TREE,
! 		     WHILE_COND_PREP (stmt), WHILE_COND_CLEANUP (stmt), 1,
! 		     walk_subtrees, data, func, lh);
  }
  
  /* Genericize a DO_STMT node *STMT_P.  */
*************** genericize_do_stmt (tree *stmt_p, int *w
*** 401,408 ****
  {
    tree stmt = *stmt_p;
    genericize_c_loop (stmt_p, EXPR_LOCATION (stmt), DO_COND (stmt),
! 		     DO_BODY (stmt), NULL_TREE, 0, walk_subtrees,
! 		     data, func, lh);
  }
  
  /* Genericize a SWITCH_STMT node *STMT_P by turning it into a SWITCH_EXPR.  */
--- 462,469 ----
  {
    tree stmt = *stmt_p;
    genericize_c_loop (stmt_p, EXPR_LOCATION (stmt), DO_COND (stmt),
! 		     DO_BODY (stmt), NULL_TREE,
! 		     NULL_TREE, NULL_TREE, 0, walk_subtrees, data, func, lh);
  }
  
  /* Genericize a SWITCH_STMT node *STMT_P by turning it into a SWITCH_EXPR.  */
diff -Nrcpad gcc-14-20250509/gcc/cgraphclones.cc gcc-14-20250516/gcc/cgraphclones.cc
*** gcc-14-20250509/gcc/cgraphclones.cc	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/cgraphclones.cc	Fri May 16 22:32:09 2025
*************** cgraph_node::expand_all_artificial_thunk
*** 307,318 ****
        e = e->next_caller;
  }
  
  void
  dump_callgraph_transformation (const cgraph_node *original,
  			       const cgraph_node *clone,
  			       const char *suffix)
  {
!   if (symtab->ipa_clones_dump_file)
      {
        fprintf (symtab->ipa_clones_dump_file,
  	       "Callgraph clone;%s;%d;%s;%d;%d;%s;%d;%s;%d;%d;%s\n",
--- 307,326 ----
        e = e->next_caller;
  }
  
+ /* Dump information about creation of a call graph node clone to the dump file
+    created by the -fdump-ipa-clones option.  ORIGINAL is the function being
+    cloned, CLONE is the new clone.  SUFFIX is a string that helps identify the
+    reason for cloning, often it is the suffix used by a particular IPA pass to
+    create unique function names.  SUFFIX can be NULL and in that case the
+    dumping will not take place, which must be the case only for helper clones
+    which will never be emitted to the output.  */
+ 
  void
  dump_callgraph_transformation (const cgraph_node *original,
  			       const cgraph_node *clone,
  			       const char *suffix)
  {
!   if (suffix && symtab->ipa_clones_dump_file)
      {
        fprintf (symtab->ipa_clones_dump_file,
  	       "Callgraph clone;%s;%d;%s;%d;%d;%s;%d;%s;%d;%d;%s\n",
diff -Nrcpad gcc-14-20250509/gcc/config/i386/i386.md gcc-14-20250516/gcc/config/i386/i386.md
*** gcc-14-20250509/gcc/config/i386/i386.md	Fri May  9 22:32:11 2025
--- gcc-14-20250516/gcc/config/i386/i386.md	Fri May 16 22:32:09 2025
***************
*** 17622,17632 ****
  (define_insn "*bt<mode>"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (zero_extract:SWI48
  	    (match_operand:SWI48 0 "nonimmediate_operand" "r,m")
  	    (const_int 1)
! 	    (match_operand:QI 1 "nonmemory_operand" "q<S>,<S>"))
! 	  (const_int 0)))]
    ""
  {
    switch (get_attr_mode (insn))
--- 17622,17632 ----
  (define_insn "*bt<mode>"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
+ 	  (const_int 0)
  	  (zero_extract:SWI48
  	    (match_operand:SWI48 0 "nonimmediate_operand" "r,m")
  	    (const_int 1)
! 	    (match_operand:QI 1 "nonmemory_operand" "q<S>,<S>"))))]
    ""
  {
    switch (get_attr_mode (insn))
***************
*** 17653,17666 ****
  (define_insn_and_split "*bt<SWI48:mode>_mask"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
            (zero_extract:SWI48
              (match_operand:SWI48 0 "nonimmediate_operand" "r,m")
              (const_int 1)
  	    (subreg:QI
  	      (and:SWI248
  		(match_operand:SWI248 1 "register_operand")
! 		(match_operand 2 "const_int_operand")) 0))
!           (const_int 0)))]
    "TARGET_USE_BT
     && (INTVAL (operands[2]) & (GET_MODE_BITSIZE (<SWI48:MODE>mode)-1))
        == GET_MODE_BITSIZE (<SWI48:MODE>mode)-1
--- 17653,17666 ----
  (define_insn_and_split "*bt<SWI48:mode>_mask"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
+ 	  (const_int 0)
            (zero_extract:SWI48
              (match_operand:SWI48 0 "nonimmediate_operand" "r,m")
              (const_int 1)
  	    (subreg:QI
  	      (and:SWI248
  		(match_operand:SWI248 1 "register_operand")
! 		(match_operand 2 "const_int_operand")) 0))))]
    "TARGET_USE_BT
     && (INTVAL (operands[2]) & (GET_MODE_BITSIZE (<SWI48:MODE>mode)-1))
        == GET_MODE_BITSIZE (<SWI48:MODE>mode)-1
***************
*** 17669,17676 ****
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
!          (zero_extract:SWI48 (match_dup 0) (const_int 1) (match_dup 1))
!          (const_int 0)))]
    "operands[1] = gen_lowpart (QImode, operands[1]);")
  
  (define_insn_and_split "*jcc_bt<mode>"
--- 17669,17676 ----
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
! 	 (const_int 0)
! 	 (zero_extract:SWI48 (match_dup 0) (const_int 1) (match_dup 1))))]
    "operands[1] = gen_lowpart (QImode, operands[1]);")
  
  (define_insn_and_split "*jcc_bt<mode>"
***************
*** 17695,17712 ****
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (zero_extract:SWI48
  	    (match_dup 1)
  	    (const_int 1)
! 	    (match_dup 2))
! 	  (const_int 0)))
     (set (pc)
  	(if_then_else (match_op_dup 0 [(reg:CCC FLAGS_REG) (const_int 0)])
  		      (label_ref (match_dup 3))
  		      (pc)))]
  {
    operands[0] = shallow_copy_rtx (operands[0]);
!   PUT_CODE (operands[0], reverse_condition (GET_CODE (operands[0])));
  })
  
  ;; Avoid useless masking of bit offset operand.
--- 17695,17712 ----
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
+ 	  (const_int 0)
  	  (zero_extract:SWI48
  	    (match_dup 1)
  	    (const_int 1)
! 	    (match_dup 2))))
     (set (pc)
  	(if_then_else (match_op_dup 0 [(reg:CCC FLAGS_REG) (const_int 0)])
  		      (label_ref (match_dup 3))
  		      (pc)))]
  {
    operands[0] = shallow_copy_rtx (operands[0]);
!   PUT_CODE (operands[0], GET_CODE (operands[0]) == NE ? LTU : GEU);
  })
  
  ;; Avoid useless masking of bit offset operand.
***************
*** 17731,17748 ****
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (zero_extract:SWI48
  	    (match_dup 1)
  	    (const_int 1)
! 	    (match_dup 2))
! 	  (const_int 0)))
     (set (pc)
  	(if_then_else (match_op_dup 0 [(reg:CCC FLAGS_REG) (const_int 0)])
  		      (label_ref (match_dup 4))
  		      (pc)))]
  {
    operands[0] = shallow_copy_rtx (operands[0]);
!   PUT_CODE (operands[0], reverse_condition (GET_CODE (operands[0])));
  })
  
  ;; Avoid useless masking of bit offset operand.
--- 17731,17748 ----
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
+ 	  (const_int 0)
  	  (zero_extract:SWI48
  	    (match_dup 1)
  	    (const_int 1)
! 	    (match_dup 2))))
     (set (pc)
  	(if_then_else (match_op_dup 0 [(reg:CCC FLAGS_REG) (const_int 0)])
  		      (label_ref (match_dup 4))
  		      (pc)))]
  {
    operands[0] = shallow_copy_rtx (operands[0]);
!   PUT_CODE (operands[0], GET_CODE (operands[0]) == NE ? LTU : GEU);
  })
  
  ;; Avoid useless masking of bit offset operand.
***************
*** 17768,17785 ****
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (zero_extract:SWI48
  	    (match_dup 1)
  	    (const_int 1)
! 	    (match_dup 2))
! 	  (const_int 0)))
     (set (pc)
  	(if_then_else (match_op_dup 0 [(reg:CCC FLAGS_REG) (const_int 0)])
  		      (label_ref (match_dup 4))
  		      (pc)))]
  {
    operands[0] = shallow_copy_rtx (operands[0]);
!   PUT_CODE (operands[0], reverse_condition (GET_CODE (operands[0])));
    operands[2] = gen_lowpart (QImode, operands[2]);
  })
  
--- 17768,17785 ----
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
+ 	  (const_int 0)
  	  (zero_extract:SWI48
  	    (match_dup 1)
  	    (const_int 1)
! 	    (match_dup 2))))
     (set (pc)
  	(if_then_else (match_op_dup 0 [(reg:CCC FLAGS_REG) (const_int 0)])
  		      (label_ref (match_dup 4))
  		      (pc)))]
  {
    operands[0] = shallow_copy_rtx (operands[0]);
!   PUT_CODE (operands[0], GET_CODE (operands[0]) == NE ? LTU : GEU);
    operands[2] = gen_lowpart (QImode, operands[2]);
  })
  
***************
*** 17800,17809 ****
     && ix86_pre_reload_split ()"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
! 	 (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))
! 	 (const_int 0)))
     (set (match_dup 0)
! 	(if_then_else:SWI248 (eq (reg:CCC FLAGS_REG) (const_int 0))
  			     (match_dup 3)
  			     (match_dup 4)))]
  {
--- 17800,17809 ----
     && ix86_pre_reload_split ()"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
! 	 (const_int 0)
! 	 (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))))
     (set (match_dup 0)
! 	(if_then_else:SWI248 (ltu (reg:CCC FLAGS_REG) (const_int 0))
  			     (match_dup 3)
  			     (match_dup 4)))]
  {
***************
*** 17824,17833 ****
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
!          (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))
!          (const_int 0)))
     (set (match_dup 0)
!         (eq:QI (reg:CCC FLAGS_REG) (const_int 0)))])
  
  ;; Help combine recognize bt followed by setnc
  (define_insn_and_split "*bt<mode>_setncqi"
--- 17824,17833 ----
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
! 	 (const_int 0)
! 	 (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))))
     (set (match_dup 0)
! 	(ltu:QI (reg:CCC FLAGS_REG) (const_int 0)))])
  
  ;; Help combine recognize bt followed by setnc
  (define_insn_and_split "*bt<mode>_setncqi"
***************
*** 17844,17853 ****
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
!          (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))
!          (const_int 0)))
     (set (match_dup 0)
!         (ne:QI (reg:CCC FLAGS_REG) (const_int 0)))])
  
  (define_insn_and_split "*bt<mode>_setnc<mode>"
    [(set (match_operand:SWI48 0 "register_operand")
--- 17844,17853 ----
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
! 	 (const_int 0)
! 	 (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))))
     (set (match_dup 0)
! 	(geu:QI (reg:CCC FLAGS_REG) (const_int 0)))])
  
  (define_insn_and_split "*bt<mode>_setnc<mode>"
    [(set (match_operand:SWI48 0 "register_operand")
***************
*** 17862,17871 ****
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
!          (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))
!          (const_int 0)))
     (set (match_dup 3)
!         (ne:QI (reg:CCC FLAGS_REG) (const_int 0)))
     (set (match_dup 0) (zero_extend:SWI48 (match_dup 3)))]
    "operands[3] = gen_reg_rtx (QImode);")
  
--- 17862,17871 ----
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
! 	 (const_int 0)
! 	 (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))))
     (set (match_dup 3)
! 	(geu:QI (reg:CCC FLAGS_REG) (const_int 0)))
     (set (match_dup 0) (zero_extend:SWI48 (match_dup 3)))]
    "operands[3] = gen_reg_rtx (QImode);")
  
***************
*** 17884,17893 ****
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
!          (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))
!          (const_int 0)))
     (set (match_dup 0)
!         (ne:QI (reg:CCC FLAGS_REG) (const_int 0)))])
  
  ;; Help combine recognize bt followed by setc
  (define_insn_and_split "*bt<mode>_setc<mode>_mask"
--- 17884,17893 ----
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
! 	  (const_int 0)
! 	  (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))))
     (set (match_dup 0)
! 	(geu:QI (reg:CCC FLAGS_REG) (const_int 0)))])
  
  ;; Help combine recognize bt followed by setc
  (define_insn_and_split "*bt<mode>_setc<mode>_mask"
***************
*** 17908,17917 ****
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
!          (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))
!          (const_int 0)))
     (set (match_dup 3)
!         (eq:QI (reg:CCC FLAGS_REG) (const_int 0)))
     (set (match_dup 0) (zero_extend:SWI48 (match_dup 3)))]
  {
    operands[2] = gen_lowpart (QImode, operands[2]);
--- 17908,17917 ----
    "&& 1"
    [(set (reg:CCC FLAGS_REG)
          (compare:CCC
! 	  (const_int 0)
! 	  (zero_extract:SWI48 (match_dup 1) (const_int 1) (match_dup 2))))
     (set (match_dup 3)
! 	(ltu:QI (reg:CCC FLAGS_REG) (const_int 0)))
     (set (match_dup 0) (zero_extend:SWI48 (match_dup 3)))]
  {
    operands[2] = gen_lowpart (QImode, operands[2]);
diff -Nrcpad gcc-14-20250509/gcc/cp/ChangeLog gcc-14-20250516/gcc/cp/ChangeLog
*** gcc-14-20250509/gcc/cp/ChangeLog	Fri May  9 22:32:12 2025
--- gcc-14-20250516/gcc/cp/ChangeLog	Fri May 16 22:32:09 2025
***************
*** 1,3 ****
--- 1,110 ----
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/118822
+ 	* semantics.cc (adjust_loop_decl_cond): Allow multiple trailing
+ 	CLEANUP_STMT levels in *BODY_P.  Set *CLEANUP_P to the number
+ 	of levels rather than one particular cleanup, keep the cleanups
+ 	in *PREP_P.  Set *BODY_P to the last stmt in the cur_stmt_list
+ 	or NULL if *CLEANUP_P and the innermost cur_stmt_list is empty.
+ 	(finish_loop_cond_prep): New function.
+ 	(finish_while_stmt, finish_for_stmt): Use it.  Don't call
+ 	set_one_cleanup_loc.
+ 	* constexpr.cc (cxx_eval_loop_expr): Adjust handling of
+ 	{FOR,WHILE}_COND_{PREP,CLEANUP}.
+ 
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86769
+ 	* semantics.cc (set_one_cleanup_loc): New function.
+ 	(set_cleanup_locs): Use it.
+ 	(simplify_loop_decl_cond): Remove.
+ 	(adjust_loop_decl_cond): New function.
+ 	(begin_while_stmt): Add 2 further NULL_TREE operands to build_stmt.
+ 	(finish_while_stmt_cond): Call adjust_loop_decl_cond instead of
+ 	simplify_loop_decl_cond.
+ 	(finish_while_stmt): Call do_poplevel also on WHILE_COND_PREP if
+ 	non-NULL and also use pop_stmt_list rather than do_poplevel for
+ 	WHILE_BODY in that case.  Call set_one_cleanup_loc.
+ 	(begin_for_stmt): Add 2 further NULL_TREE operands to build_stmt.
+ 	(finish_for_cond): Call adjust_loop_decl_cond instead of
+ 	simplify_loop_decl_cond.
+ 	(finish_for_stmt): Call do_poplevel also on FOR_COND_PREP if non-NULL
+ 	and also use pop_stmt_list rather than do_poplevel for FOR_BODY in
+ 	that case.  Call set_one_cleanup_loc.
+ 	* constexpr.cc (cxx_eval_loop_expr): Handle
+ 	{WHILE,FOR}_COND_{PREP,CLEANUP}.
+ 	(check_for_return_continue): Handle {WHILE,FOR}_COND_PREP.
+ 	(potential_constant_expression_1): RECUR on
+ 	{WHILE,FOR}_COND_{PREP,CLEANUP}.
+ 
+ 2025-05-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/113773
+ 	* coroutines.cc (coro_rewrite_function_body): Do not set
+ 	initial_await_resume_called here.
+ 	(morph_fn_to_coro): Set it here, and introduce a new flag
+ 	that indicates we have not yet reached the ramp return.
+ 	Gate the EH cleanups on both of these flags.
+ 
+ 2025-05-14  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/118245
+ 	* parser.cc (cp_parser_class_head): Remove lambda scope when
+ 	parsing base classes.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/116379
+ 	* pt.cc (tsubst_expr) <COMPONENT_REF>: Use force_paren_expr to set
+ 	REF_PARENTHESIZED_P.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/117501
+ 	* cp-gimplify.cc (cp_build_init_expr_for_ctor): New.
+ 	(cp_fold_immediate_r): Call it.
+ 	(cp_fold): Break out code into cp_build_init_expr_for_ctor.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/117778
+ 	* parser.cc (cp_parser_late_return_type_opt): Maybe override
+ 	auto_is_implicit_function_template_parm_p.
+ 	(cp_parser_parameter_declaration): Move a make_temp_override below.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-03-07  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/118775
+ 	* constexpr.cc (cxx_eval_call_expression): Check tree_fits_uhwi_p.
+ 
+ 2025-05-14  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/120125
+ 	* optimize.cc (maybe_thunk_body): Don't assume 'fn' has a cgraph
+ 	node created.
+ 
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/118590
+ 	* typeck.cc (build_omp_array_section): If array_expr is type dependent
+ 	or a TYPE_DECL, build OMP_ARRAY_SECTION with NULL type.
+ 
  2025-05-06  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20250509/gcc/cp/constexpr.cc gcc-14-20250516/gcc/cp/constexpr.cc
*** gcc-14-20250509/gcc/cp/constexpr.cc	Fri May  9 22:32:12 2025
--- gcc-14-20250516/gcc/cp/constexpr.cc	Fri May 16 22:32:09 2025
*************** cxx_eval_call_expression (const constexp
*** 2918,2923 ****
--- 2918,2934 ----
  	  gcc_assert (arg0);
  	  if (new_op_p)
  	    {
+ 	      /* FIXME: We should not get here; the VERIFY_CONSTANT above
+ 		 should have already caught it.  But currently a conversion
+ 		 from pointer type to arithmetic type is only considered
+ 		 non-constant for CONVERT_EXPRs, not NOP_EXPRs.  */
+ 	      if (!tree_fits_uhwi_p (arg0))
+ 		{
+ 		  if (!ctx->quiet)
+ 		    error_at (loc, "cannot allocate array: size not constant");
+ 		  *non_constant_p = true;
+ 		  return t;
+ 		}
  	      tree type = build_array_type_nelts (char_type_node,
  						  tree_to_uhwi (arg0));
  	      tree var = build_decl (loc, VAR_DECL,
*************** cxx_eval_loop_expr (const constexpr_ctx
*** 7078,7083 ****
--- 7089,7096 ----
      }
  
    tree body, cond = NULL_TREE, expr = NULL_TREE;
+   tree cond_prep = NULL_TREE, cond_cleanup = NULL_TREE;
+   unsigned cond_cleanup_depth = 0;
    int count = 0;
    switch (TREE_CODE (t))
      {
*************** cxx_eval_loop_expr (const constexpr_ctx
*** 7091,7096 ****
--- 7104,7111 ----
      case WHILE_STMT:
        body = WHILE_BODY (t);
        cond = WHILE_COND (t);
+       cond_prep = WHILE_COND_PREP (t);
+       cond_cleanup = WHILE_COND_CLEANUP (t);
        count = -1;
        break;
      case FOR_STMT:
*************** cxx_eval_loop_expr (const constexpr_ctx
*** 7102,7112 ****
--- 7117,7155 ----
        body = FOR_BODY (t);
        cond = FOR_COND (t);
        expr = FOR_EXPR (t);
+       cond_prep = FOR_COND_PREP (t);
+       cond_cleanup = FOR_COND_CLEANUP (t);
        count = -1;
        break;
      default:
        gcc_unreachable ();
      }
+   if (cond_prep)
+     gcc_assert (TREE_CODE (cond_prep) == BIND_EXPR);
+   auto cleanup_cond = [&] {
+     /* Clean up the condition variable after each iteration.  */
+     if (cond_cleanup_depth && !*non_constant_p)
+       {
+ 	auto_vec<tree, 4> cleanups (cond_cleanup_depth);
+ 	tree s = BIND_EXPR_BODY (cond_prep);
+ 	unsigned i;
+ 	for (i = cond_cleanup_depth; i; --i)
+ 	  {
+ 	    tree_stmt_iterator iter = tsi_last (s);
+ 	    s = tsi_stmt (iter);
+ 	    cleanups.quick_push (CLEANUP_EXPR (s));
+ 	    s = CLEANUP_BODY (s);
+ 	  }
+ 	tree c;
+ 	FOR_EACH_VEC_ELT_REVERSE (cleanups, i, c)
+ 	  cxx_eval_constant_expression (ctx, c, vc_discard, non_constant_p,
+ 					overflow_p);
+       }
+     if (cond_prep)
+       for (tree decl = BIND_EXPR_VARS (cond_prep);
+ 	   decl; decl = DECL_CHAIN (decl))
+ 	destroy_value_checked (ctx, decl, non_constant_p);
+   };
    do
      {
        if (count != -1)
*************** cxx_eval_loop_expr (const constexpr_ctx
*** 7128,7133 ****
--- 7171,7255 ----
  	    cxx_eval_constant_expression (ctx, expr, vc_prvalue,
  					  non_constant_p, overflow_p,
  					  jump_target);
+ 	  cleanup_cond ();
+ 	}
+ 
+       if (cond_prep)
+ 	{
+ 	  for (tree decl = BIND_EXPR_VARS (cond_prep);
+ 	       decl; decl = DECL_CHAIN (decl))
+ 	    ctx->global->clear_value (decl);
+ 	  if (cond_cleanup)
+ 	    {
+ 	      /* If COND_CLEANUP is non-NULL, we need to evaluate DEPTH
+ 		 nested STATEMENT_LISTs from inside of BIND_EXPR_BODY,
+ 		 but defer the evaluation of CLEANUP_EXPRs of CLEANUP_STMT
+ 		 at the end of those STATEMENT_LISTs.  */
+ 	      cond_cleanup_depth = 0;
+ 	      tree s = BIND_EXPR_BODY (cond_prep);
+ 	      for (unsigned depth = tree_to_uhwi (cond_cleanup);
+ 		   depth; --depth)
+ 		{
+ 		  for (tree_stmt_iterator i = tsi_start (s);
+ 		       !tsi_end_p (i); ++i)
+ 		    {
+ 		      tree stmt = *i;
+ 		      if (TREE_CODE (stmt) == DEBUG_BEGIN_STMT)
+ 			continue;
+ 		      if (tsi_one_before_end_p (i))
+ 			{
+ 			  /* The last statement in the STATEMENT_LIST
+ 			     has to be a CLEANUP_STMT (verified in
+ 			     finish_loop_cond_prep).  We want to
+ 			     evaluate just its CLEANUP_BODY part but not
+ 			     CLEANUP_EXPR part just yet.  */
+ 			  gcc_assert (TREE_CODE (stmt) == CLEANUP_STMT);
+ 			  /* If the CLEANUP_STMT is not actually to be
+ 			     evaluated, don't increment cond_cleanup_depth
+ 			     so that we don't evaluate the CLEANUP_EXPR
+ 			     for it later either.  */
+ 			  if (*jump_target)
+ 			    {
+ 			      depth = 1;
+ 			      break;
+ 			    }
+ 			  ++cond_cleanup_depth;
+ 			  /* If not in the innermost one, next iteration
+ 			     will handle CLEANUP_BODY similarly.  */
+ 			  if (depth > 1)
+ 			    {
+ 			      s = CLEANUP_BODY (stmt);
+ 			      break;
+ 			    }
+ 			  /* The innermost one can be evaluated normally.  */
+ 			  cxx_eval_constant_expression (ctx,
+ 							CLEANUP_BODY (stmt),
+ 							vc_discard,
+ 							non_constant_p,
+ 							overflow_p,
+ 							jump_target);
+ 			  break;
+ 			}
+ 		      /* And so should be evaluated statements which aren't
+ 			 last in the STATEMENT_LIST.  */
+ 		      cxx_eval_constant_expression (ctx, stmt, vc_discard,
+ 						    non_constant_p, overflow_p,
+ 						    jump_target);
+ 		      if (*non_constant_p
+ 			  || returns (jump_target)
+ 			  || breaks (jump_target)
+ 			  || continues (jump_target))
+ 			{
+ 			  depth = 1;
+ 			  break;
+ 			}
+ 		    }
+ 		}
+ 	    }
+ 	  else
+ 	    cxx_eval_constant_expression (ctx, BIND_EXPR_BODY (cond_prep),
+ 					  vc_discard, non_constant_p,
+ 					  overflow_p, jump_target);
  	}
  
        if (cond)
*************** cxx_eval_loop_expr (const constexpr_ctx
*** 7165,7170 ****
--- 7287,7294 ----
  	 && (!switches (jump_target) || count == 0)
  	 && !*non_constant_p);
  
+   cleanup_cond ();
+ 
    return NULL_TREE;
  }
  
*************** check_for_return_continue (tree *tp, int
*** 9560,9565 ****
--- 9684,9690 ----
  
      case WHILE_STMT:
        *walk_subtrees = 0;
+       RECUR (WHILE_COND_PREP (t));
        RECUR (WHILE_COND (t));
        s = d->continue_stmt;
        b = d->break_stmt;
*************** check_for_return_continue (tree *tp, int
*** 9571,9576 ****
--- 9696,9702 ----
      case FOR_STMT:
        *walk_subtrees = 0;
        RECUR (FOR_INIT_STMT (t));
+       RECUR (FOR_COND_PREP (t));
        RECUR (FOR_COND (t));
        RECUR (FOR_EXPR (t));
        s = d->continue_stmt;
*************** potential_constant_expression_1 (tree t,
*** 10072,10077 ****
--- 10198,10205 ----
      case FOR_STMT:
        if (!RECUR (FOR_INIT_STMT (t), any))
  	return false;
+       if (!RECUR (FOR_COND_PREP (t), any))
+ 	return false;
        tmp = FOR_COND (t);
        if (!RECUR (tmp, rval))
  	return false;
*************** potential_constant_expression_1 (tree t,
*** 10099,10104 ****
--- 10227,10234 ----
  	return false;
        if (!RECUR (FOR_BODY (t), any))
  	return false;
+       if (!RECUR (FOR_COND_CLEANUP (t), any))
+ 	return false;
        if (breaks (jump_target) || continues (jump_target))
  	*jump_target = NULL_TREE;
        return true;
*************** potential_constant_expression_1 (tree t,
*** 10115,10120 ****
--- 10245,10252 ----
        return true;
  
      case WHILE_STMT:
+       if (!RECUR (WHILE_COND_PREP (t), any))
+ 	return false;
        tmp = WHILE_COND (t);
        if (!RECUR (tmp, rval))
  	return false;
*************** potential_constant_expression_1 (tree t,
*** 10136,10141 ****
--- 10268,10275 ----
  	}
        if (!RECUR (WHILE_BODY (t), any))
  	return false;
+       if (!RECUR (WHILE_COND_CLEANUP (t), any))
+ 	return false;
        if (breaks (jump_target) || continues (jump_target))
  	*jump_target = NULL_TREE;
        return true;
diff -Nrcpad gcc-14-20250509/gcc/cp/coroutines.cc gcc-14-20250516/gcc/cp/coroutines.cc
*** gcc-14-20250509/gcc/cp/coroutines.cc	Fri May  9 22:32:12 2025
--- gcc-14-20250516/gcc/cp/coroutines.cc	Fri May 16 22:32:09 2025
*************** coro_rewrite_function_body (location_t f
*** 4460,4466 ****
        tree i_a_r_c
  	= coro_build_artificial_var (fn_start, coro_frame_i_a_r_c_id,
  				     boolean_type_node, orig,
! 				     boolean_false_node);
        DECL_CHAIN (i_a_r_c) = var_list;
        var_list = i_a_r_c;
        add_decl_expr (i_a_r_c);
--- 4460,4466 ----
        tree i_a_r_c
  	= coro_build_artificial_var (fn_start, coro_frame_i_a_r_c_id,
  				     boolean_type_node, orig,
! 				     NULL_TREE);
        DECL_CHAIN (i_a_r_c) = var_list;
        var_list = i_a_r_c;
        add_decl_expr (i_a_r_c);
*************** morph_fn_to_coro (tree orig, tree *resum
*** 4779,4788 ****
    tree coro_gro_live
      = coro_build_artificial_var (fn_start, "_Coro_gro_live",
  				 boolean_type_node, orig, boolean_false_node);
- 
    DECL_CHAIN (coro_gro_live) = varlist;
    varlist = coro_gro_live;
  
    /* Collected the scope vars we need ... only one for now. */
    BIND_EXPR_VARS (ramp_bind) = nreverse (varlist);
  
--- 4779,4793 ----
    tree coro_gro_live
      = coro_build_artificial_var (fn_start, "_Coro_gro_live",
  				 boolean_type_node, orig, boolean_false_node);
    DECL_CHAIN (coro_gro_live) = varlist;
    varlist = coro_gro_live;
  
+   tree coro_before_return
+     = coro_build_artificial_var (fn_start, "_Coro_before_return",
+ 				 boolean_type_node, orig, boolean_true_node);
+   DECL_CHAIN (coro_before_return) = varlist;
+   varlist = coro_before_return;
+ 
    /* Collected the scope vars we need ... only one for now. */
    BIND_EXPR_VARS (ramp_bind) = nreverse (varlist);
  
*************** morph_fn_to_coro (tree orig, tree *resum
*** 4811,4816 ****
--- 4816,4822 ----
        }
    add_decl_expr (coro_promise_live);
    add_decl_expr (coro_gro_live);
+   add_decl_expr (coro_before_return);
  
    /* The CO_FRAME internal function is a mechanism to allow the middle end
       to adjust the allocation in response to optimizations.  We provide the
*************** morph_fn_to_coro (tree orig, tree *resum
*** 4964,4971 ****
  
    tree allocated = build1 (CONVERT_EXPR, coro_frame_ptr, new_fn);
    tree r = cp_build_init_expr (coro_fp, allocated);
!   r = coro_build_cvt_void_expr_stmt (r, fn_start);
!   add_stmt (r);
  
    /* If the user provided a method to return an object on alloc fail, then
       check the returned pointer and call the func if it's null.
--- 4970,4979 ----
  
    tree allocated = build1 (CONVERT_EXPR, coro_frame_ptr, new_fn);
    tree r = cp_build_init_expr (coro_fp, allocated);
!   finish_expr_stmt (r);
! 
!   /* deref the frame pointer, to use in member access code.  */
!   tree deref_fp = build_x_arrow (fn_start, coro_fp, tf_warning_or_error);
  
    /* If the user provided a method to return an object on alloc fail, then
       check the returned pointer and call the func if it's null.
*************** morph_fn_to_coro (tree orig, tree *resum
*** 5001,5016 ****
       destruction in the case that promise or g.r.o setup fails or an exception
       is thrown from the initial suspend expression.  */
    tree ramp_cleanup = NULL_TREE;
    if (flag_exceptions)
      {
        ramp_cleanup = build_stmt (fn_start, TRY_BLOCK, NULL, NULL);
        add_stmt (ramp_cleanup);
        TRY_STMTS (ramp_cleanup) = push_stmt_list ();
      }
  
-   /* deref the frame pointer, to use in member access code.  */
-   tree deref_fp = build_x_arrow (fn_start, coro_fp, tf_warning_or_error);
- 
    /* For now, once allocation has succeeded we always assume that this needs
       destruction, there's no impl. for frame allocation elision.  */
    tree fnf_m = lookup_member (coro_frame_type, coro_frame_needs_free_id,
--- 5009,5030 ----
       destruction in the case that promise or g.r.o setup fails or an exception
       is thrown from the initial suspend expression.  */
    tree ramp_cleanup = NULL_TREE;
+   tree iarc_x = NULL_TREE;
    if (flag_exceptions)
      {
+       iarc_x = lookup_member (coro_frame_type, coro_frame_i_a_r_c_id,
+ 		     /*protect=*/1, /*want_type=*/0, tf_warning_or_error);
+       iarc_x
+ 	= build_class_member_access_expr (deref_fp, iarc_x, NULL_TREE, false,
+ 					  tf_warning_or_error);
+       r = cp_build_init_expr (iarc_x, boolean_false_node);
+       finish_expr_stmt (r);
+ 
        ramp_cleanup = build_stmt (fn_start, TRY_BLOCK, NULL, NULL);
        add_stmt (ramp_cleanup);
        TRY_STMTS (ramp_cleanup) = push_stmt_list ();
      }
  
    /* For now, once allocation has succeeded we always assume that this needs
       destruction, there's no impl. for frame allocation elision.  */
    tree fnf_m = lookup_member (coro_frame_type, coro_frame_needs_free_id,
*************** morph_fn_to_coro (tree orig, tree *resum
*** 5018,5025 ****
    tree fnf_x = build_class_member_access_expr (deref_fp, fnf_m, NULL_TREE,
  					       false, tf_warning_or_error);
    r = cp_build_init_expr (fnf_x, boolean_true_node);
!   r = coro_build_cvt_void_expr_stmt (r, fn_start);
!   add_stmt (r);
  
    /* Put the resumer and destroyer functions in.  */
  
--- 5032,5038 ----
    tree fnf_x = build_class_member_access_expr (deref_fp, fnf_m, NULL_TREE,
  					       false, tf_warning_or_error);
    r = cp_build_init_expr (fnf_x, boolean_true_node);
!   finish_expr_stmt (r);
  
    /* Put the resumer and destroyer functions in.  */
  
*************** morph_fn_to_coro (tree orig, tree *resum
*** 5305,5310 ****
--- 5318,5328 ----
       either as the return value (if it's the same type) or to the CTOR
       for an object of the return type.  */
  
+   r = build_modify_expr (fn_start, coro_before_return, boolean_type_node,
+ 			 INIT_EXPR, fn_start, boolean_false_node,
+ 			 boolean_type_node);
+   finish_expr_stmt (r);
+ 
    /* We must manage the cleanups ourselves, because the responsibility for
       them changes after the initial suspend.  However, any use of
       cxx_maybe_build_cleanup () can set the throwing_cleanup flag.  */
*************** morph_fn_to_coro (tree orig, tree *resum
*** 5351,5356 ****
--- 5369,5380 ----
  	  add_stmt (gro_d_if);
  	}
  
+       tree gating_if = begin_if_stmt ();
+       tree gate = build1 (TRUTH_NOT_EXPR, boolean_type_node, iarc_x);
+       gate = build2 (TRUTH_AND_EXPR, boolean_type_node, coro_before_return,
+ 		     gate);
+       finish_if_stmt_cond (gate, gating_if);
+ 
        /* If the promise is live, then run its dtor if that's available.  */
        if (promise_dtor && promise_dtor != error_mark_node)
  	{
*************** morph_fn_to_coro (tree orig, tree *resum
*** 5389,5394 ****
--- 5413,5421 ----
        tree del_coro_fr = coro_get_frame_dtor (coro_fp, orig, frame_size,
  					      promise_type, fn_start);
        finish_expr_stmt (del_coro_fr);
+       finish_then_clause (gating_if);
+       finish_if_stmt (gating_if);
+ 
        tree rethrow = build_throw (fn_start, NULL_TREE, tf_warning_or_error);
        suppress_warning (rethrow);
        finish_expr_stmt (rethrow);
diff -Nrcpad gcc-14-20250509/gcc/cp/cp-gimplify.cc gcc-14-20250516/gcc/cp/cp-gimplify.cc
*** gcc-14-20250509/gcc/cp/cp-gimplify.cc	Fri May  9 22:32:12 2025
--- gcc-14-20250516/gcc/cp/cp-gimplify.cc	Fri May 16 22:32:09 2025
*************** taking_address_of_imm_fn_error (tree exp
*** 1179,1184 ****
--- 1179,1209 ----
    maybe_explain_promoted_consteval (loc, decl);
  }
  
+ /* Build up an INIT_EXPR to initialize the object of a constructor call that
+    has been folded to a constant value.  CALL is the CALL_EXPR for the
+    constructor call; INIT is the value.  */
+ 
+ static tree
+ cp_build_init_expr_for_ctor (tree call, tree init)
+ {
+   tree a = CALL_EXPR_ARG (call, 0);
+   if (is_dummy_object (a))
+     return init;
+   const bool return_this = targetm.cxx.cdtor_returns_this ();
+   const location_t loc = EXPR_LOCATION (call);
+   if (return_this)
+     a = cp_save_expr (a);
+   tree s = build_fold_indirect_ref_loc (loc, a);
+   init = cp_build_init_expr (s, init);
+   if (return_this)
+     {
+       init = build2_loc (loc, COMPOUND_EXPR, TREE_TYPE (call), init,
+ 			 fold_convert_loc (loc, TREE_TYPE (call), a));
+       suppress_warning (init);
+     }
+   return init;
+ }
+ 
  /* A subroutine of cp_fold_r to handle immediate functions.  */
  
  static tree
*************** cp_fold_immediate_r (tree *stmt_p, int *
*** 1294,1300 ****
  	}
        /* We've evaluated the consteval function call.  */
        if (call_p)
! 	*stmt_p = e;
      }
    /* We've encountered a function call that may turn out to be consteval
       later.  Store its caller so that we can ensure that the call is
--- 1319,1330 ----
  	}
        /* We've evaluated the consteval function call.  */
        if (call_p)
! 	{
! 	  if (code == CALL_EXPR && DECL_CONSTRUCTOR_P (decl))
! 	    *stmt_p = cp_build_init_expr_for_ctor (stmt, e);
! 	  else
! 	    *stmt_p = e;
! 	}
      }
    /* We've encountered a function call that may turn out to be consteval
       later.  Store its caller so that we can ensure that the call is
*************** cp_fold (tree x, fold_flags_t flags)
*** 3428,3448 ****
          if (TREE_CODE (r) != CALL_EXPR)
  	  {
  	    if (DECL_CONSTRUCTOR_P (callee))
! 	      {
! 		loc = EXPR_LOCATION (x);
! 		tree a = CALL_EXPR_ARG (x, 0);
! 		bool return_this = targetm.cxx.cdtor_returns_this ();
! 		if (return_this)
! 		  a = cp_save_expr (a);
! 		tree s = build_fold_indirect_ref_loc (loc, a);
! 		r = cp_build_init_expr (s, r);
! 		if (return_this)
! 		  {
! 		    r = build2_loc (loc, COMPOUND_EXPR, TREE_TYPE (x), r,
! 				    fold_convert_loc (loc, TREE_TYPE (x), a));
! 		    suppress_warning (r);
! 		  }
! 	      }
  	    x = r;
  	    break;
  	  }
--- 3458,3464 ----
          if (TREE_CODE (r) != CALL_EXPR)
  	  {
  	    if (DECL_CONSTRUCTOR_P (callee))
! 	      r = cp_build_init_expr_for_ctor (x, r);
  	    x = r;
  	    break;
  	  }
diff -Nrcpad gcc-14-20250509/gcc/cp/optimize.cc gcc-14-20250516/gcc/cp/optimize.cc
*** gcc-14-20250509/gcc/cp/optimize.cc	Fri May  9 22:32:12 2025
--- gcc-14-20250516/gcc/cp/optimize.cc	Fri May 16 22:32:09 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-14-20250509/gcc/cp/parser.cc gcc-14-20250516/gcc/cp/parser.cc
*** gcc-14-20250509/gcc/cp/parser.cc	Fri May  9 22:32:12 2025
--- gcc-14-20250516/gcc/cp/parser.cc	Fri May 16 22:32:09 2025
*************** cp_parser_late_return_type_opt (cp_parse
*** 24925,24930 ****
--- 24925,24950 ----
        /* Consume the ->.  */
        cp_lexer_consume_token (parser->lexer);
  
+       /* We may be in the context of parsing a parameter declaration,
+ 	 namely, its declarator.  auto_is_implicit_function_template_parm_p
+ 	 will be disabled in that case.  But for code like
+ 
+ 	   int g (auto fp() -> auto);
+ 
+ 	 we have to re-enable the flag for the trailing auto.  However, that
+ 	 only applies for the outermost trailing auto in a parameter clause; in
+ 
+ 	   int f2 (auto fp(auto fp2() -> auto) -> auto);
+ 
+ 	 the inner -> auto should not be synthesized.  */
+       int i = 0;
+       for (cp_binding_level *b = current_binding_level;
+ 	   b->kind == sk_function_parms; b = b->level_chain)
+ 	++i;
+       auto cleanup = make_temp_override
+ 	(parser->auto_is_implicit_function_template_parm_p,
+ 	 (i == 2 && !current_function_decl));
+ 
        type = cp_parser_trailing_type_id (parser);
      }
  
*************** cp_parser_parameter_declaration (cp_pars
*** 25668,25682 ****
  				&decl_specifiers,
  				&declares_class_or_enum);
  
-   /* [dcl.spec.auto.general]: "A placeholder-type-specifier of the form
-      type-constraint opt auto can be used as a decl-specifier of the
-      decl-specifier-seq of a parameter-declaration of a function declaration
-      or lambda-expression..." but we must not synthesize an implicit template
-      type parameter in its declarator.  That is, in "void f(auto[auto{10}]);"
-      we want to synthesize only the first auto.  */
-   auto cleanup = make_temp_override
-     (parser->auto_is_implicit_function_template_parm_p, false);
- 
    /* Complain about missing 'typename' or other invalid type names.  */
    if (!decl_specifiers.any_type_specifiers_p
        && cp_parser_parse_and_diagnose_invalid_type_name (parser))
--- 25688,25693 ----
*************** cp_parser_parameter_declaration (cp_pars
*** 25690,25695 ****
--- 25701,25716 ----
        return NULL;
      }
  
+   /* [dcl.spec.auto.general]: "A placeholder-type-specifier of the form
+      type-constraint opt auto can be used as a decl-specifier of the
+      decl-specifier-seq of a parameter-declaration of a function declaration
+      or lambda-expression..." but we must not synthesize an implicit template
+      type parameter in its declarator (except the trailing-return-type).
+      That is, in "void f(auto[auto{10}]);" we want to synthesize only the
+      first auto.  */
+   auto cleanup = make_temp_override
+     (parser->auto_is_implicit_function_template_parm_p, false);
+ 
    /* Peek at the next token.  */
    token = cp_lexer_peek_token (parser->lexer);
  
*************** cp_parser_class_head (cp_parser* parser,
*** 27729,27744 ****
    if (cp_lexer_next_token_is (parser->lexer, CPP_COLON))
      {
        if (type)
! 	{
! 	  pushclass (type);
! 	  start_lambda_scope (TYPE_NAME (type));
! 	}
        bases = cp_parser_base_clause (parser);
        if (type)
! 	{
! 	  finish_lambda_scope ();
! 	  popclass ();
! 	}
      }
    else
      bases = NULL_TREE;
--- 27750,27759 ----
    if (cp_lexer_next_token_is (parser->lexer, CPP_COLON))
      {
        if (type)
! 	pushclass (type);
        bases = cp_parser_base_clause (parser);
        if (type)
! 	popclass ();
      }
    else
      bases = NULL_TREE;
diff -Nrcpad gcc-14-20250509/gcc/cp/pt.cc gcc-14-20250516/gcc/cp/pt.cc
*** gcc-14-20250509/gcc/cp/pt.cc	Fri May  9 22:32:12 2025
--- gcc-14-20250516/gcc/cp/pt.cc	Fri May 16 22:32:09 2025
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 21277,21284 ****
  	  {
  	    r = finish_non_static_data_member (member, object, NULL_TREE,
  					       complain);
! 	    if (TREE_CODE (r) == COMPONENT_REF)
! 	      REF_PARENTHESIZED_P (r) = REF_PARENTHESIZED_P (t);
  	    RETURN (r);
  	  }
  	else if (type_dependent_expression_p (object))
--- 21277,21284 ----
  	  {
  	    r = finish_non_static_data_member (member, object, NULL_TREE,
  					       complain);
! 	    if (REF_PARENTHESIZED_P (t))
! 	      r = force_paren_expr (r);
  	    RETURN (r);
  	  }
  	else if (type_dependent_expression_p (object))
diff -Nrcpad gcc-14-20250509/gcc/cp/semantics.cc gcc-14-20250516/gcc/cp/semantics.cc
*** gcc-14-20250509/gcc/cp/semantics.cc	Fri May  9 22:32:12 2025
--- gcc-14-20250516/gcc/cp/semantics.cc	Fri May 16 22:32:09 2025
*************** add_decl_expr (tree decl)
*** 601,606 ****
--- 601,625 ----
    add_stmt (r);
  }
  
+ /* Set EXPR_LOCATION on one cleanup T to LOC.  */
+ 
+ static void
+ set_one_cleanup_loc (tree t, location_t loc)
+ {
+   if (!t)
+     return;
+   if (TREE_CODE (t) != POSTCONDITION_STMT)
+     protected_set_expr_location (t, loc);
+   /* Avoid locus differences for C++ cdtor calls depending on whether
+      cdtor_returns_this: a conversion to void is added to discard the return
+      value, and this conversion ends up carrying the location, and when it
+      gets discarded, the location is lost.  So hold it in the call as well.  */
+   if (TREE_CODE (t) == NOP_EXPR
+       && TREE_TYPE (t) == void_type_node
+       && TREE_CODE (TREE_OPERAND (t, 0)) == CALL_EXPR)
+     protected_set_expr_location (TREE_OPERAND (t, 0), loc);
+ }
+ 
  /* Set EXPR_LOCATION of the cleanups of any CLEANUP_STMT in STMTS to LOC.  */
  
  static void
*************** set_cleanup_locs (tree stmts, location_t
*** 608,625 ****
  {
    if (TREE_CODE (stmts) == CLEANUP_STMT)
      {
!       tree t = CLEANUP_EXPR (stmts);
!       if (t && TREE_CODE (t) != POSTCONDITION_STMT)
! 	protected_set_expr_location (t, loc);
!       /* Avoid locus differences for C++ cdtor calls depending on whether
! 	 cdtor_returns_this: a conversion to void is added to discard the return
! 	 value, and this conversion ends up carrying the location, and when it
! 	 gets discarded, the location is lost.  So hold it in the call as
! 	 well.  */
!       if (TREE_CODE (t) == NOP_EXPR
! 	  && TREE_TYPE (t) == void_type_node
! 	  && TREE_CODE (TREE_OPERAND (t, 0)) == CALL_EXPR)
! 	protected_set_expr_location (TREE_OPERAND (t, 0), loc);
        set_cleanup_locs (CLEANUP_BODY (stmts), loc);
      }
    else if (TREE_CODE (stmts) == STATEMENT_LIST)
--- 627,633 ----
  {
    if (TREE_CODE (stmts) == CLEANUP_STMT)
      {
!       set_one_cleanup_loc (CLEANUP_EXPR (stmts), loc);
        set_cleanup_locs (CLEANUP_BODY (stmts), loc);
      }
    else if (TREE_CODE (stmts) == STATEMENT_LIST)
*************** finish_cond (tree *cond_p, tree expr)
*** 777,813 ****
    *cond_p = expr;
  }
  
! /* If *COND_P specifies a conditional with a declaration, transform the
!    loop such that
  	    while (A x = 42) { }
  	    for (; A x = 42;) { }
!    becomes
! 	    while (true) { A x = 42; if (!x) break; }
! 	    for (;;) { A x = 42; if (!x) break; }
!    The statement list for BODY will be empty if the conditional did
     not declare anything.  */
  
  static void
! simplify_loop_decl_cond (tree *cond_p, tree body)
  {
!   tree cond, if_stmt;
! 
!   if (!TREE_SIDE_EFFECTS (body))
      return;
  
!   cond = *cond_p;
!   *cond_p = boolean_true_node;
  
!   if_stmt = begin_if_stmt ();
!   cond_p = &cond;
!   while (TREE_CODE (*cond_p) == ANNOTATE_EXPR)
!     cond_p = &TREE_OPERAND (*cond_p, 0);
!   *cond_p = cp_build_unary_op (TRUTH_NOT_EXPR, *cond_p, false,
! 			       tf_warning_or_error);
!   finish_if_stmt_cond (cond, if_stmt);
!   finish_break_stmt ();
!   finish_then_clause (if_stmt);
!   finish_if_stmt (if_stmt);
  }
  
  /* Finish a goto-statement.  */
--- 785,894 ----
    *cond_p = expr;
  }
  
! /* If loop condition specifies a conditional with a declaration,
!    such as
  	    while (A x = 42) { }
  	    for (; A x = 42;) { }
!    move the *BODY_P statements as a BIND_EXPR into {FOR,WHILE}_COND_PREP
!    and if there are any CLEANUP_STMT at the end, remember their count in
!    {FOR,WHILE}_COND_CLEANUP.
!    genericize_c_loop will then handle it appropriately.  In particular,
!    the {FOR,WHILE}_COND, {FOR,WHILE}_BODY, if used continue label and
!    FOR_EXPR will be appended into the {FOR,WHILE}_COND_PREP BIND_EXPR,
!    but it can't be done too early because only the actual body should
!    bind BREAK_STMT and CONTINUE_STMT to the inner loop.
!    The statement list for *BODY will be empty if the conditional did
     not declare anything.  */
  
  static void
! adjust_loop_decl_cond (tree *body_p, tree *prep_p, tree *cleanup_p)
  {
!   if (!TREE_SIDE_EFFECTS (*body_p))
      return;
  
!   gcc_assert (!processing_template_decl);
!   *prep_p = *body_p;
!   if (*prep_p != cur_stmt_list)
!     {
!       /* There can be just one CLEANUP_STMT, or there could be multiple
! 	 nested CLEANUP_STMTs, e.g. for structured bindings used as
! 	 condition.  */
!       gcc_assert (stmt_list_stack->length () > 1);
!       for (unsigned i = stmt_list_stack->length () - 2; ; --i)
! 	{
! 	  tree t = (*stmt_list_stack)[i];
! 	  tree_stmt_iterator last = tsi_last (t);
! 	  gcc_assert (tsi_one_before_end_p (last)
! 		      && TREE_CODE (tsi_stmt (last)) == CLEANUP_STMT
! 		      && (CLEANUP_BODY (tsi_stmt (last))
! 			  == (*stmt_list_stack)[i + 1])
! 		      && !CLEANUP_EH_ONLY (tsi_stmt (last)));
! 	  if (t == *prep_p)
! 	    {
! 	      *cleanup_p = build_int_cst (long_unsigned_type_node,
! 					  stmt_list_stack->length () - 1 - i);
! 	      break;
! 	    }
! 	  gcc_assert (i >= 1);
! 	}
!     }
!   current_binding_level->keep = true;
!   tree_stmt_iterator iter = tsi_last (cur_stmt_list);
!   /* Temporarily store in {FOR,WHILE}_BODY the last statement of
!      the innnermost statement list or NULL if it has no statement.
!      This is used in finish_loop_cond_prep to find out the splitting
!      point and then {FOR,WHILE}_BODY will be changed to the actual
!      body.  */
!   if (tsi_end_p (iter))
!     *body_p = NULL_TREE;
!   else
!     *body_p = tsi_stmt (iter);
! }
  
! /* Finalize {FOR,WHILE}_{BODY,COND_PREP} after the loop body.
!    The above function initialized *BODY_P to the last statement
!    in *PREP_P at that point.
!    Call do_poplevel on *PREP_P and move everything after that
!    former last statement into *BODY_P.  genericize_c_loop
!    will later put those parts back together.
!    CLEANUP is {FOR,WHILE}_COND_CLEANUP.  */
! 
! static void
! finish_loop_cond_prep (tree *body_p, tree *prep_p, tree cleanup)
! {
!   *prep_p = do_poplevel (*prep_p);
!   gcc_assert (TREE_CODE (*prep_p) == BIND_EXPR);
!   if (BIND_EXPR_BODY (*prep_p) == *body_p)
!     {
!       gcc_assert (cleanup == NULL_TREE);
!       *body_p = build_empty_stmt (input_location);
!       return;
!     }
!   tree stmt_list = BIND_EXPR_BODY (*prep_p);
!   gcc_assert (TREE_CODE (stmt_list) == STATEMENT_LIST);
!   if (cleanup)
!     {
!       tree_stmt_iterator iter = tsi_last (stmt_list);
!       gcc_assert (TREE_CODE (tsi_stmt (iter)) == CLEANUP_STMT);
!       for (unsigned depth = tree_to_uhwi (cleanup); depth > 1; --depth)
! 	{
! 	  gcc_assert (TREE_CODE (CLEANUP_BODY (tsi_stmt (iter)))
! 		      == STATEMENT_LIST);
! 	  iter = tsi_last (CLEANUP_BODY (tsi_stmt (iter)));
! 	  gcc_assert (TREE_CODE (tsi_stmt (iter)) == CLEANUP_STMT);
! 	}
!       if (*body_p == NULL_TREE)
! 	{
! 	  *body_p = CLEANUP_BODY (tsi_stmt (iter));
! 	  CLEANUP_BODY (tsi_stmt (iter)) = build_empty_stmt (input_location);
! 	  return;
! 	}
!       stmt_list = CLEANUP_BODY (tsi_stmt (iter));
!     }
!   tree_stmt_iterator iter = tsi_start (stmt_list);
!   while (tsi_stmt (iter) != *body_p)
!     tsi_next (&iter);
!   *body_p = tsi_split_stmt_list (input_location, iter);
  }
  
  /* Finish a goto-statement.  */
*************** tree
*** 1272,1278 ****
  begin_while_stmt (void)
  {
    tree r;
!   r = build_stmt (input_location, WHILE_STMT, NULL_TREE, NULL_TREE);
    add_stmt (r);
    WHILE_BODY (r) = do_pushlevel (sk_block);
    begin_cond (&WHILE_COND (r));
--- 1353,1360 ----
  begin_while_stmt (void)
  {
    tree r;
!   r = build_stmt (input_location, WHILE_STMT, NULL_TREE, NULL_TREE,
! 		  NULL_TREE, NULL_TREE);
    add_stmt (r);
    WHILE_BODY (r) = do_pushlevel (sk_block);
    begin_cond (&WHILE_COND (r));
*************** finish_while_stmt_cond (tree cond, tree
*** 1310,1316 ****
  				      build_int_cst (integer_type_node,
  						     annot_expr_no_vector_kind),
  				      integer_zero_node);
!   simplify_loop_decl_cond (&WHILE_COND (while_stmt), WHILE_BODY (while_stmt));
  }
  
  /* Finish a while-statement, which may be given by WHILE_STMT.  */
--- 1392,1400 ----
  				      build_int_cst (integer_type_node,
  						     annot_expr_no_vector_kind),
  				      integer_zero_node);
!   adjust_loop_decl_cond (&WHILE_BODY (while_stmt),
! 			 &WHILE_COND_PREP (while_stmt),
! 			 &WHILE_COND_CLEANUP (while_stmt));
  }
  
  /* Finish a while-statement, which may be given by WHILE_STMT.  */
*************** void
*** 1319,1325 ****
  finish_while_stmt (tree while_stmt)
  {
    end_maybe_infinite_loop (boolean_true_node);
!   WHILE_BODY (while_stmt) = do_poplevel (WHILE_BODY (while_stmt));
    finish_loop_cond (&WHILE_COND (while_stmt), WHILE_BODY (while_stmt));
  }
  
--- 1403,1414 ----
  finish_while_stmt (tree while_stmt)
  {
    end_maybe_infinite_loop (boolean_true_node);
!   if (WHILE_COND_PREP (while_stmt))
!     finish_loop_cond_prep (&WHILE_BODY (while_stmt),
! 			   &WHILE_COND_PREP (while_stmt),
! 			   WHILE_COND_CLEANUP (while_stmt));
!   else
!     WHILE_BODY (while_stmt) = do_poplevel (WHILE_BODY (while_stmt));
    finish_loop_cond (&WHILE_COND (while_stmt), WHILE_BODY (while_stmt));
  }
  
*************** begin_for_stmt (tree scope, tree init)
*** 1450,1456 ****
    tree r;
  
    r = build_stmt (input_location, FOR_STMT, NULL_TREE, NULL_TREE,
! 		  NULL_TREE, NULL_TREE, NULL_TREE);
  
    if (scope == NULL_TREE)
      {
--- 1539,1545 ----
    tree r;
  
    r = build_stmt (input_location, FOR_STMT, NULL_TREE, NULL_TREE,
! 		  NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE);
  
    if (scope == NULL_TREE)
      {
*************** finish_for_cond (tree cond, tree for_stm
*** 1508,1514 ****
  				  build_int_cst (integer_type_node,
  						 annot_expr_no_vector_kind),
  				  integer_zero_node);
!   simplify_loop_decl_cond (&FOR_COND (for_stmt), FOR_BODY (for_stmt));
  }
  
  /* Finish the increment-EXPRESSION in a for-statement, which may be
--- 1597,1604 ----
  				  build_int_cst (integer_type_node,
  						 annot_expr_no_vector_kind),
  				  integer_zero_node);
!   adjust_loop_decl_cond (&FOR_BODY (for_stmt), &FOR_COND_PREP (for_stmt),
! 			 &FOR_COND_CLEANUP (for_stmt));
  }
  
  /* Finish the increment-EXPRESSION in a for-statement, which may be
*************** finish_for_stmt (tree for_stmt)
*** 1555,1561 ****
      RANGE_FOR_BODY (for_stmt) = do_poplevel (RANGE_FOR_BODY (for_stmt));
    else
      {
!       FOR_BODY (for_stmt) = do_poplevel (FOR_BODY (for_stmt));
        if (FOR_COND (for_stmt))
  	finish_loop_cond (&FOR_COND (for_stmt),
  			  FOR_EXPR (for_stmt) ? integer_one_node
--- 1645,1656 ----
      RANGE_FOR_BODY (for_stmt) = do_poplevel (RANGE_FOR_BODY (for_stmt));
    else
      {
!       if (FOR_COND_PREP (for_stmt))
! 	finish_loop_cond_prep (&FOR_BODY (for_stmt),
! 			       &FOR_COND_PREP (for_stmt),
! 			       FOR_COND_CLEANUP (for_stmt));
!       else
! 	FOR_BODY (for_stmt) = do_poplevel (FOR_BODY (for_stmt));
        if (FOR_COND (for_stmt))
  	finish_loop_cond (&FOR_COND (for_stmt),
  			  FOR_EXPR (for_stmt) ? integer_one_node
diff -Nrcpad gcc-14-20250509/gcc/cp/typeck.cc gcc-14-20250516/gcc/cp/typeck.cc
*** gcc-14-20250509/gcc/cp/typeck.cc	Fri May  9 22:32:12 2025
--- gcc-14-20250516/gcc/cp/typeck.cc	Fri May 16 22:32:09 2025
*************** tree
*** 4824,4829 ****
--- 4824,4834 ----
  build_omp_array_section (location_t loc, tree array_expr, tree index,
  			 tree length)
  {
+   if (TREE_CODE (array_expr) == TYPE_DECL
+       || type_dependent_expression_p (array_expr))
+     return build3_loc (loc, OMP_ARRAY_SECTION, NULL_TREE, array_expr, index,
+ 		       length);
+ 
    tree type = TREE_TYPE (array_expr);
    gcc_assert (type);
    type = non_reference (type);
diff -Nrcpad gcc-14-20250509/gcc/diagnostic.cc gcc-14-20250516/gcc/diagnostic.cc
*** gcc-14-20250509/gcc/diagnostic.cc	Fri May  9 22:32:17 2025
--- gcc-14-20250516/gcc/diagnostic.cc	Fri May 16 22:32:10 2025
*************** diagnostic_context::report_diagnostic (d
*** 1536,1553 ****
    if (diagnostic->kind == DK_NOTE && m_inhibit_notes_p)
      return false;
  
-   if (m_lock > 0)
-     {
-       /* If we're reporting an ICE in the middle of some other error,
- 	 try to flush out the previous error, then let this one
- 	 through.  Don't do this more than once.  */
-       if ((diagnostic->kind == DK_ICE || diagnostic->kind == DK_ICE_NOBT)
- 	  && m_lock == 1)
- 	pp_newline_and_flush (this->printer);
-       else
- 	error_recursion ();
-     }
- 
    /* If the user requested that warnings be treated as errors, so be
       it.  Note that we do this before the next block so that
       individual warnings can be overridden back to warnings with
--- 1536,1541 ----
*************** diagnostic_context::report_diagnostic (d
*** 1575,1580 ****
--- 1563,1580 ----
    if (diagnostic->kind != DK_NOTE && diagnostic->kind != DK_ICE)
      diagnostic_check_max_errors (this);
  
+   if (m_lock > 0)
+     {
+       /* If we're reporting an ICE in the middle of some other error,
+ 	 try to flush out the previous error, then let this one
+ 	 through.  Don't do this more than once.  */
+       if ((diagnostic->kind == DK_ICE || diagnostic->kind == DK_ICE_NOBT)
+ 	  && m_lock == 1)
+ 	pp_newline_and_flush (this->printer);
+       else
+ 	error_recursion ();
+     }
+ 
    m_lock++;
  
    if (diagnostic->kind == DK_ICE || diagnostic->kind == DK_ICE_NOBT)
diff -Nrcpad gcc-14-20250509/gcc/doc/invoke.texi gcc-14-20250516/gcc/doc/invoke.texi
*** gcc-14-20250509/gcc/doc/invoke.texi	Fri May  9 22:32:17 2025
--- gcc-14-20250516/gcc/doc/invoke.texi	Fri May 16 22:32:10 2025
*************** By default, the dump will contain messag
*** 20180,20185 ****
--- 20180,20272 ----
  optimizations (equivalent to @option{-optimized}) together with
  low-level details about the analysis.
  
+ @opindex fdump-ipa-clones
+ @item -fdump-ipa-clones
+ 
+ Create a dump file containing information about creation of call graph
+ node clones and removals of call graph nodes during inter-procedural
+ optimizations and transformations.  Its main intended use is that tools
+ that create live-patches can determine the set of functions that need to
+ be live-patched to completely replace a particular function (see
+ @option{-flive-patching}).  The file name is generated by appending
+ suffix @code{ipa-clones} to the source file name, and the file is
+ created in the same directory as the output file.  Each entry in the
+ file is on a separate line containing semicolon separated fields.
+ 
+ In the case of call graph clone creation, the individual fields are:
+ 
+ @enumerate
+ @item
+ String @code{Callgraph clone}.
+ 
+ @item
+ Name of the function being cloned as it is presented to the assembler.
+ 
+ @item
+ A number that uniquely represents the function being cloned in the call
+ graph.  Note that the number is unique only within a compilation unit or
+ within whole-program analysis but is likely to be different in the two
+ phases.
+ 
+ @item
+ The file name of the source file where the function is defined.
+ 
+ @item
+ The line on which the function definition is located.
+ 
+ @item
+ The column where the function definition is located.
+ 
+ @item
+ Name of the new function clone as it is presented to the assembler.
+ 
+ @item
+ A number that uniquely represents the new function clone in the call
+ graph.  Note that the number is unique only within a compilation unit or
+ within whole-program analysis but is likely to be different in the two
+ phases.
+ 
+ @item
+ The file name of the source file where the source code location of the
+ new clone points to.
+ 
+ @item
+ The line to which the source code location of the new clone points to.
+ 
+ @item
+ The column to which the source code location of the new clone points to.
+ 
+ @item
+ A string that determines the reason for cloning.
+ 
+ @end enumerate
+ 
+ In the case of call graph clone removal, the individual fields are:
+ 
+ @enumerate
+ @item
+ String @code{Callgraph removal}.
+ 
+ @item
+ Name of the function being removed as it would be presented to the assembler.
+ 
+ @item
+ A number that uniquely represents the function being cloned in the call
+ graph.  Note that the number is unique only within a compilation unit or
+ within whole-program analysis but is likely to be different in the two
+ phases.
+ 
+ @item
+ The file name of the source file where the function is defined.
+ 
+ @item
+ The line on which the function definition is located.
+ 
+ @item
+ The column where the function definition is located.
+ 
+ @end enumerate
+ 
  @opindex fdump-lang
  @item -fdump-lang
  Dump language-specific information.  The file name is made by appending
diff -Nrcpad gcc-14-20250509/gcc/dse.cc gcc-14-20250516/gcc/dse.cc
*** gcc-14-20250509/gcc/dse.cc	Fri May  9 22:32:17 2025
--- gcc-14-20250516/gcc/dse.cc	Fri May 16 22:32:10 2025
*************** get_stored_val (store_info *store_info,
*** 1946,1952 ****
  				 copy_rtx (store_info->const_rhs));
    else if (VECTOR_MODE_P (read_mode) && VECTOR_MODE_P (store_mode)
      && known_le (GET_MODE_BITSIZE (read_mode), GET_MODE_BITSIZE (store_mode))
!     && targetm.modes_tieable_p (read_mode, store_mode))
      read_reg = gen_lowpart (read_mode, copy_rtx (store_info->rhs));
    else
      read_reg = extract_low_bits (read_mode, store_mode,
--- 1946,1954 ----
  				 copy_rtx (store_info->const_rhs));
    else if (VECTOR_MODE_P (read_mode) && VECTOR_MODE_P (store_mode)
      && known_le (GET_MODE_BITSIZE (read_mode), GET_MODE_BITSIZE (store_mode))
!     && targetm.modes_tieable_p (read_mode, store_mode)
!     && validate_subreg (read_mode, store_mode, copy_rtx (store_info->rhs),
! 			subreg_lowpart_offset (read_mode, store_mode)))
      read_reg = gen_lowpart (read_mode, copy_rtx (store_info->rhs));
    else
      read_reg = extract_low_bits (read_mode, store_mode,
diff -Nrcpad gcc-14-20250509/gcc/dwarf2out.cc gcc-14-20250516/gcc/dwarf2out.cc
*** gcc-14-20250509/gcc/dwarf2out.cc	Fri May  9 22:32:17 2025
--- gcc-14-20250516/gcc/dwarf2out.cc	Fri May 16 22:32:10 2025
*************** resolve_addr_in_expr (dw_attr_node *a, d
*** 30916,30922 ****
                return false;
              remove_addr_table_entry (loc->dw_loc_oprnd1.val_entry);
  	    loc->dw_loc_oprnd1.val_entry
! 	      = add_addr_table_entry (rtl, ate_kind_rtx);
            }
  	break;
        case DW_OP_const4u:
--- 30916,30923 ----
                return false;
              remove_addr_table_entry (loc->dw_loc_oprnd1.val_entry);
  	    loc->dw_loc_oprnd1.val_entry
! 	      = add_addr_table_entry (rtl, loc->dtprel
! 				      ? ate_kind_rtx_dtprel : ate_kind_rtx);
            }
  	break;
        case DW_OP_const4u:
diff -Nrcpad gcc-14-20250509/gcc/final.cc gcc-14-20250516/gcc/final.cc
*** gcc-14-20250509/gcc/final.cc	Fri May  9 22:32:17 2025
--- gcc-14-20250516/gcc/final.cc	Fri May 16 22:32:10 2025
*************** get_attr_length_1 (rtx_insn *insn, int (
*** 363,369 ****
  
        case CALL_INSN:
        case JUMP_INSN:
! 	length = fallback_fn (insn);
  	break;
  
        case INSN:
--- 363,373 ----
  
        case CALL_INSN:
        case JUMP_INSN:
! 	body = PATTERN (insn);
! 	if (GET_CODE (body) == ASM_INPUT || asm_noperands (body) >= 0)
! 	  length = asm_insn_count (body) * fallback_fn (insn);
! 	else
! 	  length = fallback_fn (insn);
  	break;
  
        case INSN:
diff -Nrcpad gcc-14-20250509/gcc/fortran/ChangeLog gcc-14-20250516/gcc/fortran/ChangeLog
*** gcc-14-20250509/gcc/fortran/ChangeLog	Fri May  9 22:32:17 2025
--- gcc-14-20250516/gcc/fortran/ChangeLog	Fri May 16 22:32:10 2025
***************
*** 1,3 ****
--- 1,31 ----
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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-12  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-05-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/119986
+ 	* expr.cc (is_subref_array): When searching for array references,
+ 	do not terminate early so that inquiry references to complex
+ 	components work.
+ 	* primary.cc (gfc_variable_attr): A substring reference can refer
+ 	to either a scalar or array character variable.  Adjust search
+ 	accordingly.
+ 
  2025-04-30  Harald Anlauf  <anlauf@gmx.de>
  
  	Backported from master:
diff -Nrcpad gcc-14-20250509/gcc/fortran/expr.cc gcc-14-20250516/gcc/fortran/expr.cc
*** gcc-14-20250509/gcc/fortran/expr.cc	Fri May  9 22:32:17 2025
--- gcc-14-20250516/gcc/fortran/expr.cc	Fri May 16 22:32:10 2025
*************** is_subref_array (gfc_expr * e)
*** 1168,1173 ****
--- 1168,1174 ----
  	 what follows cannot be a subreference array, unless there is a
  	 substring reference.  */
        if (!seen_array && ref->type == REF_COMPONENT
+ 	  && ref->next == NULL
  	  && ref->u.c.component->ts.type != BT_CHARACTER
  	  && ref->u.c.component->ts.type != BT_CLASS
  	  && !gfc_bt_struct (ref->u.c.component->ts.type))
diff -Nrcpad gcc-14-20250509/gcc/fortran/primary.cc gcc-14-20250516/gcc/fortran/primary.cc
*** gcc-14-20250509/gcc/fortran/primary.cc	Fri May  9 22:32:17 2025
--- gcc-14-20250516/gcc/fortran/primary.cc	Fri May 16 22:32:10 2025
*************** gfc_variable_attr (gfc_expr *expr, gfc_t
*** 2765,2770 ****
--- 2765,2771 ----
    gfc_symbol *sym;
    gfc_component *comp;
    bool has_inquiry_part;
+   bool has_substring_ref = false;
  
    if (expr->expr_type != EXPR_VARIABLE
        && expr->expr_type != EXPR_FUNCTION
*************** gfc_variable_attr (gfc_expr *expr, gfc_t
*** 2827,2833 ****
  
    has_inquiry_part = false;
    for (ref = expr->ref; ref; ref = ref->next)
!     if (ref->type == REF_INQUIRY)
        {
  	has_inquiry_part = true;
  	optional = false;
--- 2828,2839 ----
  
    has_inquiry_part = false;
    for (ref = expr->ref; ref; ref = ref->next)
!     if (ref->type == REF_SUBSTRING)
!       {
! 	has_substring_ref = true;
! 	optional = false;
!       }
!     else if (ref->type == REF_INQUIRY)
        {
  	has_inquiry_part = true;
  	optional = false;
*************** gfc_variable_attr (gfc_expr *expr, gfc_t
*** 2875,2883 ****
  	    *ts = comp->ts;
  	    /* Don't set the string length if a substring reference
  	       follows.  */
! 	    if (ts->type == BT_CHARACTER
! 		&& ref->next && ref->next->type == REF_SUBSTRING)
! 		ts->u.cl = NULL;
  	  }
  
  	if (comp->ts.type == BT_CLASS)
--- 2881,2888 ----
  	    *ts = comp->ts;
  	    /* Don't set the string length if a substring reference
  	       follows.  */
! 	    if (ts->type == BT_CHARACTER && has_substring_ref)
! 	      ts->u.cl = NULL;
  	  }
  
  	if (comp->ts.type == BT_CLASS)
diff -Nrcpad gcc-14-20250509/gcc/fortran/trans-intrinsic.cc gcc-14-20250516/gcc/fortran/trans-intrinsic.cc
*** gcc-14-20250509/gcc/fortran/trans-intrinsic.cc	Fri May  9 22:32:17 2025
--- gcc-14-20250516/gcc/fortran/trans-intrinsic.cc	Fri May 16 22:32:10 2025
*************** gfc_conv_intrinsic_dot_product (gfc_se *
*** 5208,5229 ****
  }
  
  
- /* 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.
--- 5208,5213 ----
*************** gfc_conv_intrinsic_minmaxloc (gfc_se * s
*** 5321,5327 ****
    tree lab1, lab2;
    tree b_if, b_else;
    gfc_loopinfo loop;
!   gfc_actual_arglist *actual;
    gfc_ss *arrayss;
    gfc_ss *maskss;
    gfc_se arrayse;
--- 5305,5312 ----
    tree lab1, lab2;
    tree b_if, b_else;
    gfc_loopinfo loop;
!   gfc_actual_arglist *array_arg, *dim_arg, *mask_arg, *kind_arg;
!   gfc_actual_arglist *back_arg;
    gfc_ss *arrayss;
    gfc_ss *maskss;
    gfc_se arrayse;
*************** gfc_conv_intrinsic_minmaxloc (gfc_se * s
*** 5334,5373 ****
    int n;
    bool optional_mask;
  
!   actual = expr->value.function.actual;
  
!   /* 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)
      {
        gfc_conv_intrinsic_funcall (se, expr);
        return;
      }
  
!   arrayexpr = actual->expr;
  
!   /* Special case for character maxloc.  Remove unneeded actual
!      arguments, then call a library function.  */
  
    if (arrayexpr->ts.type == BT_CHARACTER)
      {
!       gfc_actual_arglist *a;
!       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;
--- 5319,5357 ----
    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;
!   back_arg = kind_arg->next;
  
!   /* 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)
      {
        gfc_conv_intrinsic_funcall (se, expr);
        return;
      }
  
!   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)
      {
!       if (dim_arg->expr)
  	{
! 	  gfc_free_expr (dim_arg->expr);
! 	  dim_arg->expr = NULL;
  	}
        gfc_conv_intrinsic_funcall (se, expr);
        return;
*************** gfc_conv_intrinsic_minmaxloc (gfc_se * s
*** 5382,5394 ****
    arrayss = gfc_walk_expr (arrayexpr);
    gcc_assert (arrayss != gfc_ss_terminator);
  
!   actual = actual->next->next;
!   gcc_assert (actual);
!   maskexpr = actual->expr;
    optional_mask = maskexpr && maskexpr->expr_type == EXPR_VARIABLE
      && maskexpr->symtree->n.sym->attr.dummy
      && maskexpr->symtree->n.sym->attr.optional;
!   backexpr = actual->next->next->expr;
    nonempty = NULL;
    if (maskexpr && maskexpr->rank != 0)
      {
--- 5366,5376 ----
    arrayss = gfc_walk_expr (arrayexpr);
    gcc_assert (arrayss != gfc_ss_terminator);
  
!   maskexpr = mask_arg->expr;
    optional_mask = maskexpr && maskexpr->expr_type == EXPR_VARIABLE
      && maskexpr->symtree->n.sym->attr.dummy
      && maskexpr->symtree->n.sym->attr.optional;
!   backexpr = back_arg->expr;
    nonempty = NULL;
    if (maskexpr && maskexpr->rank != 0)
      {
diff -Nrcpad gcc-14-20250509/gcc/testsuite/ChangeLog gcc-14-20250516/gcc/testsuite/ChangeLog
*** gcc-14-20250509/gcc/testsuite/ChangeLog	Fri May  9 22:32:18 2025
--- gcc-14-20250516/gcc/testsuite/ChangeLog	Fri May 16 22:32:10 2025
***************
*** 1,3 ****
--- 1,199 ----
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/118623
+ 	* gcc.c-torture/execute/pr118623.c: New test.
+ 
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/118822
+ 	* g++.dg/expr/for9.C: New test.
+ 
+ 2025-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86769
+ 	* g++.dg/diagnostic/redeclaration-7.C: New test.
+ 	* g++.dg/expr/for3.C: New test.
+ 	* g++.dg/expr/for4.C: New test.
+ 	* g++.dg/expr/for5.C: New test.
+ 	* g++.dg/expr/for6.C: New test.
+ 	* g++.dg/expr/for7.C: New test.
+ 	* g++.dg/expr/for8.C: New test.
+ 	* g++.dg/ext/stmtexpr27.C: New test.
+ 	* g++.dg/cpp2a/constexpr-86769.C: New test.
+ 	* g++.dg/cpp26/name-independent-decl7.C: New test.
+ 	* g++.dg/cpp26/name-independent-decl8.C: New test.
+ 
+ 2025-05-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/113773
+ 	* g++.dg/coroutines/torture/pr113773.C: New test.
+ 
+ 2025-05-14  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/118245
+ 	* g++.dg/modules/lambda-7_a.H: Expect the test to fail.
+ 	* g++.dg/modules/lambda-7_b.C: Likewise.
+ 	* g++.dg/modules/lambda-7_c.C: Likewise.
+ 	* g++.dg/cpp2a/lambda-uneval23.C: New test.
+ 
+ 2025-05-14  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	Backported from master:
+ 	2024-11-18  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	PR c/112556
+ 	* gcc.dg/c11-null-pointer-constant-1.c,
+ 	gcc.dg/c23-null-pointer-constant-1.c: New tests.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/116379
+ 	* g++.dg/cpp1y/decltype-auto9.C: New test.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/117501
+ 	* g++.dg/cpp2a/consteval39.C: New test.
+ 	* g++.dg/cpp2a/consteval40.C: New test.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-02-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/117778
+ 	* g++.dg/cpp1y/lambda-generic-117778.C: New test.
+ 	* g++.dg/cpp2a/abbrev-fn2.C: New test.
+ 	* g++.dg/cpp2a/abbrev-fn3.C: New test.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/116960
+ 	PR c++/119303
+ 	* g++.dg/cpp2a/lambda-uneval26.C: New test.
+ 	* g++.dg/warn/undefined2.C: New test.
+ 
+ 2025-05-14  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-03-07  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/118775
+ 	* g++.dg/cpp2a/constexpr-new24.C: New test.
+ 	* g++.dg/cpp2a/constexpr-new25.C: New test.
+ 
+ 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-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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>
+ 
+ 	Backported from master:
+ 	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>
+ 
+ 	Backported from master:
+ 	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>
+ 
+ 	Backported from master:
+ 	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  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/118590
+ 	* g++.dg/goacc/pr118590.C: New test.
+ 
+ 2025-05-12  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-05-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/119986
+ 	* gfortran.dg/actual_array_subref.f90: New test.
+ 
+ 2025-05-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2025-05-06  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/119852
+ 	* gcc.dg/ipa/pr119852.c: New test.
+ 
+ 2025-05-11  Pan Li  <pan2.li@intel.com>
+ 
+ 	Backported from master:
+ 	2024-05-20  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/base/bug-6.c: New test.
+ 
+ 2025-05-11  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	Backported from master:
+ 	2024-10-24  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	PR ipa/113197
+ 	* gcc.dg/lto/pr113197_0.c: Require effective target pie.
+ 
+ 2025-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2024-10-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/113197
+ 	* gcc.dg/lto/pr113197_0.c: New testcase.
+ 	* gcc.dg/lto/pr113197_1.c: Likewise.
+ 
+ 2025-05-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-01-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/117498
+ 	* gcc.c-torture/execute/pr117498.c: New test.
+ 
+ 2025-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/opt106.adb: New test.
+ 	* gnat.dg/opt106_pkg1.ads, gnat.dg/opt106_pkg1.adb: New helper.
+ 	* gnat.dg/opt106_pkg2.ads, gnat.dg/opt106_pkg2.adb: Likewise.
+ 
  2025-05-08  Richard Sandiford  <richard.sandiford@arm.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/coroutines/torture/pr113773.C gcc-14-20250516/gcc/testsuite/g++.dg/coroutines/torture/pr113773.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/coroutines/torture/pr113773.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/coroutines/torture/pr113773.C	Fri May 16 22:32:11 2025
***************
*** 0 ****
--- 1,66 ----
+ //  { dg-do run }
+ #include <coroutine>
+ #ifdef OUTPUT
+ #include <iostream>
+ #endif
+ 
+ struct result {
+   operator int() {
+     throw 42;
+   }
+ };
+ 
+ static int p_dtor_count = 0;
+ class promise {
+ public:
+   result get_return_object() { return {}; }
+   std::suspend_never initial_suspend() {
+ #ifdef OUTPUT
+     std::cout << "initial suspend" << std::endl;
+ #endif
+     return {};
+   }
+   void unhandled_exception() {
+ #ifdef OUTPUT
+     std::cout << "unhandled exception" << std::endl;
+ #endif
+   }
+   std::suspend_never final_suspend() noexcept {
+ #ifdef OUTPUT
+     std::cout << "final suspend" << std::endl;
+ #endif
+     return {};
+   }
+   void return_void() {}
+   ~promise() {
+     p_dtor_count++;
+ #ifdef OUTPUT
+    std::cout << "~promise()" << std::endl;
+ #endif
+   }
+ };
+ 
+ template <class... Args>
+ struct std::coroutine_traits<int, Args...> {
+   using promise_type = promise;
+ };
+ 
+ int f() {
+   co_return;
+ }
+ 
+ int main() {
+   try {
+     f();
+   }
+   catch (int i) {
+     if (i != 42)
+       __builtin_abort ();
+ #ifdef OUTPUT
+     std::cout << "caught 42" << std::endl;
+ #endif
+   }
+   if (p_dtor_count != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp1y/decltype-auto9.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp1y/decltype-auto9.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp1y/decltype-auto9.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp1y/decltype-auto9.C	Fri May 16 22:32:11 2025
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/116379
+ // { dg-do compile { target c++14 } }
+ 
+ template<typename T>
+ struct X {
+   T val;
+   decltype(auto) value() { return (val); }
+ };
+ 
+ int main() {
+   int i = 0;
+   X<int&&> x{ static_cast<int&&>(i) };
+   using type = decltype(x.value());
+   using type = int&;
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp1y/lambda-generic-117778.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp1y/lambda-generic-117778.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp1y/lambda-generic-117778.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp1y/lambda-generic-117778.C	Fri May 16 22:32:11 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/117778
+ // { dg-do compile { target c++14 } }
+ 
+ auto l1 = [](auto (*fp)() -> auto) { return fp; };
+ auto l2 = [](auto fp() -> auto) { return fp; };
+ auto l3 = [](auto fp()) { return fp; };
+ auto l4 = [](auto (*fp)()) { return fp; };
+ auto l5 = [](auto fp() -> auto) -> auto { return fp; };
+ auto l6 = [](auto fp(auto fp2()) -> auto) -> auto { return fp; }; // { dg-error ".auto. parameter not permitted" }
+ auto l7 = [](auto fp(auto fp2() -> auto) -> auto) -> auto { return fp; }; // { dg-error ".auto. parameter not permitted" }
+ auto l8 = [](int fp(auto fp2())) { return fp; }; // { dg-error ".auto. parameter not permitted" }
+ auto l9 = [](auto fp(auto fp2() -> auto) -> auto) { return fp; }; // { dg-error ".auto. parameter not permitted" }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp26/name-independent-decl7.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp26/name-independent-decl7.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp26/name-independent-decl7.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp26/name-independent-decl7.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,27 ----
+ // P2169R4 - A nice placeholder with no name
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-Wunused-variable -Wunused-but-set-variable -Wunused-parameter -Wshadow" }
+ 
+ int bar ();
+ 
+ void
+ baz ()
+ {
+   for (; int _ = bar (); ++_)
+     int _ = 1;			// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+   for (int _ = bar ();
+        int _ = bar (); )	// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+     int _ = 2;			// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+   for (int _ = bar ();
+        int _ = bar (); )	// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+     ;
+   for (; int _ = bar (); ++_)
+     {
+       int _ = 3;		// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+     }
+   for (int _ = bar ();
+        int _ = bar (); )	// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+     {
+       int _ = 4;		// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+     }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp26/name-independent-decl8.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp26/name-independent-decl8.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp26/name-independent-decl8.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp26/name-independent-decl8.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,24 ----
+ // P2169R4 - A nice placeholder with no name
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ int bar ();
+ 
+ void
+ baz ()
+ {
+   for (int _ = bar ();
+        int _ = bar (); ++_)	// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+     ;				// { dg-error "reference to '_' is ambiguous" "" { target *-*-* } .-1 }
+   for (; int _ = bar (); ++_)
+     {
+       int _ = 3;		// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+       ++_;			// { dg-error "reference to '_' is ambiguous" }
+     }
+   for (int _ = bar ();
+        int _ = bar (); )	// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+     {
+       int _ = 4;		// { dg-warning "name-independent declarations only available with" "" { target c++23_down } }
+       ++_;			// { dg-error "reference to '_' is ambiguous" }
+     }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/abbrev-fn2.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/abbrev-fn2.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/abbrev-fn2.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/abbrev-fn2.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,49 ----
+ // PR c++/117778
+ // { dg-do run { target c++20 } }
+ 
+ int
+ f (auto fp())
+ {
+   return fp ();
+ }
+ 
+ int
+ g (auto fp() -> auto)
+ {
+   return fp ();
+ }
+ 
+ int
+ h (auto (*fp)() -> auto)
+ {
+   return fp ();
+ }
+ 
+ auto
+ fa (auto fp()) -> auto
+ {
+   return fp ();
+ }
+ 
+ auto
+ ga (auto fp() -> auto) -> auto
+ {
+   return fp ();
+ }
+ 
+ auto
+ ha (auto (*fp)() -> auto) -> auto
+ {
+   return fp ();
+ }
+ 
+ int bar() { return 42; }
+ 
+ int
+ main ()
+ {
+   if (f (bar) != 42 || g (bar) != 42 || h (bar) != 42)
+     __builtin_abort ();
+   if (fa (bar) != 42 || ga (bar) != 42 || ha (bar) != 42)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/abbrev-fn3.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/abbrev-fn3.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/abbrev-fn3.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/abbrev-fn3.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/117778
+ // { dg-do compile { target c++20 } }
+ 
+ int f1 (auto fp(auto fp2())); // { dg-error ".auto. parameter not permitted" }
+ int f2 (auto fp(auto fp2() -> auto)); // { dg-error ".auto. parameter not permitted" }
+ auto f3 (auto fp() -> auto) -> auto;
+ auto f3 (auto fp(auto fp2() -> auto) -> auto) -> auto; // { dg-error ".auto. parameter not permitted" }
+ 
+ void
+ g ()
+ {
+   extern int e1 (auto fp()); // { dg-error ".auto. parameter not permitted" }
+   extern int e2 (auto fp() -> auto); // { dg-error ".auto. parameter not permitted" }
+   extern int e3 (auto fp(auto fp2() -> auto) -> auto); // { dg-error ".auto. parameter not permitted" }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/consteval39.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/consteval39.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/consteval39.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/consteval39.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,27 ----
+ // PR c++/117501
+ // { dg-do run { target c++20 } }
+ 
+ constexpr unsigned
+ length ()
+ {
+   bool __trans_tmp_1 = __builtin_is_constant_evaluated();
+   if (__trans_tmp_1)
+     return 42;
+   return 1;
+ }
+ struct basic_string_view {
+   constexpr basic_string_view(const char *) : _M_len{length()}, _M_str{} {}
+   long _M_len;
+   char _M_str;
+ };
+ struct QQQ {
+   consteval QQQ(basic_string_view d) : data(d) {}
+   basic_string_view data;
+ };
+ int
+ main ()
+ {
+   QQQ q("");
+   if (q.data._M_len != 42)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/consteval40.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/consteval40.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/consteval40.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/consteval40.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,25 ----
+ // PR c++/117501
+ // { dg-do run { target c++20 } }
+ 
+ constexpr int
+ twiddle (int i)
+ {
+  if (__builtin_is_constant_evaluated ())
+     return 3;
+   return i;
+ }
+ struct S {
+   constexpr S(int i) : i{twiddle (i)} {}
+   int i;
+ };
+ struct Q {
+   consteval Q(S s_) : s{s_, s_} {}
+   S s[2];
+ };
+ int
+ main ()
+ {
+   Q q(twiddle (42));
+   if (q.s[0].i != 3 || q.s[1].i != 3)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/constexpr-86769.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/constexpr-86769.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/constexpr-86769.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/constexpr-86769.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,36 ----
+ // PR c++/86769
+ // { dg-do compile { target c++20 } }
+ 
+ struct A {
+   int *a;
+   constexpr A (int x) : a (new int (x)) {}
+   constexpr A (const A &x) : a (new int (x.a[0])) {}
+   constexpr ~A () { delete a; }
+   constexpr operator bool () { return *a != 0; }
+ };
+ 
+ constexpr int
+ foo ()
+ {
+   int i = 0;
+   for (A a = 0; A b = a.a[0] < 16; a.a[0] += b.a[0])
+     i += a.a[0] + b.a[0];
+   return i;
+ }
+ 
+ static_assert (foo () == 136);
+ 
+ constexpr int
+ bar ()
+ {
+   int i = 0;
+   A a = 0;
+   while (A b = a.a[0] < 15)
+     {
+       i += a.a[0] + b.a[0];
+       a.a[0] += b.a[0];
+     }
+   return i;
+ }
+ 
+ static_assert (bar () == 120);
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/constexpr-new24.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/constexpr-new24.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/constexpr-new24.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/constexpr-new24.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,25 ----
+ // PR c++/118775
+ // { dg-do compile { target c++20 } }
+ 
+ int a;
+ 
+ constexpr char *
+ f1 ()
+ {
+   constexpr auto p = new char[(long int) &a]; // { dg-error "size not constant" }
+   return p;
+ }
+ 
+ constexpr char *
+ f2 ()
+ {
+   auto p = new char[(long int) &a];  // { dg-error "size not constant" }
+   return p;
+ }
+ 
+ void
+ g ()
+ {
+   auto r1 = f2 ();
+   constexpr auto r2 = f2 (); // { dg-message "in .constexpr. expansion" }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/constexpr-new25.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/constexpr-new25.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/constexpr-new25.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/constexpr-new25.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,27 ----
+ // PR c++/118775
+ // { dg-do compile { target c++20 } }
+ 
+ namespace std {
+ struct __uniq_ptr_impl {
+   constexpr __uniq_ptr_impl(char *) {}
+ };
+ template <typename> struct unique_ptr {
+   __uniq_ptr_impl _M_t;
+   constexpr ~unique_ptr() {}
+ };
+ template <typename> struct _MakeUniq;
+ template <typename _Tp> struct _MakeUniq<_Tp[]> {
+   typedef unique_ptr<_Tp[]> __array;
+ };
+ template <typename _Tp> using __unique_ptr_array_t = _MakeUniq<_Tp>::__array;
+ constexpr __unique_ptr_array_t<char[]> make_unique(long __num) {
+   return unique_ptr<char[]>(new char[__num]);
+ }
+ } // namespace std
+ int a;
+ int
+ main ()
+ {
+   std::unique_ptr p = std::make_unique((long)&a);
+   constexpr std::unique_ptr p2 = std::make_unique((long)&a); // { dg-error "conversion" }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/lambda-uneval23.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/lambda-uneval23.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/lambda-uneval23.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/lambda-uneval23.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/118245
+ // { dg-do compile { target c++20 } }
+ 
+ template<auto> struct Cask {};
+ struct T1 : Cask<[]{}> {
+   Cask<[]{}> c{};
+ };
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/lambda-uneval26.C gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/lambda-uneval26.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/cpp2a/lambda-uneval26.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/cpp2a/lambda-uneval26.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/116960
+ // { dg-do compile { target c++20 } }
+ 
+ template<auto>
+ using Foo = decltype([](auto) { return 0; }(0));
+ 
+ template<typename...>
+ Foo<[] {}> foo() {}   // { dg-warning "no return statement" }
+ 
+ auto t = foo();
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/diagnostic/redeclaration-7.C gcc-14-20250516/gcc/testsuite/g++.dg/diagnostic/redeclaration-7.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/diagnostic/redeclaration-7.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/diagnostic/redeclaration-7.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,23 ----
+ // PR c++/52953
+ // { dg-do compile }
+ // { dg-options "-pedantic-errors" }
+ 
+ volatile int v;
+ 
+ void
+ baz ()
+ {
+   for (int x = v;			// { dg-message "'int x' previously declared here" }
+        int x = v; ++x)			// { dg-error "redeclaration of 'int x'" }
+     ;
+   for (int x = v;			// { dg-message "'int x' previously declared here" }
+        int x = v; ++x)			// { dg-error "redeclaration of 'int x'" }
+     {					// { dg-message "'int x' previously declared here" "" { target *-*-* } .-1 }
+       int x;				// { dg-error "redeclaration of 'int x'" }
+     }
+   for (int x = v;			// { dg-message "'int x' previously declared here" }
+        int x = v; ++x)			// { dg-error "redeclaration of 'int x'" }
+     {					// { dg-message "previous declaration 'int x'" "" { target *-*-* } .-1 }
+       extern int x;			// { dg-error "'int x' conflicts with a previous declaration" }
+     }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/expr/for3.C gcc-14-20250516/gcc/testsuite/g++.dg/expr/for3.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/expr/for3.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/expr/for3.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,112 ----
+ // PR c++/86769
+ // { dg-do run { target c++11 } }
+ 
+ int d, e, f, g, h;
+ struct A {
+   int a;
+   A (int x) : a(x) { ++d; ++h; }
+   ~A () { --d; ++h; }
+   A (const A &x) : a(x.a) { ++d; ++h; }
+   operator bool () { return a != 0; }
+ };
+ struct B {
+   B () { ++e; ++h; }
+   ~B () { --e; ++h; }
+   B (const B &) { ++e; ++h; }
+ };
+ 
+ int
+ foo (B, int x)
+ {
+   if (e != 1)
+     __builtin_abort ();
+   if (f ? x - 1 != (f - 1) % 3 : x)
+     __builtin_abort ();
+   ++f;
+   if (x == 1)
+     return ++g < 3;
+   return 0;
+ }
+ 
+ int
+ bar (int n)
+ {
+   if (e != 0 || d != n)
+     __builtin_abort ();
+   return 0;
+ }
+ 
+ int
+ main ()
+ {
+   for (A a = (bar (0), foo (B {}, 0));
+        A b = (bar (1), foo (B {}, 1));
+        bar (2), foo (B {}, 3))
+     A c = (bar (2), foo (B {}, 2));
+   if (f != 8 || h != 28 || d || e)
+     __builtin_abort ();
+   f = 0; g = -2; h = 0;
+   for (A a = (bar (0), foo (B {}, 0));
+        A b = (bar (1), foo (B {}, 1));
+        bar (2), foo (B {}, 3))
+     {
+       A c = (bar (2), foo (B {}, 2));
+       bar (3);
+     }
+   if (f != 14 || h != 48 || d || e)
+     __builtin_abort ();
+   f = 0; g = 0; h = 0;
+   {
+     A a = (bar (0), foo (B {}, 0));
+     while (A b = (bar (1), foo (B {}, 1)))
+       {
+ 	A c = (bar (2), foo (B {}, 2));
+ 	bar (3);
+ 	foo (B {}, 3);
+       }
+   }
+   if (f != 8 || h != 28 || d || e)
+     __builtin_abort ();
+   f = 0; g = -5; h = 0;
+   for (A a = (bar (0), foo (B {}, 0));
+        A b = (bar (1), foo (B {}, 1));
+        bar (2), foo (B {}, 3))
+     {
+       if (f == 5)
+ 	{
+ 	  bar (2);
+ 	  foo (B {}, 2);
+ 	  bar (2);
+ 	  continue;
+ 	}
+       if (f == 11)
+ 	break;
+       A c = (bar (2), foo (B {}, 2));
+       bar (3);
+     }
+   if (f != 11 || h != 36 || d || e)
+     __builtin_abort ();
+   f = 0; g = -5; h = 0;
+   {
+     A a = (bar (0), foo (B {}, 0));
+     while (A b = (bar (1), foo (B {}, 1)))
+       {
+ 	if (f == 5)
+ 	  {
+ 	    bar (2);
+ 	    foo (B {}, 2);
+ 	    bar (2);
+ 	    foo (B {}, 3);
+ 	    bar (2);
+ 	    continue;
+ 	  }
+ 	else if (f == 11)
+ 	  break;
+ 	A c = (bar (2), foo (B {}, 2));
+ 	bar (3);
+ 	foo (B {}, 3);
+       }
+   }
+   if (f != 11 || h != 36 || d || e)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/expr/for4.C gcc-14-20250516/gcc/testsuite/g++.dg/expr/for4.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/expr/for4.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/expr/for4.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,116 ----
+ // PR c++/86769
+ // { dg-do run }
+ 
+ int d, e, f, g, h;
+ struct A {
+   int a;
+   A (int x) : a(x) { ++d; ++h; }
+   ~A () { --d; ++h; }
+   A (const A &x) : a(x.a) { ++d; ++h; }
+   operator bool () { return a != 0; }
+ };
+ struct B {
+   B () { ++e; ++h; }
+   ~B () { --e; ++h; }
+   B (const B &) { ++e; ++h; }
+ };
+ B k;
+ 
+ int
+ foo (B, int x)
+ {
+   if (e != 1)
+     __builtin_abort ();
+   if (f ? x - 1 != (f - 1) % 3 : x)
+     __builtin_abort ();
+   ++f;
+   if (x == 1)
+     return ++g < 3;
+   return 0;
+ }
+ 
+ int
+ bar (int n)
+ {
+   if (e != 0 || d != n)
+     __builtin_abort ();
+   return 0;
+ }
+ 
+ int
+ main ()
+ {
+   if (e != 1 || h != 1)
+     __builtin_abort ();
+   e = 0; h = 0;
+   for (A a = (bar (0), foo (k, 0));
+        A b = (bar (1), foo (k, 1));
+        bar (2), foo (k, 3))
+     A c = (bar (2), foo (k, 2));
+   if (f != 8 || h != 28 || d || e)
+     __builtin_abort ();
+   f = 0; g = -2; h = 0;
+   for (A a = (bar (0), foo (k, 0));
+        A b = (bar (1), foo (k, 1));
+        bar (2), foo (k, 3))
+     {
+       A c = (bar (2), foo (k, 2));
+       bar (3);
+     }
+   if (f != 14 || h != 48 || d || e)
+     __builtin_abort ();
+   f = 0; g = 0; h = 0;
+   {
+     A a = (bar (0), foo (k, 0));
+     while (A b = (bar (1), foo (k, 1)))
+       {
+ 	A c = (bar (2), foo (k, 2));
+ 	bar (3);
+ 	foo (k, 3);
+       }
+   }
+   if (f != 8 || h != 28 || d || e)
+     __builtin_abort ();
+   f = 0; g = -5; h = 0;
+   for (A a = (bar (0), foo (k, 0));
+        A b = (bar (1), foo (k, 1));
+        bar (2), foo (k, 3))
+     {
+       if (f == 5)
+ 	{
+ 	  bar (2);
+ 	  foo (k, 2);
+ 	  bar (2);
+ 	  continue;
+ 	}
+       if (f == 11)
+ 	break;
+       A c = (bar (2), foo (k, 2));
+       bar (3);
+     }
+   if (f != 11 || h != 36 || d || e)
+     __builtin_abort ();
+   f = 0; g = -5; h = 0;
+   {
+     A a = (bar (0), foo (k, 0));
+     while (A b = (bar (1), foo (k, 1)))
+       {
+ 	if (f == 5)
+ 	  {
+ 	    bar (2);
+ 	    foo (k, 2);
+ 	    bar (2);
+ 	    foo (k, 3);
+ 	    bar (2);
+ 	    continue;
+ 	  }
+ 	else if (f == 11)
+ 	  break;
+ 	A c = (bar (2), foo (k, 2));
+ 	bar (3);
+ 	foo (k, 3);
+       }
+   }
+   if (f != 11 || h != 36 || d || e)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/expr/for5.C gcc-14-20250516/gcc/testsuite/g++.dg/expr/for5.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/expr/for5.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/expr/for5.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,34 ----
+ // PR c++/86769
+ // { dg-do run }
+ 
+ int g;
+ 
+ struct X {
+   X () { g++; }
+   ~X () { g--; }
+   operator bool () { return g == 0; }
+ };
+ 
+ void
+ foo ()
+ {
+   if (g <= 0)
+     __builtin_abort ();
+ }
+ 
+ void
+ bar ()
+ {
+   if (g)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   for (int i = 0; i < 1; ++i, bar ())
+     {
+       X x = X ();
+       foo ();
+     }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/expr/for6.C gcc-14-20250516/gcc/testsuite/g++.dg/expr/for6.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/expr/for6.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/expr/for6.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,39 ----
+ // PR c++/86769
+ // { dg-do run { target c++11 } }
+ 
+ int v;
+ 
+ struct S {
+   int s;
+   S (int x) : s(x)
+   {
+     if ((v != 0 || s != 0) && (v != 3 || s != 1))
+       __builtin_abort ();
+     ++v;
+   }
+   ~S ()
+   {
+     if ((v != 2 || s != 0) && (v != 4 || s != 1))
+       __builtin_abort ();
+     ++v;
+   }
+   operator bool () const { return true; }
+ };
+ 
+ void
+ foo (const S &s)
+ {
+   if (v != 1 || s.s != 0)
+     __builtin_abort ();
+   ++v;
+ }
+ 
+ int
+ main ()
+ {
+   for (int i = 0; S j{i}; foo (j))
+     {
+       if (++i == 2)
+ 	break;
+     }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/expr/for7.C gcc-14-20250516/gcc/testsuite/g++.dg/expr/for7.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/expr/for7.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/expr/for7.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/86769
+ // { dg-do run }
+ 
+ int v;
+ 
+ struct S
+ {
+   S (int x) : s(x) { v++; }
+   ~S () { v--; }
+   int s;
+   operator int () { if (!v) __builtin_abort (); return s; }
+ };
+ 
+ int
+ main ()
+ {
+   int x = 10;
+   for (int l = 1; S d = x - l; l = d + 1)
+     ;
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/expr/for8.C gcc-14-20250516/gcc/testsuite/g++.dg/expr/for8.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/expr/for8.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/expr/for8.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/86769
+ // { dg-do run }
+ // { dg-options "-O1" }
+ 
+ __attribute__((noipa)) void
+ foo (int)
+ {
+   static int a = 0;
+   if (++a == 3)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   volatile int x = 10;
+   for (int l = 1; int d = x - l; l = d + 1)
+     {
+       int &z = d;
+       foo (z);
+     }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/expr/for9.C gcc-14-20250516/gcc/testsuite/g++.dg/expr/for9.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/expr/for9.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/expr/for9.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,25 ----
+ // PR c++/118822
+ // { dg-do compile }
+ 
+ struct A { A (); ~A (); };
+ bool baz ();
+ 
+ void
+ foo ()
+ {
+   while (bool x = baz ())
+     {
+     lab:;
+       A a;
+     }
+ }
+ 
+ void
+ bar ()
+ {
+   for (bool y = baz (); bool x = baz (); y |= x)
+     {
+     lab:;
+       A a;
+     }
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/ext/stmtexpr27.C gcc-14-20250516/gcc/testsuite/g++.dg/ext/stmtexpr27.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/ext/stmtexpr27.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/ext/stmtexpr27.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,64 ----
+ // PR c++/86769
+ // { dg-do run }
+ // { dg-options "" }
+ 
+ struct A {
+   int a;
+   A (int x) : a(x) {}
+   ~A () {}
+   A (const A &x) : a(x.a) {}
+   operator bool () { return a != 0; }
+ };
+ 
+ int
+ main ()
+ {
+   int v = 0;
+   for (int i = 0; i < 3; ++i)
+     for (int j = 0; j < ({ if (i == 1 && j == 1) continue; 4; }); ++j)
+       ++v;
+   if (v != 9)
+     __builtin_abort ();
+   v = 0;
+   for (int i = 0; i < 3; ++i)
+     for (int j = 0; j < ({ if (i == 1 && j == 1) break; 4; }); ++j)
+       ++v;
+   if (v != 5)
+     __builtin_abort ();
+   v = 0;
+   for (int i = 0; i < 3; ++i)
+     for (int j = 0; j < 4; ({ if (i == 1 && j == 1) continue; 1; }), ++j)
+       ++v;
+   if (v != 10)
+     __builtin_abort ();
+   v = 0;
+   for (int i = 0; i < 3; ++i)
+     for (int j = 0; j < 4; ({ if (i == 1 && j == 1) break; 1; }), ++j)
+       ++v;
+   if (v != 6)
+     __builtin_abort ();
+   v = 0;
+   for (int i = 0; i < 3; ++i)
+     for (int j = 0; A c = j < ({ if (i == 1 && j == 1) continue; 4; }); ++j)
+       ++v;
+   if (v != 9)
+     __builtin_abort ();
+   v = 0;
+   for (int i = 0; i < 3; ++i)
+     for (int j = 0; A c = j < ({ if (i == 1 && j == 1) break; 4; }); ++j)
+       ++v;
+   if (v != 5)
+     __builtin_abort ();
+   v = 0;
+   for (int i = 0; i < 3; ++i)
+     for (int j = 0; A c = j < 4; ({ if (i == 1 && j == 1) continue; 1; }), ++j)
+       ++v;
+   if (v != 10)
+     __builtin_abort ();
+   v = 0;
+   for (int i = 0; i < 3; ++i)
+     for (int j = 0; A c = j < 4; ({ if (i == 1 && j == 1) break; 1; }), ++j)
+       ++v;
+   if (v != 6)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/goacc/pr118590.C gcc-14-20250516/gcc/testsuite/g++.dg/goacc/pr118590.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/goacc/pr118590.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/goacc/pr118590.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,29 ----
+ // PR c++/118590
+ // { dg-do compile }
+ 
+ template <typename T>
+ struct A
+ {
+   int z;
+ };
+ 
+ template <typename T, typename U>
+ struct B
+ {
+   char *w;
+   A<T> y;
+ };
+ 
+ template <typename T, typename U>
+ void
+ foo  (B<T, U> &x)
+ {
+   A<T> c = x.y;
+   #pragma acc enter data copyin(x.w[0 : c.z])
+ }
+ 
+ void
+ bar (B<int, int> &x)
+ {
+   foo (x);
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/modules/clone-4_a.C gcc-14-20250516/gcc/testsuite/g++.dg/modules/clone-4_a.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/modules/clone-4_a.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/modules/clone-4_a.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/120125
+ // { dg-additional-options "-fmodules-ts -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-14-20250509/gcc/testsuite/g++.dg/modules/clone-4_b.C gcc-14-20250516/gcc/testsuite/g++.dg/modules/clone-4_b.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/modules/clone-4_b.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/modules/clone-4_b.C	Fri May 16 22:32:12 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/120125
+ // { dg-additional-options "-fmodules-ts -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:} { xfail *-*-* } } }
+ // { dg-final { scan-assembler {_ZNW1M12__shared_ptrIdEC2Ev:} } }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/modules/lambda-7_a.H gcc-14-20250516/gcc/testsuite/g++.dg/modules/lambda-7_a.H
*** gcc-14-20250509/gcc/testsuite/g++.dg/modules/lambda-7_a.H	Fri May  9 22:32:19 2025
--- gcc-14-20250516/gcc/testsuite/g++.dg/modules/lambda-7_a.H	Fri May 16 22:32:12 2025
***************
*** 1,4 ****
  // { dg-additional-options "-fmodule-header -Wno-subobject-linkage" }
! // { dg-module-cmi {} }
  
  #include "lambda-7.h"
--- 1,4 ----
  // { dg-additional-options "-fmodule-header -Wno-subobject-linkage" }
! // { dg-ice "see PR c++/118245" { c++20 } }
  
  #include "lambda-7.h"
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/modules/lambda-7_b.C gcc-14-20250516/gcc/testsuite/g++.dg/modules/lambda-7_b.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/modules/lambda-7_b.C	Fri May  9 22:32:19 2025
--- gcc-14-20250516/gcc/testsuite/g++.dg/modules/lambda-7_b.C	Fri May 16 22:32:12 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-fmodules-ts -fno-module-lazy -Wno-subobject-linkage" }
+ // { dg-xfail-if "see PR c++/118245" { c++20 } }
  // Test for ODR deduplication
  
  #include "lambda-7.h"
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/modules/lambda-7_c.C gcc-14-20250516/gcc/testsuite/g++.dg/modules/lambda-7_c.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/modules/lambda-7_c.C	Fri May  9 22:32:19 2025
--- gcc-14-20250516/gcc/testsuite/g++.dg/modules/lambda-7_c.C	Fri May 16 22:32:12 2025
***************
*** 1,5 ****
- // { dg-module-do run }
  // { dg-additional-options "-fmodules-ts -fno-module-lazy -Wno-subobject-linkage" }
  
  import "lambda-7_a.H";
  
--- 1,5 ----
  // { dg-additional-options "-fmodules-ts -fno-module-lazy -Wno-subobject-linkage" }
+ // { dg-xfail-if "see PR c++/118245" { c++20 } }
  
  import "lambda-7_a.H";
  
diff -Nrcpad gcc-14-20250509/gcc/testsuite/g++.dg/warn/undefined2.C gcc-14-20250516/gcc/testsuite/g++.dg/warn/undefined2.C
*** gcc-14-20250509/gcc/testsuite/g++.dg/warn/undefined2.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/g++.dg/warn/undefined2.C	Fri May 16 22:32:13 2025
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/119303
+ 
+ template <class> struct c {
+   enum { d = 4 };
+ };
+ template <bool> struct e {
+   typedef void g;
+ };
+ template <class _Tp>
+ inline typename e<!c<_Tp>::d>::g bar(_Tp); // { dg-warning "used but never defined" }
+ 
+ int x;
+ 
+ void foo() { bar(x); }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gcc.c-torture/execute/pr117498.c gcc-14-20250516/gcc/testsuite/gcc.c-torture/execute/pr117498.c
*** gcc-14-20250509/gcc/testsuite/gcc.c-torture/execute/pr117498.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gcc.c-torture/execute/pr117498.c	Fri May 16 22:32:14 2025
***************
*** 0 ****
--- 1,35 ----
+ /* PR middle-end/117498 */
+ 
+ int a, d, f;
+ char g;
+ volatile int c = 1;
+ 
+ int
+ foo ()
+ {
+   if (c == 0)
+     return -1;
+   return 1;
+ }
+ 
+ void
+ bar (int h, int i, char *k, char *m)
+ {
+   for (; d < i; d += 2)
+     for (int j = 0; j < h; j++)
+       m[j] = k[4 * j];
+ }
+ 
+ void
+ baz (long h)
+ {
+   char n = 0;
+   bar (h, 4, &n, &g);
+ }
+ 
+ int
+ main ()
+ {
+   f = foo ();
+   baz ((unsigned char) f - 4);
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gcc.c-torture/execute/pr118623.c gcc-14-20250516/gcc/testsuite/gcc.c-torture/execute/pr118623.c
*** gcc-14-20250509/gcc/testsuite/gcc.c-torture/execute/pr118623.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gcc.c-torture/execute/pr118623.c	Fri May 16 22:32:14 2025
***************
*** 0 ****
--- 1,23 ----
+ /* PR target/118623 */
+ 
+ static int
+ foo (int x, int y)
+ {
+   int a = 1 << x;
+   if (y & a)
+     return 0;
+   return 5;
+ }
+ 
+ __attribute__((noipa)) void
+ bar (int x)
+ {
+   if (((foo (x - 50, x) + x + x) & 1) == 0)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   bar (63);
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gcc.dg/c11-null-pointer-constant-1.c gcc-14-20250516/gcc/testsuite/gcc.dg/c11-null-pointer-constant-1.c
*** gcc-14-20250509/gcc/testsuite/gcc.dg/c11-null-pointer-constant-1.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gcc.dg/c11-null-pointer-constant-1.c	Fri May 16 22:32:15 2025
***************
*** 0 ****
--- 1,55 ----
+ /* Test zero with different types as null pointer constant: bug 112556.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c11 -pedantic-errors -Wno-pointer-compare" } */
+ 
+ enum e { ZERO };
+ 
+ void *p1 = 0;
+ void *p2 = 0LL;
+ void *p3 = (char) 0;
+ void *p4 = 0UL;
+ void *p5 = (_Bool) 0;
+ void *p6 = (enum e) ZERO;
+ 
+ void f (void *);
+ 
+ void *
+ g (void)
+ {
+   p1 = 0;
+   p2 = 0LL;
+   p3 = (char) 0;
+   p4 = 0UL;
+   p5 = (_Bool) 0;
+   p6 = (enum e) ZERO;
+   f (0);
+   f (0ULL);
+   f (0L);
+   f ((char) 0);
+   f ((_Bool) 0);
+   f ((enum e) ZERO);
+   (1 ? p1 : 0);
+   (1 ? p1 : 0L);
+   (1 ? p1 : 0ULL);
+   (1 ? p1 : (char) 0);
+   (1 ? p1 : (_Bool) 0);
+   (1 ? p1 : (enum e) 0);
+   p1 == 0;
+   p1 == 0LL;
+   p1 == 0U;
+   p1 == (char) 0;
+   p1 == (_Bool) 0;
+   p1 == (enum e) 0;
+   p1 != 0;
+   p1 != 0LL;
+   p1 != 0U;
+   p1 != (char) 0;
+   p1 != (_Bool) 0;
+   p1 != (enum e) 0;
+   return 0;
+   return 0UL;
+   return 0LL;
+   return (char) 0;
+   return (_Bool) 0;
+   return (enum e) 0;
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gcc.dg/c23-null-pointer-constant-1.c gcc-14-20250516/gcc/testsuite/gcc.dg/c23-null-pointer-constant-1.c
*** gcc-14-20250509/gcc/testsuite/gcc.dg/c23-null-pointer-constant-1.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gcc.dg/c23-null-pointer-constant-1.c	Fri May 16 22:32:15 2025
***************
*** 0 ****
--- 1,120 ----
+ /* Test zero with different types as null pointer constant: bug 112556.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c23 -pedantic-errors -Wno-pointer-compare" } */
+ 
+ enum e { ZERO };
+ enum e2 : bool { BZERO };
+ enum e3 : long { LZERO };
+ 
+ void *p1 = 0;
+ void *p2 = 0LL;
+ void *p3 = (char) 0;
+ void *p4 = 0UL;
+ void *p5 = (bool) 0;
+ void *p6 = (enum e) ZERO;
+ void *p7 = false;
+ void *p8 = BZERO;
+ void *p9 = (enum e2) 0;
+ void *p10 = LZERO;
+ void *p11 = (enum e3) 0;
+ #ifdef __BITINT_MAXWIDTH__
+ void *p12 = 0wb;
+ void *p13 = 0uwb;
+ #endif
+ 
+ void f (void *);
+ 
+ void *
+ g (void)
+ {
+   p1 = 0;
+   p2 = 0LL;
+   p3 = (char) 0;
+   p4 = 0UL;
+   p5 = (bool) 0;
+   p6 = (enum e) ZERO;
+   p7 = false;
+   p8 = BZERO;
+   p9 = (enum e2) 0;
+   p10 = LZERO;
+   p11 = (enum e3) 0;
+ #ifdef __BITINT_MAXWIDTH__
+   p12 = 0wb;
+   p13 = 0uwb;
+ #endif
+   f (0);
+   f (0ULL);
+   f (0L);
+   f ((char) 0);
+   f ((bool) 0);
+   f ((enum e) ZERO);
+   f (false);
+   f (BZERO);
+   f ((enum e2) 0);
+   f (LZERO);
+   f ((enum e3) 0);
+ #ifdef __BITINT_MAXWIDTH__
+   f (0wb);
+   f (0uwb);
+ #endif
+   (1 ? p1 : 0);
+   (1 ? p1 : 0L);
+   (1 ? p1 : 0ULL);
+   (1 ? p1 : (char) 0);
+   (1 ? p1 : (bool) 0);
+   (1 ? p1 : (enum e) 0);
+   (1 ? p1 : false);
+   (1 ? p1 : BZERO);
+   (1 ? p1 : (enum e2) 0);
+   (1 ? p1 : LZERO);
+   (1 ? p1 : (enum e3) 0);
+ #ifdef __BITINT_MAXWIDTH__
+   (1 ? p1 : 0wb);
+   (1 ? p1 : 0uwb);
+ #endif
+   p1 == 0;
+   p1 == 0LL;
+   p1 == 0U;
+   p1 == (char) 0;
+   p1 == (bool) 0;
+   p1 == (enum e) 0;
+   p1 == false;
+   p1 == BZERO;
+   p1 == (enum e2) 0;
+   p1 == LZERO;
+   p1 == (enum e3) 0;
+ #ifdef __BITINT_MAXWIDTH__
+   p1 == 0wb;
+   p1 == 0uwb;
+ #endif
+   p1 != 0;
+   p1 != 0LL;
+   p1 != 0U;
+   p1 != (char) 0;
+   p1 != (bool) 0;
+   p1 != (enum e) 0;
+   p1 != false;
+   p1 != BZERO;
+   p1 != (enum e2) 0;
+   p1 != LZERO;
+   p1 != (enum e3) 0;
+ #ifdef __BITINT_MAXWIDTH__
+   p1 != 0wb;
+   p1 != 0uwb;
+ #endif
+   return 0;
+   return 0UL;
+   return 0LL;
+   return (char) 0;
+   return (bool) 0;
+   return (enum e) 0;
+   return false;
+   return BZERO;
+   return (enum e2) 0;
+   return LZERO;
+   return (enum e3) 0;
+ #ifdef __BITINT_MAXWIDTH__
+   return 0wb;
+   return 0uwb;
+ #endif
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gcc.dg/ipa/pr119852.c gcc-14-20250516/gcc/testsuite/gcc.dg/ipa/pr119852.c
*** gcc-14-20250509/gcc/testsuite/gcc.dg/ipa/pr119852.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gcc.dg/ipa/pr119852.c	Fri May 16 22:32:15 2025
***************
*** 0 ****
--- 1,50 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-ipa-clones"  } */
+ 
+ typedef struct rtx_def *rtx;
+ enum rtx_code {
+   LAST_AND_UNUSED_RTX_CODE};
+ extern const char * const rtx_format[((int) LAST_AND_UNUSED_RTX_CODE)];
+ struct rtx_def {
+   enum rtx_code code;
+ };
+ typedef int (*rtx_function) (rtx *, void *);
+ extern int for_each_rtx (rtx *, rtx_function, void *);
+ int
+ replace_label (rtx *x, void *data)
+ {
+   rtx l = *x;
+   if (l == (rtx) 0)
+     {
+  {
+    rtx new_c, new_l;
+    for_each_rtx (&new_c, replace_label, data);
+  }
+     }
+ }
+ static int
+ for_each_rtx_1 (rtx exp, int n, rtx_function f, void *data)
+ {
+   int result, i, j;
+   const char *format = (rtx_format[(int) (((enum rtx_code) (exp)->code))]);
+   rtx *x;
+   for (; format[n] != '\0'; n++)
+     {
+       switch (format[n])
+  {
+  case 'e':
+    result = (*f) (x, data);
+      {
+        result = for_each_rtx_1 (*x, i, f, data);
+      }
+  }
+     }
+ }
+ int
+ for_each_rtx (rtx *x, rtx_function f, void *data)
+ {
+   int i;
+   return for_each_rtx_1 (*x, i, f, data);
+ }
+ 
+ /* { dg-final { scan-ipa-dump-not "(null)"  "ipa-clones"  } } */
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gcc.dg/lto/pr113197_0.c gcc-14-20250516/gcc/testsuite/gcc.dg/lto/pr113197_0.c
*** gcc-14-20250509/gcc/testsuite/gcc.dg/lto/pr113197_0.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gcc.dg/lto/pr113197_0.c	Fri May 16 22:32:15 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-lto-do link } */
+ /* { dg-require-effective-target pie } */
+ /* { dg-lto-options { { -O -flto -fpie } } } */
+ /* { dg-extra-ld-options { -r -nostdlib -flinker-output=nolto-rel } } */
+ 
+ enum a { b } register_dccp();
+ void c();
+ void __attribute__((noreturn)) exit_error(enum a d) {
+   __builtin_va_list va;
+   __builtin_va_end(va);
+   if (d)
+     c();
+   c();
+   __builtin_exit(1);
+ }
+ int main() { register_dccp(); }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gcc.dg/lto/pr113197_1.c gcc-14-20250516/gcc/testsuite/gcc.dg/lto/pr113197_1.c
*** gcc-14-20250509/gcc/testsuite/gcc.dg/lto/pr113197_1.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gcc.dg/lto/pr113197_1.c	Fri May 16 22:32:15 2025
***************
*** 0 ****
--- 1,3 ----
+ int a;
+ void exit_error();
+ void register_dccp() { exit_error(a); }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gcc.target/riscv/rvv/base/bug-6.c gcc-14-20250516/gcc/testsuite/gcc.target/riscv/rvv/base/bug-6.c
*** gcc-14-20250509/gcc/testsuite/gcc.target/riscv/rvv/base/bug-6.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gcc.target/riscv/rvv/base/bug-6.c	Fri May 16 22:32:19 2025
***************
*** 0 ****
--- 1,22 ----
+ /* Test that we do not have ice when compile */
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -ftree-vectorize" } */
+ 
+ struct A { float x, y; };
+ struct B { struct A u; };
+ 
+ extern void bar (struct A *);
+ 
+ float
+ f3 (struct B *x, int y)
+ {
+   struct A p = {1.0f, 2.0f};
+   struct A *q = &x[y].u;
+ 
+   __builtin_memcpy (&q->x, &p.x, sizeof (float));
+   __builtin_memcpy (&q->y, &p.y, sizeof (float));
+ 
+   bar (&p);
+ 
+   return x[y].u.x + x[y].u.y;
+ }
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gfortran.dg/actual_array_subref.f90 gcc-14-20250516/gcc/testsuite/gfortran.dg/actual_array_subref.f90
*** gcc-14-20250509/gcc/testsuite/gfortran.dg/actual_array_subref.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gfortran.dg/actual_array_subref.f90	Fri May 16 22:32:20 2025
***************
*** 0 ****
--- 1,103 ----
+ ! { dg-do run }
+ ! { dg-additional-options "-O2 -fcheck=bounds" }
+ !
+ ! PR fortran/119986
+ !
+ ! Check passing of inquiry references of complex arrays and substring
+ ! references of character arrays when these are components of derived types.
+ !
+ ! Extended version of report by Neil Carlson.
+ 
+ program main
+   implicit none
+   integer :: j
+ 
+   complex, parameter  :: z0(*) = [(cmplx(j,-j),j=1,4)]
+   type :: cx
+      real :: re
+      real :: im
+   end type cx
+   type(cx), parameter :: c0(*) = [(cx   (j,-j),j=1,4)]
+ 
+   type :: my_type
+      complex  :: z(4) = z0
+      type(cx) :: c(4) = c0
+   end type my_type
+   type(my_type) :: x
+ 
+   character(*), parameter :: s0(*) = ["abcd","efgh","ijkl","mnop"]
+   character(*), parameter :: expect(*) = s0(:)(2:3)
+   character(len(s0))      :: s1(4) = s0
+ 
+   type :: str1
+      character(len(s0))   :: s(4)  = s0
+   end type str1
+   type(str1) :: string1
+ 
+   type :: str2
+      character(:), allocatable :: s(:)
+   end type str2
+   type(str2) :: string2
+ 
+   integer :: stopcode = 0
+ 
+   if (len(expect) /= 2)    stop 1
+   if (expect(4)   /= "no") stop 2
+   if (any(c0 %re  /= [ 1, 2, 3, 4])) stop 3
+   if (any(c0 %im  /= [-1,-2,-3,-4])) stop 4
+ 
+   stopcode = 10
+   call fubar ( x%z %re, x%z %im)
+   call fubar ( x%c %re, x%c %im)
+ 
+   stopcode = 20
+   call fubar ((x%z %re), (x%z %im))
+   call fubar ((x%c %re), (x%c %im))
+ 
+   stopcode = 30
+   call fubar ([x%z %re], [x%z %im])
+   call fubar ([x%c %re], [x%c %im])
+ 
+   stopcode = 50
+   call chk ( s0(:)(2:3) )
+   call chk ((s0(:)(2:3)))
+   call chk ([s0(:)(2:3)])
+ 
+   stopcode = 60
+   call chk ( s1(:)(2:3) )
+   call chk ((s1(:)(2:3)))
+   call chk ([s1(:)(2:3)])
+ 
+   stopcode = 70
+   call chk ( string1%s(:)(2:3) )
+   call chk ((string1%s(:)(2:3)))
+   call chk ([string1%s(:)(2:3)])
+ 
+   string2% s = s0
+   if (len(string2%s) /= 4) stop 99
+   stopcode = 80
+   call chk ( string2%s(:)(2:3) )
+   call chk ((string2%s(:)(2:3)))
+   call chk ([string2%s(:)(2:3)])
+   deallocate (string2% s)
+ 
+ contains
+ 
+   subroutine fubar(u, v)
+     real, intent(in) :: u(:), v(:)
+     if (any (u /= z0%re)) stop stopcode + 1
+     if (any (v /= z0%im)) stop stopcode + 2
+     if (any (u /= c0%re)) stop stopcode + 3
+     if (any (v /= c0%im)) stop stopcode + 4
+     stopcode = stopcode + 4
+   end subroutine
+ 
+   subroutine chk (s)
+     character(*), intent(in) :: s(:)
+     if (size(s) /= 4)      stop stopcode + 1
+     if (len (s) /= 2)      stop stopcode + 2
+     if (any (s /= expect)) stop stopcode + 3
+     stopcode = stopcode + 3
+   end subroutine chk
+ 
+ end program
diff -Nrcpad gcc-14-20250509/gcc/testsuite/gfortran.dg/pr120191_1.f90 gcc-14-20250516/gcc/testsuite/gfortran.dg/pr120191_1.f90
*** gcc-14-20250509/gcc/testsuite/gfortran.dg/pr120191_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gfortran.dg/pr120191_1.f90	Fri May 16 22:32:21 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-14-20250509/gcc/testsuite/gfortran.dg/pr120191_2.f90 gcc-14-20250516/gcc/testsuite/gfortran.dg/pr120191_2.f90
*** gcc-14-20250509/gcc/testsuite/gfortran.dg/pr120191_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gfortran.dg/pr120191_2.f90	Fri May 16 22:32:21 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-14-20250509/gcc/testsuite/gfortran.dg/pr120191_3.f90 gcc-14-20250516/gcc/testsuite/gfortran.dg/pr120191_3.f90
*** gcc-14-20250509/gcc/testsuite/gfortran.dg/pr120191_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gfortran.dg/pr120191_3.f90	Fri May 16 22:32:21 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-14-20250509/gcc/testsuite/gfortran.dg/pr120196.f90 gcc-14-20250516/gcc/testsuite/gfortran.dg/pr120196.f90
*** gcc-14-20250509/gcc/testsuite/gfortran.dg/pr120196.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20250516/gcc/testsuite/gfortran.dg/pr120196.f90	Fri May 16 22:32:21 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-14-20250509/gcc/tree-iterator.cc gcc-14-20250516/gcc/tree-iterator.cc
*** gcc-14-20250509/gcc/tree-iterator.cc	Fri May  9 22:33:01 2025
--- gcc-14-20250516/gcc/tree-iterator.cc	Fri May 16 22:32:23 2025
*************** tsi_delink (tree_stmt_iterator *i)
*** 284,289 ****
--- 284,311 ----
    i->ptr = next;
  }
  
+ /* Split a STATEMENT_LIST in I.contrainer into two, all statements
+    from the start until I.ptr inclusive will remain in the original
+    one, all statements after I.ptr are removed from that STATEMENT_LIST
+    and returned as a new STATEMENT_LIST.  If I is the last statement,
+    an empty statement with LOC location is returned.  */
+ 
+ tree
+ tsi_split_stmt_list (location_t loc, tree_stmt_iterator i)
+ {
+   if (tsi_one_before_end_p (i))
+     return build_empty_stmt (loc);
+   tsi_next (&i);
+   tree ret = NULL_TREE;
+   while (!tsi_end_p (i))
+     {
+       tree t = tsi_stmt (i);
+       tsi_delink (&i);
+       append_to_statement_list_force (t, &ret);
+     }
+   return ret;
+ }
+ 
  /* Return the first expression in a sequence of COMPOUND_EXPRs, or in
     a STATEMENT_LIST, disregarding DEBUG_BEGIN_STMTs, recursing into a
     STATEMENT_LIST if that's the first non-DEBUG_BEGIN_STMT.  */
diff -Nrcpad gcc-14-20250509/gcc/tree-iterator.h gcc-14-20250516/gcc/tree-iterator.h
*** gcc-14-20250509/gcc/tree-iterator.h	Fri May  9 22:33:01 2025
--- gcc-14-20250516/gcc/tree-iterator.h	Fri May 16 22:32:23 2025
*************** extern void tsi_link_after (tree_stmt_it
*** 138,143 ****
--- 138,144 ----
  			    enum tsi_iterator_update);
  
  extern void tsi_delink (tree_stmt_iterator *);
+ extern tree tsi_split_stmt_list (location_t, tree_stmt_iterator);
  
  extern tree alloc_stmt_list (void);
  extern void free_stmt_list (tree);
diff -Nrcpad gcc-14-20250509/gcc/tree-ssa-structalias.cc gcc-14-20250516/gcc/tree-ssa-structalias.cc
*** gcc-14-20250509/gcc/tree-ssa-structalias.cc	Fri May  9 22:33:01 2025
--- gcc-14-20250516/gcc/tree-ssa-structalias.cc	Fri May 16 22:32:23 2025
*************** handle_call_arg (gcall *stmt, tree arg,
*** 4117,4123 ****
      {
        make_transitive_closure_constraints (tem);
        callarg_transitive = true;
-       gcc_checking_assert (!(flags & EAF_NO_DIRECT_READ));
      }
  
    /* If necessary, produce varinfo for indirect accesses to ARG.  */
--- 4117,4122 ----
diff -Nrcpad gcc-14-20250509/libgfortran/ChangeLog gcc-14-20250516/libgfortran/ChangeLog
*** gcc-14-20250509/libgfortran/ChangeLog	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/ChangeLog	Fri May 16 22:32:23 2025
***************
*** 1,3 ****
--- 1,57 ----
+ 2025-05-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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>
+ 
+ 	Backported from master:
+ 	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>
+ 
+ 	Backported from master:
+ 	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-04-08  Lulu Cheng  <chenglulu@loongson.cn>
  
  	Backported from master:
diff -Nrcpad gcc-14-20250509/libgfortran/generated/findloc2_s1.c gcc-14-20250516/libgfortran/generated/findloc2_s1.c
*** gcc-14-20250509/libgfortran/generated/findloc2_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/findloc2_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/findloc2_s4.c gcc-14-20250516/libgfortran/generated/findloc2_s4.c
*** gcc-14-20250509/libgfortran/generated/findloc2_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/findloc2_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc1_16_s1.c gcc-14-20250516/libgfortran/generated/maxloc1_16_s1.c
*** gcc-14-20250509/libgfortran/generated/maxloc1_16_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc1_16_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc1_16_s4.c gcc-14-20250516/libgfortran/generated/maxloc1_16_s4.c
*** gcc-14-20250509/libgfortran/generated/maxloc1_16_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc1_16_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc1_4_s1.c gcc-14-20250516/libgfortran/generated/maxloc1_4_s1.c
*** gcc-14-20250509/libgfortran/generated/maxloc1_4_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc1_4_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc1_4_s4.c gcc-14-20250516/libgfortran/generated/maxloc1_4_s4.c
*** gcc-14-20250509/libgfortran/generated/maxloc1_4_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc1_4_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc1_8_s1.c gcc-14-20250516/libgfortran/generated/maxloc1_8_s1.c
*** gcc-14-20250509/libgfortran/generated/maxloc1_8_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc1_8_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc1_8_s4.c gcc-14-20250516/libgfortran/generated/maxloc1_8_s4.c
*** gcc-14-20250509/libgfortran/generated/maxloc1_8_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc1_8_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc2_16_s1.c gcc-14-20250516/libgfortran/generated/maxloc2_16_s1.c
*** gcc-14-20250509/libgfortran/generated/maxloc2_16_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc2_16_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc2_16_s4.c gcc-14-20250516/libgfortran/generated/maxloc2_16_s4.c
*** gcc-14-20250509/libgfortran/generated/maxloc2_16_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc2_16_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc2_4_s1.c gcc-14-20250516/libgfortran/generated/maxloc2_4_s1.c
*** gcc-14-20250509/libgfortran/generated/maxloc2_4_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc2_4_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc2_4_s4.c gcc-14-20250516/libgfortran/generated/maxloc2_4_s4.c
*** gcc-14-20250509/libgfortran/generated/maxloc2_4_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc2_4_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc2_8_s1.c gcc-14-20250516/libgfortran/generated/maxloc2_8_s1.c
*** gcc-14-20250509/libgfortran/generated/maxloc2_8_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc2_8_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/maxloc2_8_s4.c gcc-14-20250516/libgfortran/generated/maxloc2_8_s4.c
*** gcc-14-20250509/libgfortran/generated/maxloc2_8_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/maxloc2_8_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc1_16_s1.c gcc-14-20250516/libgfortran/generated/minloc1_16_s1.c
*** gcc-14-20250509/libgfortran/generated/minloc1_16_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc1_16_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc1_16_s4.c gcc-14-20250516/libgfortran/generated/minloc1_16_s4.c
*** gcc-14-20250509/libgfortran/generated/minloc1_16_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc1_16_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc1_4_s1.c gcc-14-20250516/libgfortran/generated/minloc1_4_s1.c
*** gcc-14-20250509/libgfortran/generated/minloc1_4_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc1_4_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc1_4_s4.c gcc-14-20250516/libgfortran/generated/minloc1_4_s4.c
*** gcc-14-20250509/libgfortran/generated/minloc1_4_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc1_4_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc1_8_s1.c gcc-14-20250516/libgfortran/generated/minloc1_8_s1.c
*** gcc-14-20250509/libgfortran/generated/minloc1_8_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc1_8_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc1_8_s4.c gcc-14-20250516/libgfortran/generated/minloc1_8_s4.c
*** gcc-14-20250509/libgfortran/generated/minloc1_8_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc1_8_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc2_16_s1.c gcc-14-20250516/libgfortran/generated/minloc2_16_s1.c
*** gcc-14-20250509/libgfortran/generated/minloc2_16_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc2_16_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc2_16_s4.c gcc-14-20250516/libgfortran/generated/minloc2_16_s4.c
*** gcc-14-20250509/libgfortran/generated/minloc2_16_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc2_16_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc2_4_s1.c gcc-14-20250516/libgfortran/generated/minloc2_4_s1.c
*** gcc-14-20250509/libgfortran/generated/minloc2_4_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc2_4_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc2_4_s4.c gcc-14-20250516/libgfortran/generated/minloc2_4_s4.c
*** gcc-14-20250509/libgfortran/generated/minloc2_4_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc2_4_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc2_8_s1.c gcc-14-20250516/libgfortran/generated/minloc2_8_s1.c
*** gcc-14-20250509/libgfortran/generated/minloc2_8_s1.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc2_8_s1.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/generated/minloc2_8_s4.c gcc-14-20250516/libgfortran/generated/minloc2_8_s4.c
*** gcc-14-20250509/libgfortran/generated/minloc2_8_s4.c	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/generated/minloc2_8_s4.c	Fri May 16 22:32:23 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-14-20250509/libgfortran/m4/ifindloc2.m4 gcc-14-20250516/libgfortran/m4/ifindloc2.m4
*** gcc-14-20250509/libgfortran/m4/ifindloc2.m4	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/m4/ifindloc2.m4	Fri May 16 22:32:23 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-14-20250509/libgfortran/m4/ifunction-s.m4 gcc-14-20250516/libgfortran/m4/ifunction-s.m4
*** gcc-14-20250509/libgfortran/m4/ifunction-s.m4	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/m4/ifunction-s.m4	Fri May 16 22:32:23 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-14-20250509/libgfortran/m4/maxloc2s.m4 gcc-14-20250516/libgfortran/m4/maxloc2s.m4
*** gcc-14-20250509/libgfortran/m4/maxloc2s.m4	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/m4/maxloc2s.m4	Fri May 16 22:32:23 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-14-20250509/libgfortran/m4/minloc2s.m4 gcc-14-20250516/libgfortran/m4/minloc2s.m4
*** gcc-14-20250509/libgfortran/m4/minloc2s.m4	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgfortran/m4/minloc2s.m4	Fri May 16 22:32:23 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-14-20250509/libgo/go/crypto/tls/handshake_client_test.go gcc-14-20250516/libgo/go/crypto/tls/handshake_client_test.go
*** gcc-14-20250509/libgo/go/crypto/tls/handshake_client_test.go	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgo/go/crypto/tls/handshake_client_test.go	Fri May 16 22:32:24 2025
*************** func testResumption(t *testing.T, versio
*** 881,886 ****
--- 881,887 ----
  		MaxVersion:   version,
  		CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA},
  		Certificates: testConfig.Certificates,
+ 		Time:         testTime,
  	}
  
  	issuer, err := x509.ParseCertificate(testRSACertificateIssuer)
*************** func testResumption(t *testing.T, versio
*** 897,902 ****
--- 898,904 ----
  		ClientSessionCache: NewLRUClientSessionCache(32),
  		RootCAs:            rootCAs,
  		ServerName:         "example.golang",
+ 		Time:               testTime,
  	}
  
  	testResumeState := func(test string, didResume bool) {
*************** func testResumption(t *testing.T, versio
*** 944,963 ****
  	}
  
  	// An old session ticket can resume, but the server will provide a ticket encrypted with a fresh key.
! 	serverConfig.Time = func() time.Time { return time.Now().Add(24*time.Hour + time.Minute) }
  	testResumeState("ResumeWithOldTicket", true)
  	if bytes.Equal(ticket[:ticketKeyNameLen], getTicket()[:ticketKeyNameLen]) {
  		t.Fatal("old first ticket matches the fresh one")
  	}
  
  	// Now the session tickey key is expired, so a full handshake should occur.
! 	serverConfig.Time = func() time.Time { return time.Now().Add(24*8*time.Hour + time.Minute) }
  	testResumeState("ResumeWithExpiredTicket", false)
  	if bytes.Equal(ticket, getTicket()) {
  		t.Fatal("expired first ticket matches the fresh one")
  	}
  
! 	serverConfig.Time = func() time.Time { return time.Now() } // reset the time back
  	key1 := randomKey()
  	serverConfig.SetSessionTicketKeys([][32]byte{key1})
  
--- 946,965 ----
  	}
  
  	// An old session ticket can resume, but the server will provide a ticket encrypted with a fresh key.
! 	serverConfig.Time = func() time.Time { return testTime().Add(24*time.Hour + time.Minute) }
  	testResumeState("ResumeWithOldTicket", true)
  	if bytes.Equal(ticket[:ticketKeyNameLen], getTicket()[:ticketKeyNameLen]) {
  		t.Fatal("old first ticket matches the fresh one")
  	}
  
  	// Now the session tickey key is expired, so a full handshake should occur.
! 	serverConfig.Time = func() time.Time { return testTime().Add(24*8*time.Hour + time.Minute) }
  	testResumeState("ResumeWithExpiredTicket", false)
  	if bytes.Equal(ticket, getTicket()) {
  		t.Fatal("expired first ticket matches the fresh one")
  	}
  
! 	serverConfig.Time = func() time.Time { return testTime() } // reset the time back
  	key1 := randomKey()
  	serverConfig.SetSessionTicketKeys([][32]byte{key1})
  
*************** func testResumption(t *testing.T, versio
*** 974,984 ****
  	testResumeState("KeyChangeFinish", true)
  
  	// Age the session ticket a bit, but not yet expired.
! 	serverConfig.Time = func() time.Time { return time.Now().Add(24*time.Hour + time.Minute) }
  	testResumeState("OldSessionTicket", true)
  	ticket = getTicket()
  	// Expire the session ticket, which would force a full handshake.
! 	serverConfig.Time = func() time.Time { return time.Now().Add(24*8*time.Hour + time.Minute) }
  	testResumeState("ExpiredSessionTicket", false)
  	if bytes.Equal(ticket, getTicket()) {
  		t.Fatal("new ticket wasn't provided after old ticket expired")
--- 976,986 ----
  	testResumeState("KeyChangeFinish", true)
  
  	// Age the session ticket a bit, but not yet expired.
! 	serverConfig.Time = func() time.Time { return testTime().Add(24*time.Hour + time.Minute) }
  	testResumeState("OldSessionTicket", true)
  	ticket = getTicket()
  	// Expire the session ticket, which would force a full handshake.
! 	serverConfig.Time = func() time.Time { return testTime().Add(24*8*time.Hour + 2*time.Minute) }
  	testResumeState("ExpiredSessionTicket", false)
  	if bytes.Equal(ticket, getTicket()) {
  		t.Fatal("new ticket wasn't provided after old ticket expired")
*************** func testResumption(t *testing.T, versio
*** 988,994 ****
  	d := 0 * time.Hour
  	for i := 0; i < 13; i++ {
  		d += 12 * time.Hour
! 		serverConfig.Time = func() time.Time { return time.Now().Add(d) }
  		testResumeState("OldSessionTicket", true)
  	}
  	// Expire it (now a little more than 7 days) and make sure a full
--- 990,996 ----
  	d := 0 * time.Hour
  	for i := 0; i < 13; i++ {
  		d += 12 * time.Hour
! 		serverConfig.Time = func() time.Time { return testTime().Add(d) }
  		testResumeState("OldSessionTicket", true)
  	}
  	// Expire it (now a little more than 7 days) and make sure a full
*************** func testResumption(t *testing.T, versio
*** 996,1002 ****
  	// TLS 1.3 since the client should be using a fresh ticket sent over
  	// by the server.
  	d += 12 * time.Hour
! 	serverConfig.Time = func() time.Time { return time.Now().Add(d) }
  	if version == VersionTLS13 {
  		testResumeState("ExpiredSessionTicket", true)
  	} else {
--- 998,1004 ----
  	// TLS 1.3 since the client should be using a fresh ticket sent over
  	// by the server.
  	d += 12 * time.Hour
! 	serverConfig.Time = func() time.Time { return testTime().Add(d) }
  	if version == VersionTLS13 {
  		testResumeState("ExpiredSessionTicket", true)
  	} else {
*************** func testResumption(t *testing.T, versio
*** 1012,1017 ****
--- 1014,1020 ----
  		MaxVersion:   version,
  		CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA},
  		Certificates: testConfig.Certificates,
+ 		Time:         testTime,
  	}
  	serverConfig.SetSessionTicketKeys([][32]byte{key2})
  
*************** func testVerifyConnection(t *testing.T,
*** 1698,1703 ****
--- 1701,1707 ----
  		serverConfig := &Config{
  			MaxVersion:   version,
  			Certificates: []Certificate{testConfig.Certificates[0]},
+ 			Time:         testTime,
  			ClientCAs:    rootCAs,
  			NextProtos:   []string{"protocol1"},
  		}
*************** func testVerifyConnection(t *testing.T,
*** 1711,1716 ****
--- 1715,1721 ----
  			RootCAs:            rootCAs,
  			ServerName:         "example.golang",
  			Certificates:       []Certificate{testConfig.Certificates[0]},
+ 			Time:               testTime,
  			NextProtos:         []string{"protocol1"},
  		}
  		test.configureClient(clientConfig, &clientCalled)
*************** func testVerifyPeerCertificate(t *testin
*** 1753,1760 ****
  	rootCAs := x509.NewCertPool()
  	rootCAs.AddCert(issuer)
  
- 	now := func() time.Time { return time.Unix(1476984729, 0) }
- 
  	sentinelErr := errors.New("TestVerifyPeerCertificate")
  
  	verifyPeerCertificateCallback := func(called *bool, rawCerts [][]byte, validatedChains [][]*x509.Certificate) error {
--- 1758,1763 ----
*************** func testVerifyPeerCertificate(t *testin
*** 2000,2006 ****
  			config.ServerName = "example.golang"
  			config.ClientAuth = RequireAndVerifyClientCert
  			config.ClientCAs = rootCAs
! 			config.Time = now
  			config.MaxVersion = version
  			config.Certificates = make([]Certificate, 1)
  			config.Certificates[0].Certificate = [][]byte{testRSACertificate}
--- 2003,2009 ----
  			config.ServerName = "example.golang"
  			config.ClientAuth = RequireAndVerifyClientCert
  			config.ClientCAs = rootCAs
! 			config.Time = testTime
  			config.MaxVersion = version
  			config.Certificates = make([]Certificate, 1)
  			config.Certificates[0].Certificate = [][]byte{testRSACertificate}
*************** func testVerifyPeerCertificate(t *testin
*** 2017,2023 ****
  		config := testConfig.Clone()
  		config.ServerName = "example.golang"
  		config.RootCAs = rootCAs
! 		config.Time = now
  		config.MaxVersion = version
  		test.configureClient(config, &clientCalled)
  		clientErr := Client(c, config).Handshake()
--- 2020,2026 ----
  		config := testConfig.Clone()
  		config.ServerName = "example.golang"
  		config.RootCAs = rootCAs
! 		config.Time = testTime
  		config.MaxVersion = version
  		test.configureClient(config, &clientCalled)
  		clientErr := Client(c, config).Handshake()
*************** func testGetClientCertificate(t *testing
*** 2330,2336 ****
  		serverConfig.RootCAs = x509.NewCertPool()
  		serverConfig.RootCAs.AddCert(issuer)
  		serverConfig.ClientCAs = serverConfig.RootCAs
! 		serverConfig.Time = func() time.Time { return time.Unix(1476984729, 0) }
  		serverConfig.MaxVersion = version
  
  		clientConfig := testConfig.Clone()
--- 2333,2339 ----
  		serverConfig.RootCAs = x509.NewCertPool()
  		serverConfig.RootCAs.AddCert(issuer)
  		serverConfig.ClientCAs = serverConfig.RootCAs
! 		serverConfig.Time = testTime
  		serverConfig.MaxVersion = version
  
  		clientConfig := testConfig.Clone()
*************** func testResumptionKeepsOCSPAndSCT(t *te
*** 2501,2506 ****
--- 2504,2510 ----
  		ClientSessionCache: NewLRUClientSessionCache(32),
  		ServerName:         "example.golang",
  		RootCAs:            roots,
+ 		Time:               testTime,
  	}
  	serverConfig := testConfig.Clone()
  	serverConfig.MaxVersion = ver
diff -Nrcpad gcc-14-20250509/libgo/go/crypto/tls/handshake_server_test.go gcc-14-20250516/libgo/go/crypto/tls/handshake_server_test.go
*** gcc-14-20250509/libgo/go/crypto/tls/handshake_server_test.go	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgo/go/crypto/tls/handshake_server_test.go	Fri May 16 22:32:24 2025
*************** func testCrossVersionResume(t *testing.T
*** 483,488 ****
--- 483,489 ----
  	serverConfig := &Config{
  		CipherSuites: []uint16{TLS_RSA_WITH_AES_128_CBC_SHA},
  		Certificates: testConfig.Certificates,
+ 		Time:         testTime,
  	}
  	clientConfig := &Config{
  		CipherSuites:       []uint16{TLS_RSA_WITH_AES_128_CBC_SHA},
*************** func testCrossVersionResume(t *testing.T
*** 490,495 ****
--- 491,497 ----
  		ClientSessionCache: NewLRUClientSessionCache(1),
  		ServerName:         "servername",
  		MinVersion:         VersionTLS10,
+ 		Time:               testTime,
  	}
  
  	// Establish a session at TLS 1.1.
diff -Nrcpad gcc-14-20250509/libgo/go/crypto/tls/handshake_test.go gcc-14-20250516/libgo/go/crypto/tls/handshake_test.go
*** gcc-14-20250509/libgo/go/crypto/tls/handshake_test.go	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgo/go/crypto/tls/handshake_test.go	Fri May 16 22:32:24 2025
*************** func fromHex(s string) []byte {
*** 429,434 ****
--- 429,439 ----
  	return b
  }
  
+ // testTime is 2016-10-20T17:32:09.000Z, which is within the validity period of
+ // [testRSACertificate], [testRSACertificateIssuer], [testRSA2048Certificate],
+ // [testRSA2048CertificateIssuer], and [testECDSACertificate].
+ var testTime = func() time.Time { return time.Unix(1476984729, 0) }
+ 
  var testRSACertificate = fromHex(" ")
  
  var testRSACertificateIssuer = fromHex(" ")
diff -Nrcpad gcc-14-20250509/libgo/go/crypto/tls/tls_test.go gcc-14-20250516/libgo/go/crypto/tls/tls_test.go
*** gcc-14-20250509/libgo/go/crypto/tls/tls_test.go	Fri May  9 22:33:02 2025
--- gcc-14-20250516/libgo/go/crypto/tls/tls_test.go	Fri May 16 22:32:24 2025
*************** func TestConnectionState(t *testing.T) {
*** 1058,1065 ****
  	rootCAs := x509.NewCertPool()
  	rootCAs.AddCert(issuer)
  
- 	now := func() time.Time { return time.Unix(1476984729, 0) }
- 
  	const alpnProtocol = "golang"
  	const serverName = "example.golang"
  	var scts = [][]byte{[]byte("dummy sct 1"), []byte("dummy sct 2")}
--- 1058,1063 ----
*************** func TestConnectionState(t *testing.T) {
*** 1075,1081 ****
  		}
  		t.Run(name, func(t *testing.T) {
  			config := &Config{
! 				Time:         now,
  				Rand:         zeroSource{},
  				Certificates: make([]Certificate, 1),
  				MaxVersion:   v,
--- 1073,1079 ----
  		}
  		t.Run(name, func(t *testing.T) {
  			config := &Config{
! 				Time:         testTime,
  				Rand:         zeroSource{},
  				Certificates: make([]Certificate, 1),
  				MaxVersion:   v,
diff -Nrcpad gcc-14-20250509/libstdc++-v3/ChangeLog gcc-14-20250516/libstdc++-v3/ChangeLog
*** gcc-14-20250509/libstdc++-v3/ChangeLog	Fri May  9 22:33:06 2025
--- gcc-14-20250516/libstdc++-v3/ChangeLog	Fri May 16 22:32:25 2025
***************
*** 1,3 ****
--- 1,24 ----
+ 2025-05-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	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  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx2023.xml: Update status of proposal
+ 	implemented after GCC 14.2 release.
+ 	* doc/html/manual/status.html: Regenerate.
+ 
  2025-05-06  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20250509/libstdc++-v3/doc/html/manual/status.html gcc-14-20250516/libstdc++-v3/doc/html/manual/status.html
*** gcc-14-20250509/libstdc++-v3/doc/html/manual/status.html	Fri May  9 22:33:06 2025
--- gcc-14-20250516/libstdc++-v3/doc/html/manual/status.html	Fri May 16 22:32:42 2025
*************** 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">
--- 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><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>
--- 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><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.
*** 2033,2039 ****
          <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">
--- 2033,2039 ----
          <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)</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">
diff -Nrcpad gcc-14-20250509/libstdc++-v3/doc/xml/manual/status_cxx2023.xml gcc-14-20250516/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
*** gcc-14-20250509/libstdc++-v3/doc/xml/manual/status_cxx2023.xml	Fri May  9 22:33:06 2025
--- gcc-14-20250516/libstdc++-v3/doc/xml/manual/status_cxx2023.xml	Fri May 16 22:32:42 2025
*************** 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>
  
--- 418,430 ----
      </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>
  
--- 512,524 ----
      </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.
*** 823,829 ****
          P2508R1
          </link>
        </entry>
!       <entry align="center"> 13.1 (feature test macro not defined)</entry>
        <entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
      </row>
  
--- 821,827 ----
          P2508R1
          </link>
        </entry>
!       <entry align="center"> 13.1 (feature test macro not updated)</entry>
        <entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
      </row>
  
diff -Nrcpad gcc-14-20250509/libstdc++-v3/include/bits/version.def gcc-14-20250516/libstdc++-v3/include/bits/version.def
*** gcc-14-20250509/libstdc++-v3/include/bits/version.def	Fri May  9 22:33:06 2025
--- gcc-14-20250516/libstdc++-v3/include/bits/version.def	Fri May 16 22:32:42 2025
*************** ftms = {
*** 668,675 ****
    values = {
      v = 201703;
      cxxmin = 17;
-     hosted = yes;
-     gthread = yes;
    };
  };
  
--- 668,673 ----
diff -Nrcpad gcc-14-20250509/libstdc++-v3/include/bits/version.h gcc-14-20250516/libstdc++-v3/include/bits/version.h
*** gcc-14-20250509/libstdc++-v3/include/bits/version.h	Fri May  9 22:33:06 2025
--- gcc-14-20250516/libstdc++-v3/include/bits/version.h	Fri May 16 22:32:42 2025
***************
*** 739,745 ****
  #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
--- 739,745 ----
  #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
diff -Nrcpad gcc-14-20250509/libstdc++-v3/include/std/mutex gcc-14-20250516/libstdc++-v3/include/std/mutex
*** gcc-14-20250509/libstdc++-v3/include/std/mutex	Fri May  9 22:33:07 2025
--- gcc-14-20250516/libstdc++-v3/include/std/mutex	Fri May 16 22:32:42 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 731,737 ****
  	}
      }
  
! #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
--- 731,737 ----
  	}
      }
  
! #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-14-20250509/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc gcc-14-20250516/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
*** gcc-14-20250509/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc	Fri May  9 22:33:09 2025
--- gcc-14-20250516/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc	Fri May 16 22:32:45 2025
***************
*** 1,5 ****
  // { dg-do compile { target c++17 } }
- // { dg-require-gthreads "" }
  // { dg-add-options no_pch }
  
  // Copyright (C) 2017-2024 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>);
  }
