diff -Nrcpad gcc-15-20260328/LAST_UPDATED gcc-15-20260404/LAST_UPDATED
*** gcc-15-20260328/LAST_UPDATED	Sat Mar 28 22:32:20 2026
--- gcc-15-20260404/LAST_UPDATED	Sat Apr  4 22:32:20 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision 2241491c24848355a713532eecdc1ce0df35fc1d
--- 1 ----
! Obtained from git: releases/gcc-15 revision 8a9cf3a8ebd83f1c34b2f757b22a929a1d98ef0e
diff -Nrcpad gcc-15-20260328/MD5SUMS gcc-15-20260404/MD5SUMS
*** gcc-15-20260328/MD5SUMS	Sat Mar 28 22:32:24 2026
--- gcc-15-20260404/MD5SUMS	Sat Apr  4 22:32:24 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20260328.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20260404.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 392629cea20fae7cba78e8883b560e42  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 63eb06c2fed0946b455c73a3a95423b6  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 514,520 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! c5329edbc41627a12ecd3a00311bde31  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 514,520 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 94e9d5163dd35c6dca4fcb715b0c0041  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 551,557 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! ae0327587b0a3ed0fcf20f660bb46c8d  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 551,557 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 417465608efab1dafe68b962952d28dc  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** f808dbcc1ad6add5a0867c4b3e03fc4d  gcc/bu
*** 3205,3211 ****
  542c803f6a28d39f6101f0d3286bd240  gcc/builtins.cc
  d86baafdac933140bc11c4cbfb28779e  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 241bbdcb60fdbac922f3f09c98785498  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
--- 3205,3211 ----
  542c803f6a28d39f6101f0d3286bd240  gcc/builtins.cc
  d86baafdac933140bc11c4cbfb28779e  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 913d3b73de4bbec9a3a17dbfeea3a1d0  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
*************** b5a916bb9dd788754ac9e4ad7174ee74  gcc/co
*** 3420,3426 ****
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! 3a9482ecd7b2be15fa26c030a0ba5515  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  1d528f9807496430cc01191e59f745d3  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 3420,3426 ----
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! 80ae961273735f72cbc0e508c76edf82  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  1d528f9807496430cc01191e59f745d3  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** f931bc8e97c2f1358ad3ad91e902d553  gcc/co
*** 3453,3459 ****
  c9a52df251f3132f3562d3fffaa39c7b  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  b14ff14af09e35148ebaceacc90e59a7  gcc/config/aarch64/aarch64-passes.def
! 2b41eb9ae8146e717512d335e90ad5d0  gcc/config/aarch64/aarch64-protos.h
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  f28e7beab7cc8baa0b1a2e5e9efc0597  gcc/config/aarch64/aarch64-simd-builtins.def
  9453dad923577ea174d49a4d5c3d2dc4  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
--- 3453,3459 ----
  c9a52df251f3132f3562d3fffaa39c7b  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  b14ff14af09e35148ebaceacc90e59a7  gcc/config/aarch64/aarch64-passes.def
! 160daa130fb4c634bdf9fc8eb302c0d3  gcc/config/aarch64/aarch64-protos.h
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  f28e7beab7cc8baa0b1a2e5e9efc0597  gcc/config/aarch64/aarch64-simd-builtins.def
  9453dad923577ea174d49a4d5c3d2dc4  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
*************** f4331859aa1baca8950f37fd9dfbe613  gcc/co
*** 3481,3487 ****
  b03a8cc94abbd83c9ad4852cd8527434  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! bfb1e0ae70ccf9df8413866df5a0ea66  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
  db5a2720311ab2437aac8b6091056b31  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
--- 3481,3487 ----
  b03a8cc94abbd83c9ad4852cd8527434  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! 4c1f9f7034ca7071fe2daa12c748687e  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
  db5a2720311ab2437aac8b6091056b31  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
*************** d88b01ec5c51c0e7e9948b03d926629d  gcc/co
*** 3533,3540 ****
  a817cc8c0648af85cd26652c17c0f063  gcc/config/aarch64/tuning_models/emag.h
  c414f4f4b0ca18716b952cdc996cd336  gcc/config/aarch64/tuning_models/exynosm1.h
  c20726a55db2926c898f89280cf7b685  gcc/config/aarch64/tuning_models/fujitsu_monaka.h
! 9f73f9910638c9e0a3139320e38ed6f0  gcc/config/aarch64/tuning_models/generic.h
! 3db39fdaa1e6c980b54f842eeff2fa0a  gcc/config/aarch64/tuning_models/generic_armv8_a.h
  cbb7f4c1241626aba880f9f98cf59b4f  gcc/config/aarch64/tuning_models/generic_armv9_a.h
  0ff8fa5f2ec82601fe7df026cfd4068a  gcc/config/aarch64/tuning_models/hip12.h
  e3084154e4d8706cd3825dad493faefd  gcc/config/aarch64/tuning_models/neoverse512tvb.h
--- 3533,3540 ----
  a817cc8c0648af85cd26652c17c0f063  gcc/config/aarch64/tuning_models/emag.h
  c414f4f4b0ca18716b952cdc996cd336  gcc/config/aarch64/tuning_models/exynosm1.h
  c20726a55db2926c898f89280cf7b685  gcc/config/aarch64/tuning_models/fujitsu_monaka.h
! 0f322b98277aa317e5d5cadc39479809  gcc/config/aarch64/tuning_models/generic.h
! e30640dfea93ba03612db7dd00511bf4  gcc/config/aarch64/tuning_models/generic_armv8_a.h
  cbb7f4c1241626aba880f9f98cf59b4f  gcc/config/aarch64/tuning_models/generic_armv9_a.h
  0ff8fa5f2ec82601fe7df026cfd4068a  gcc/config/aarch64/tuning_models/hip12.h
  e3084154e4d8706cd3825dad493faefd  gcc/config/aarch64/tuning_models/neoverse512tvb.h
*************** d111dbb07d61205c1bdfcb26461d17dc  gcc/co
*** 4928,4934 ****
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  b467d35485b39b25863e918609a322d0  gcc/config/riscv/riscv-ftypes.def
! b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
  2b3bbaf831944c3ad3b4219f260ade71  gcc/config/riscv/riscv-opts.h
  028368b39011fff2cdc58337d388aaa8  gcc/config/riscv/riscv-passes.def
  773b37f980789be83dbd30a77dc98e11  gcc/config/riscv/riscv-protos.h
--- 4928,4934 ----
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  b467d35485b39b25863e918609a322d0  gcc/config/riscv/riscv-ftypes.def
! 0d09936882064ab1e86b155a0dada37c  gcc/config/riscv/riscv-modes.def
  2b3bbaf831944c3ad3b4219f260ade71  gcc/config/riscv/riscv-opts.h
  028368b39011fff2cdc58337d388aaa8  gcc/config/riscv/riscv-passes.def
  773b37f980789be83dbd30a77dc98e11  gcc/config/riscv/riscv-protos.h
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5501,5507 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 6c28511e4a3c3b881e5468ac4c2641de  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5501,5507 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 88d8e3103a784d94a721de60fff675bb  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** c2a7409e57253e5d9bfd8ce29fb85212  gcc/cp
*** 5581,5587 ****
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  8a43dc7eb02c2c19d4faa7344f490b26  gcc/cp/method.cc
! 0d0f91461e7221f8b0796440093481e1  gcc/cp/module.cc
  64b5a4c1348e34deeccb9fe56f746027  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
--- 5581,5587 ----
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  8a43dc7eb02c2c19d4faa7344f490b26  gcc/cp/method.cc
! 0202bfe8a0fb4ace4573a0b354dea0a9  gcc/cp/module.cc
  64b5a4c1348e34deeccb9fe56f746027  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6061,6067 ****
  c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 397ab9622152e2d96c52c6dc650558d6  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6061,6067 ----
  c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 494a05a22f4d4d3f1a2906a023560164  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** e2cec99de05b647cb16807fa80637b97  gcc/fo
*** 6102,6108 ****
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! abf39bff93a97c8fa09ce7ec260b0fe4  gcc/fortran/decl.cc
  917fd2716f1eef2f47d4f032e14958ad  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9982bdf75ac5c9630f66edd2aea1fe8b  gcc/fortran/dump-parse-tree.cc
--- 6102,6108 ----
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! 1d27e843e7c2861862edeb91e9dab011  gcc/fortran/decl.cc
  917fd2716f1eef2f47d4f032e14958ad  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9982bdf75ac5c9630f66edd2aea1fe8b  gcc/fortran/dump-parse-tree.cc
*************** bd08c55098f00394b9922e6163c27b92  gcc/fo
*** 6115,6121 ****
  594106f4945aba24162f5490e0fec580  gcc/fortran/gfortran.h
  7ec4df43fc3e2bbc14dd583bdd6483a5  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
! 9253f176e44c2708e2c503251b27d6b8  gcc/fortran/interface.cc
  e80f8d5e01bd73d525ea93cef3a40a2d  gcc/fortran/intrinsic.cc
  cf346cfc6814f9a773f9f0ee705ab3aa  gcc/fortran/intrinsic.h
  5a25603bd6939073616d56ff5c8de9cc  gcc/fortran/intrinsic.texi
--- 6115,6121 ----
  594106f4945aba24162f5490e0fec580  gcc/fortran/gfortran.h
  7ec4df43fc3e2bbc14dd583bdd6483a5  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
! 086a97ad7c8abc7e4d0b631f1d625ed2  gcc/fortran/interface.cc
  e80f8d5e01bd73d525ea93cef3a40a2d  gcc/fortran/intrinsic.cc
  cf346cfc6814f9a773f9f0ee705ab3aa  gcc/fortran/intrinsic.h
  5a25603bd6939073616d56ff5c8de9cc  gcc/fortran/intrinsic.texi
*************** f654eecadb8cabd4c371426eb83f08b1  gcc/fo
*** 6143,6166 ****
  db182b9f9bffc428002f5b5b6fb821b8  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
! c78c72f9e780bf1c0eea63295c5ba590  gcc/fortran/simplify.cc
  3255bc920c3609e58d8a01f6464313e8  gcc/fortran/st.cc
  abd1247d4f726490e981994fe5fc3124  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 31f889e6eb6935cd47df62ecc866e32d  gcc/fortran/trans-array.cc
  a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fortran/trans-array.h
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  6866300c032ec0247d520a77be27d9fa  gcc/fortran/trans-decl.cc
! f0413583b5b675eae69f522ecf6551f9  gcc/fortran/trans-expr.cc
  8ba8fa53a4179a343767efc9ef4e17be  gcc/fortran/trans-intrinsic.cc
  a26cd103074d9ae2f87ac35ba1b90970  gcc/fortran/trans-io.cc
! 2e5ebe2e22c411c3e1476d807025ae07  gcc/fortran/trans-openmp.cc
  03aafb32bf3170c38549a2536ebb7e4c  gcc/fortran/trans-stmt.cc
  3e46866176ab0bac5fb67ed27515535d  gcc/fortran/trans-stmt.h
! efefffe5a6b8f802f86ff8ace5e1bff6  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  c058a3abcdadde24710d79820f9cfc70  gcc/fortran/trans.cc
  13445b3cfeaf8978ee1d89a1997de16d  gcc/fortran/trans.h
--- 6143,6166 ----
  db182b9f9bffc428002f5b5b6fb821b8  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
! 47b3ac143dd07e65789786d79d86b9d9  gcc/fortran/simplify.cc
  3255bc920c3609e58d8a01f6464313e8  gcc/fortran/st.cc
  abd1247d4f726490e981994fe5fc3124  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! bb8ad9abb96ac91292a61b3c7fbde987  gcc/fortran/trans-array.cc
  a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fortran/trans-array.h
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  6866300c032ec0247d520a77be27d9fa  gcc/fortran/trans-decl.cc
! 7dd66a99562b6cf73c8bab65a22829dc  gcc/fortran/trans-expr.cc
  8ba8fa53a4179a343767efc9ef4e17be  gcc/fortran/trans-intrinsic.cc
  a26cd103074d9ae2f87ac35ba1b90970  gcc/fortran/trans-io.cc
! d61eaeb7f04155dde37d6f463894181b  gcc/fortran/trans-openmp.cc
  03aafb32bf3170c38549a2536ebb7e4c  gcc/fortran/trans-stmt.cc
  3e46866176ab0bac5fb67ed27515535d  gcc/fortran/trans-stmt.h
! b798d7499d8f9c9573d942f87340af9e  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  c058a3abcdadde24710d79820f9cfc70  gcc/fortran/trans.cc
  13445b3cfeaf8978ee1d89a1997de16d  gcc/fortran/trans.h
*************** b3a965e425e6cf7888319667faf58da9  gcc/sy
*** 8448,8454 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 909aa3db57dc621436cd7ecb6b06b1a9  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8448,8454 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 84efa61900a37c792ae4d71b310ba791  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** c93b823398a766831d77299480881f8c  gcc/te
*** 26318,26323 ****
--- 26318,26325 ----
  c6cd935c87d3011588860690f34dcffa  gcc/testsuite/g++.dg/modules/bool-1_c.C
  67226a0f8fb18f2758255a7e268f26e1  gcc/testsuite/g++.dg/modules/bug-1_a.C
  88cddc44441b25d3b40a26a97bbb9459  gcc/testsuite/g++.dg/modules/bug-1_b.C
+ 98145ded42c55e56ff47a40bc69c8e15  gcc/testsuite/g++.dg/modules/builtin-10_a.C
+ fe8e60bc1bfdf56a0d11c2d420f2bcbf  gcc/testsuite/g++.dg/modules/builtin-10_b.C
  55f76fb62baa0263bb591fd5ac620cfb  gcc/testsuite/g++.dg/modules/builtin-1_a.C
  236c48837d220069251a3abe2784e304  gcc/testsuite/g++.dg/modules/builtin-1_b.C
  140e231775a8971dedf71fa2312c672e  gcc/testsuite/g++.dg/modules/builtin-2.C
*************** b545fd5015b04774ac8c95c87722bfc2  gcc/te
*** 46868,46874 ****
  76411379bc46f8e28491db8515c8b035  gcc/testsuite/gcc.dg/freestanding-main.c
  196d33dd29e6d3bd808b05c7472ef1d2  gcc/testsuite/gcc.dg/freestanding-nonint-main.c
  60aef7ab4a0a9bca44f5182276f77cc3  gcc/testsuite/gcc.dg/fshort-wchar.c
! 2d177ba4dab767c88012364d96a56a76  gcc/testsuite/gcc.dg/fstack-protector-strong.c
  e229fba1e745ea8e6ffbf5e48314ecd3  gcc/testsuite/gcc.dg/ftrapv-1.c
  674ce79cdefdee8408c64f5ff5fc573d  gcc/testsuite/gcc.dg/ftrapv-2.c
  9337f6ee91ecdc5686e015d1984a97a2  gcc/testsuite/gcc.dg/ftrapv-3.c
--- 46870,46876 ----
  76411379bc46f8e28491db8515c8b035  gcc/testsuite/gcc.dg/freestanding-main.c
  196d33dd29e6d3bd808b05c7472ef1d2  gcc/testsuite/gcc.dg/freestanding-nonint-main.c
  60aef7ab4a0a9bca44f5182276f77cc3  gcc/testsuite/gcc.dg/fshort-wchar.c
! c03b7986b16e324c69d30de40be5dec9  gcc/testsuite/gcc.dg/fstack-protector-strong.c
  e229fba1e745ea8e6ffbf5e48314ecd3  gcc/testsuite/gcc.dg/ftrapv-1.c
  674ce79cdefdee8408c64f5ff5fc573d  gcc/testsuite/gcc.dg/ftrapv-2.c
  9337f6ee91ecdc5686e015d1984a97a2  gcc/testsuite/gcc.dg/ftrapv-3.c
*************** f85ef0b99140422d78068ad18a39e03b  gcc/te
*** 59549,59559 ****
  b10686cc9cc745d9a4e579ee285eae2d  gcc/testsuite/gcc.dg/vect/vect-fma-2.c
  f26bda59075ce8ddcb0291dc86a118b3  gcc/testsuite/gcc.dg/vect/vect-fma-3.c
  609ec8572941506ac02bdead3631cf1a  gcc/testsuite/gcc.dg/vect/vect-fmax-1.c
! 8dd709fc543f80ce70588b05e38be7ae  gcc/testsuite/gcc.dg/vect/vect-fmax-2.c
! b913a0ce97e1075ed9731f6e62b860bf  gcc/testsuite/gcc.dg/vect/vect-fmax-3.c
  f7641c61bbf333053e42be5bfa67d8e4  gcc/testsuite/gcc.dg/vect/vect-fmin-1.c
! 33e9990b22cd49f97ec590b283e99e41  gcc/testsuite/gcc.dg/vect/vect-fmin-2.c
! 92e4333ba4e6a6e7852441677e9dd7e1  gcc/testsuite/gcc.dg/vect/vect-fmin-3.c
  beb6b00a289da33c6502147b465dbdfd  gcc/testsuite/gcc.dg/vect/vect-fncall-mask-math.c
  ddb5b38696ce380776208fd63305431f  gcc/testsuite/gcc.dg/vect/vect-fncall-mask.c
  e41338bfbaaf9c5f7d3e7394fd0720c0  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
--- 59551,59561 ----
  b10686cc9cc745d9a4e579ee285eae2d  gcc/testsuite/gcc.dg/vect/vect-fma-2.c
  f26bda59075ce8ddcb0291dc86a118b3  gcc/testsuite/gcc.dg/vect/vect-fma-3.c
  609ec8572941506ac02bdead3631cf1a  gcc/testsuite/gcc.dg/vect/vect-fmax-1.c
! ff69a9e19928b3a1de48ce1b898d4a45  gcc/testsuite/gcc.dg/vect/vect-fmax-2.c
! d6b11f32049737083a9d8a816c7de6db  gcc/testsuite/gcc.dg/vect/vect-fmax-3.c
  f7641c61bbf333053e42be5bfa67d8e4  gcc/testsuite/gcc.dg/vect/vect-fmin-1.c
! 0cde09c690b3ca2b483cb6ce9cc4115e  gcc/testsuite/gcc.dg/vect/vect-fmin-2.c
! c8add09e1cb63057bdcddaad5063ed57  gcc/testsuite/gcc.dg/vect/vect-fmin-3.c
  beb6b00a289da33c6502147b465dbdfd  gcc/testsuite/gcc.dg/vect/vect-fncall-mask-math.c
  ddb5b38696ce380776208fd63305431f  gcc/testsuite/gcc.dg/vect/vect-fncall-mask.c
  e41338bfbaaf9c5f7d3e7394fd0720c0  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
*************** cc8dc43c5d18de4984503248c86934e4  gcc/te
*** 62086,62091 ****
--- 62088,62100 ----
  83ac293146b05a62ec4a19e52751ebd1  gcc/testsuite/gcc.target/aarch64/pr121253.c
  c34d772e393da040a9ab73442d231d49  gcc/testsuite/gcc.target/aarch64/pr121853_1.c
  bf526d120c538bd714985ac66c46f7bb  gcc/testsuite/gcc.target/aarch64/pr121853_2.c
+ 891d4e0624727f3778442b4412904fe3  gcc/testsuite/gcc.target/aarch64/pr123017_1.c
+ b19750d7ad94a45a0676b41ee667dab7  gcc/testsuite/gcc.target/aarch64/pr123017_2.c
+ f79aeeb83d4a0d143dccfa2cb843cc52  gcc/testsuite/gcc.target/aarch64/pr123017_3.c
+ 2c75a77689a0571c6259e94e431b0462  gcc/testsuite/gcc.target/aarch64/pr123017_4.c
+ 0da69e7d40288cff0a7db38b96b3ffcb  gcc/testsuite/gcc.target/aarch64/pr123017_5.c
+ ec79fa3be7327c757d4abcecfe6afb40  gcc/testsuite/gcc.target/aarch64/pr123017_6.c
+ 3c99f5bd7556f75f513af4ccabe65c85  gcc/testsuite/gcc.target/aarch64/pr123017_7.c
  98a4eb67a4078cb117ea1c80d44fee14  gcc/testsuite/gcc.target/aarch64/pr123206.c
  95306727ea8db0e2fdb8e199f754c587  gcc/testsuite/gcc.target/aarch64/pr123285-1.c
  3525a5777032197cdd1e39b2aad94c29  gcc/testsuite/gcc.target/aarch64/pr123294-1.c
*************** f2efb1e403760ba651384395f140d44c  gcc/te
*** 89071,89076 ****
--- 89080,89086 ----
  6704284cca589a739b8ae2118470d94d  gcc/testsuite/gcc.target/riscv/pr121787-2.c
  517cee01d883f2604f8317ec8307ae44  gcc/testsuite/gcc.target/riscv/pr122215.c
  fff9d84e7d142a27609a7e87d10bfded  gcc/testsuite/gcc.target/riscv/pr123092.c
+ a06f50eaf9ffceda3f1e44f0fe8c75f8  gcc/testsuite/gcc.target/riscv/pr124674.c
  37a08389ba95284cc27832767dfc1430  gcc/testsuite/gcc.target/riscv/pr43644.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
  c2ac0b53d6af56f5ec5bded3d252dddc  gcc/testsuite/gcc.target/riscv/pr93202.c
*************** dbc20d52e3c86639db916ad3c6392de8  gcc/te
*** 101554,101559 ****
--- 101564,101570 ----
  784981c65487b4a0183cad86f46120aa  gcc/testsuite/gfortran.dg/class_dummy_7.f90
  0cc6ac2d4005a9c12c43562be1747080  gcc/testsuite/gfortran.dg/class_dummy_8.f90
  2bfebae5013cc0462982590edf427c4f  gcc/testsuite/gfortran.dg/class_dummy_9.f90
+ 35e23120f2117bdd41eea9932266635b  gcc/testsuite/gfortran.dg/class_elemental_1.f90
  2f2b6b89c03eb0121abcd60df79d27ee  gcc/testsuite/gfortran.dg/class_is_1.f90
  84f9ccdf2ee8c8cfe397a0c82a7730af  gcc/testsuite/gfortran.dg/class_nameclash.f90
  9602d01ce3a47f3e2255aba5f234d1ae  gcc/testsuite/gfortran.dg/class_optional_1.f90
*************** c2c9b1a1db79eedb25331d3565231b66  gcc/te
*** 103943,103948 ****
--- 103954,103960 ----
  1365d33484c21cf6b603f60889b019a4  gcc/testsuite/gfortran.dg/gomp/pr92977.f90
  6db6e7072dccd0be789b6dc9bd2a586c  gcc/testsuite/gfortran.dg/gomp/pr93555.f90
  a921eeb5697bd066712d41d66d374930  gcc/testsuite/gfortran.dg/gomp/pr94672.f90
+ a3f6ee03ab79b516d4db9359c21a4896  gcc/testsuite/gfortran.dg/gomp/pr95163.f90
  8a04653b9aa2543e13a3136934e00444  gcc/testsuite/gfortran.dg/gomp/pr95869.f90
  f832e5b53ac5754d0490d912e4da9ec6  gcc/testsuite/gfortran.dg/gomp/pr99226.f90
  bcd0369b2e799c3808032efd4c583295  gcc/testsuite/gfortran.dg/gomp/pr99928-1.f90
*************** a3ab8fbef738997039cfd45f350461a3  gcc/te
*** 105789,105794 ****
--- 105801,105807 ----
  457d6bb30d331f4d3250628bdae53dc3  gcc/testsuite/gfortran.dg/power_8.f90
  e13b5dd50c332ea865cb6fabb5f79f29  gcc/testsuite/gfortran.dg/pr100154.f90
  c9e427811a6c55713cbb096365eec807  gcc/testsuite/gfortran.dg/pr100193.f90
+ a7f1c1fb2de0acfdd19303c2a0d29d73  gcc/testsuite/gfortran.dg/pr100194.f90
  e08828a7d864f8531a58aa25e1b58894  gcc/testsuite/gfortran.dg/pr100273.f90
  fc0ae38e4fdc2d7761aba57181c97b51  gcc/testsuite/gfortran.dg/pr100551.f90
  17f130e627232745d6279696b6984514  gcc/testsuite/gfortran.dg/pr100949.f90
*************** afe21b866be9162c6b654dc6771e6ead  gcc/te
*** 105812,105817 ****
--- 105825,105831 ----
  1dd53d463caf1e16e47d0fe9cbf2309f  gcc/testsuite/gfortran.dg/pr102366.f90
  fc5031b16be6a0dc4152f151793f4acb  gcc/testsuite/gfortran.dg/pr102458.f90
  cbd40bc334c217d37c198b1f27373810  gcc/testsuite/gfortran.dg/pr102458b.f90
+ 44bc627bf6c28a64567fdb75fe688fdc  gcc/testsuite/gfortran.dg/pr102459.f90
  09759ba73ae30c3a54be532d97b7f526  gcc/testsuite/gfortran.dg/pr102520.f90
  73ad9dd0e1a553e17865bdfdf09510d0  gcc/testsuite/gfortran.dg/pr102532.f90
  4efde3b7d107b33c9c8792e23b683d17  gcc/testsuite/gfortran.dg/pr102596.f90
*************** cf5eb5dbc3807278a7f8e6a11e5b41bf  gcc/te
*** 106002,106007 ****
--- 106016,106022 ----
  b9c77c8cd78fcd9e57fbfafe732a8c95  gcc/testsuite/gfortran.dg/pr122936.f90
  9aa1b21c93a3838e52245be748b9b301  gcc/testsuite/gfortran.dg/pr124161.f90
  5bfaeea8d13a5035cf46aaab485c2803  gcc/testsuite/gfortran.dg/pr124450.f90
+ 864111c6768fee3f647605c5cf8db475  gcc/testsuite/gfortran.dg/pr124567.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
*************** e338cfba2f466abedf9af92b52cd6fb3  gcc/te
*** 106454,106459 ****
--- 106469,106475 ----
  b6ff04901e3aee18765a74bf65804e38  gcc/testsuite/gfortran.dg/pr82253.f90
  344be7c0602202457870166d368441e0  gcc/testsuite/gfortran.dg/pr82314.f90
  7f04eca318ca64e1442ceabc31fab9fb  gcc/testsuite/gfortran.dg/pr82397.f
+ 9f2daedbf44298499832b2b6d72eb79f  gcc/testsuite/gfortran.dg/pr82721.f90
  5e9eb92684de357b4c23a7f04959db82  gcc/testsuite/gfortran.dg/pr82774.f90
  616772c135ee9b14c410dcd23fdbc3e4  gcc/testsuite/gfortran.dg/pr82973.f90
  0a918cecf6f52a31004b77728cb30038  gcc/testsuite/gfortran.dg/pr83113.f90
*************** a6b1d851f4c5b6cfffa8f56c8f9cd150  gcc/te
*** 106699,106704 ****
--- 106715,106721 ----
  81355955ad98611710451ef6e76d9dbe  gcc/testsuite/gfortran.dg/pr95090.f90
  10a1157f7a9fa8f2042a563c98a25914  gcc/testsuite/gfortran.dg/pr95091.f90
  7d3e3457f90590b31740ffdd3a4866a3  gcc/testsuite/gfortran.dg/pr95104.f90
+ e11cb19990efd60513bbac52ee105f02  gcc/testsuite/gfortran.dg/pr95338.f90
  66c58770643ed3f1944820fa6790cc27  gcc/testsuite/gfortran.dg/pr95340.f90
  395135621c98fea610c5f2b17feb7637  gcc/testsuite/gfortran.dg/pr95342.f90
  b9d5894d240b89777d50d53e0cd60929  gcc/testsuite/gfortran.dg/pr95373_1.f90
*************** fd451ea4b1a79fa9abd2cf68f7412b28  gcc/te
*** 106860,106865 ****
--- 106877,106883 ----
  9320a3af3b59853e788ce2c3b67864d0  gcc/testsuite/gfortran.dg/proc_decl_28.f90
  2934e7195cdccd1e48244488c1c65fe0  gcc/testsuite/gfortran.dg/proc_decl_29.f90
  16c107e1f480b5af263a3b24682145bf  gcc/testsuite/gfortran.dg/proc_decl_3.f90
+ fd4afe19d40a633c195f934e575928c5  gcc/testsuite/gfortran.dg/proc_decl_30.f90
  a8525fbfa5dd7f02a6b578bdaa7287ee  gcc/testsuite/gfortran.dg/proc_decl_4.f90
  fe8d4f1e3d50a724aa39ae0786c170a8  gcc/testsuite/gfortran.dg/proc_decl_5.f90
  db3fe18298b61a4ca63d026cd283db3b  gcc/testsuite/gfortran.dg/proc_decl_6.f90
*************** eef9c4fb4632664f421c4067e9f7dd53  gcc/te
*** 107291,107296 ****
--- 107309,107315 ----
  bcec3240f40aa5093a05d7cd8024acf3  gcc/testsuite/gfortran.dg/save_6.f90
  751220763a6526f3644c983c901f1c25  gcc/testsuite/gfortran.dg/save_7.f90
  6be5b43eab49c79032e7249345565e1c  gcc/testsuite/gfortran.dg/save_8.f90
+ 54c44419e66a3bf4083075200afb117b  gcc/testsuite/gfortran.dg/save_alloc_character_1.f90
  969e348eec71de0c469550da97db323d  gcc/testsuite/gfortran.dg/save_common.f90
  8077a483f690b8b2a62c945c63fa4b57  gcc/testsuite/gfortran.dg/save_parameter.f90
  1a1f478cd1af5c7ca0f1139bd3142853  gcc/testsuite/gfortran.dg/save_result.f90
*************** f8a43d7dd54caabde100374f7144dfc3  gcc/te
*** 112207,112212 ****
--- 112226,112233 ----
  ab899fc6f72925f8084209d5187582d5  gcc/testsuite/gnat.dg/opt106_pkg1.ads
  acc696967fd0d2302cfab5304ee3a970  gcc/testsuite/gnat.dg/opt106_pkg2.adb
  e4a127b46129811de1774562e29fb8fc  gcc/testsuite/gnat.dg/opt106_pkg2.ads
+ 9d150b19ff3791d45b239fbe539ca3ec  gcc/testsuite/gnat.dg/opt107.adb
+ b639e95e2056957733aa779c0c757061  gcc/testsuite/gnat.dg/opt107_pkg.ads
  5d50fb38b1ab84c39760906cb103c522  gcc/testsuite/gnat.dg/opt10_pkg.ads
  603264d4afdd2fd2174ea9c4cf4653ed  gcc/testsuite/gnat.dg/opt11.adb
  53160585b3a5d820b653e1e0d5f14c75  gcc/testsuite/gnat.dg/opt11.ads
*************** be605b5b6cac7c418bd348b54f9d47cf  gcc/tr
*** 118243,118249 ****
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  adfc498b0c97a8123c02d418757df496  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
! 248536a657daf57312bb221df42aa9c0  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
  3cd977c6c05b7607c353e399fcca0393  gcc/tree-ssa-forwprop.cc
  417b731d1c8923a0eb41474c924dd760  gcc/tree-ssa-ifcombine.cc
--- 118264,118270 ----
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  adfc498b0c97a8123c02d418757df496  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
! 5b0ddf1c586505180a07459157fc354c  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
  3cd977c6c05b7607c353e399fcca0393  gcc/tree-ssa-forwprop.cc
  417b731d1c8923a0eb41474c924dd760  gcc/tree-ssa-ifcombine.cc
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 132356,132362 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 53a3cbf985b1945eccffc8771cf88209  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 132377,132383 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! c79cbdd855b500df38315eec4d0bfdb0  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** f220a3edd81f69f475178857df2cbeb7  libstd
*** 133051,133057 ****
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
  e8e2df39ad9386a7f40ad4e7c3ae4658  libstdc++-v3/include/bits/cow_string.h
  3096fc9df7ce27113a7adfd3be390678  libstdc++-v3/include/bits/cpp_type_traits.h
! 7cddddf44455557aa3a51978b5887fff  libstdc++-v3/include/bits/deque.tcc
  be08582d1795753f6e8fb613a7ec9fe0  libstdc++-v3/include/bits/elements_of.h
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
--- 133072,133078 ----
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
  e8e2df39ad9386a7f40ad4e7c3ae4658  libstdc++-v3/include/bits/cow_string.h
  3096fc9df7ce27113a7adfd3be390678  libstdc++-v3/include/bits/cpp_type_traits.h
! 0c714f37c68f18b6938f3dafdb2bb8cc  libstdc++-v3/include/bits/deque.tcc
  be08582d1795753f6e8fb613a7ec9fe0  libstdc++-v3/include/bits/elements_of.h
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
*************** ef960a69cca203133e14f230f029c45f  libstd
*** 133160,133166 ****
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e090d043a8cdc4479dde4340af533938  libstdc++-v3/include/bits/stl_tempbuf.h
  c0874190fac1e81e66ba299a8440f4e4  libstdc++-v3/include/bits/stl_tree.h
! 39e026c8777c826d5bfa7a763d177052  libstdc++-v3/include/bits/stl_uninitialized.h
  8490e2fecef4cd7900fd9fb673090379  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
--- 133181,133187 ----
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e090d043a8cdc4479dde4340af533938  libstdc++-v3/include/bits/stl_tempbuf.h
  c0874190fac1e81e66ba299a8440f4e4  libstdc++-v3/include/bits/stl_tree.h
! ebd80c8a3e4b124803c9869be8fac1fa  libstdc++-v3/include/bits/stl_uninitialized.h
  8490e2fecef4cd7900fd9fb673090379  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
diff -Nrcpad gcc-15-20260328/gcc/ChangeLog gcc-15-20260404/gcc/ChangeLog
*** gcc-15-20260328/gcc/ChangeLog	Sat Mar 28 22:32:06 2026
--- gcc-15-20260404/gcc/ChangeLog	Sat Apr  4 22:32:05 2026
***************
*** 1,3 ****
--- 1,37 ----
+ 2026-04-01  Wu Haotian  <rigoligo03@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-03-31  Wu Haotian  <rigoligo03@gmail.com>
+ 
+ 	* config.gcc: removed linux.h and t-linux for loongarch*-*-elf* targets
+ 
+ 2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-ssa-dse.cc (compute_trims): Bail out if ref->size is not
+ 	byte aligned either.
+ 
+ 2026-03-30  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/123017
+ 	* config/aarch64/aarch64-protos.h (struct cpu_branch_cost): Add
+ 	br_mispredict_factor.
+ 	* config/aarch64/aarch64.cc (aarch64_max_noce_ifcvt_seq_cost,
+ 	aarch64_noce_conversion_profitable_p,
+ 	TARGET_MAX_NOCE_IFCVT_SEQ_COST,
+ 	TARGET_NOCE_CONVERSION_PROFITABLE_P): New.
+ 	* config/aarch64/tuning_models/generic.h (generic_branch_cost): Add
+ 	br_mispredict_factor.
+ 	* config/aarch64/tuning_models/generic_armv8_a.h: Remove
+ 	generic_armv8_a_branch_cost and use generic_branch_cost.
+ 
+ 2026-03-29  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-03-29  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR target/124674
+ 	* config/riscv/riscv-modes.def: Create OImode.
+ 
  2026-03-25  Richard Biener  <rguenther@suse.de>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260328/gcc/DATESTAMP gcc-15-20260404/gcc/DATESTAMP
*** gcc-15-20260328/gcc/DATESTAMP	Sat Mar 28 22:32:06 2026
--- gcc-15-20260404/gcc/DATESTAMP	Sat Apr  4 22:32:06 2026
***************
*** 1 ****
! 20260328
--- 1 ----
! 20260404
diff -Nrcpad gcc-15-20260328/gcc/c-family/ChangeLog gcc-15-20260404/gcc/c-family/ChangeLog
*** gcc-15-20260328/gcc/c-family/ChangeLog	Sat Mar 28 22:32:06 2026
--- gcc-15-20260404/gcc/c-family/ChangeLog	Sat Apr  4 22:32:06 2026
***************
*** 1,3 ****
--- 1,11 ----
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-02  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_deduction_guides to
+ 	202207L for C++23 and later.
+ 
  2026-03-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260328/gcc/config/aarch64/aarch64-protos.h gcc-15-20260404/gcc/config/aarch64/aarch64-protos.h
*** gcc-15-20260328/gcc/config/aarch64/aarch64-protos.h	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/config/aarch64/aarch64-protos.h	Sat Apr  4 22:32:06 2026
*************** struct cpu_branch_cost
*** 481,486 ****
--- 481,487 ----
  {
    const int predictable;    /* Predictable branch or optimizing for size.  */
    const int unpredictable;  /* Unpredictable branch or optimizing for speed.  */
+   const int br_mispredict_factor;  /* Scale factor for cost of misprediction on branches.  */
  };
  
  /* Control approximate alternatives to certain FP operators.  */
diff -Nrcpad gcc-15-20260328/gcc/config/aarch64/aarch64.cc gcc-15-20260404/gcc/config/aarch64/aarch64.cc
*** gcc-15-20260328/gcc/config/aarch64/aarch64.cc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/config/aarch64/aarch64.cc	Sat Apr  4 22:32:06 2026
***************
*** 97,102 ****
--- 97,103 ----
  #include "ipa-prop.h"
  #include "ipa-fnsummary.h"
  #include "hash-map.h"
+ #include "ifcvt.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** aarch64_preferred_else_value (unsigned,
*** 2097,2102 ****
--- 2098,2213 ----
    return nops == 3 ? ops[2] : ops[0];
  }
  
+ /* Implement TARGET_MAX_NOCE_IFCVT_SEQ_COST.  If an explicit max was set then
+    honor it, otherwise apply a tuning specific scale to branch costs.  */
+ 
+ static unsigned int
+ aarch64_max_noce_ifcvt_seq_cost (edge e)
+ {
+   bool predictable_p = predictable_edge_p (e);
+   if (predictable_p)
+     {
+       if (OPTION_SET_P (param_max_rtl_if_conversion_predictable_cost))
+ 	return param_max_rtl_if_conversion_predictable_cost;
+     }
+   else
+     {
+       if (OPTION_SET_P (param_max_rtl_if_conversion_unpredictable_cost))
+ 	return param_max_rtl_if_conversion_unpredictable_cost;
+     }
+ 
+   /* For modern machines with long speculative execution chains and modern
+      branch prediction the penalty of the branch misprediction needs to weighed
+      against the cost of executing the instructions unconditionally.  RISC cores
+      tend to not have that deep pipelines and so the cost of mispredictions can
+      be reasonably cheap.  */
+ 
+   bool speed_p = optimize_function_for_speed_p (cfun);
+   return BRANCH_COST (speed_p, predictable_p)
+ 	 * aarch64_tune_params.branch_costs->br_mispredict_factor;
+ }
+ 
+ /* Return true if SEQ is a good candidate as a replacement for the
+    if-convertible sequence described in IF_INFO.  AArch64 has a range of
+    branchless statements and not all of them are potentially problematic.  For
+    instance a cset is usually beneficial whereas a csel is more complicated.  */
+ 
+ static bool
+ aarch64_noce_conversion_profitable_p (rtx_insn *seq,
+ 				      struct noce_if_info *if_info)
+ {
+   /* If not in a loop, just accept all if-conversion as the branch predictor
+      won't have anything to train on.  So assume sequences are essentially
+      unpredictable.  ce1 is in CFG mode still while ce2 is outside.  For ce2
+      accept limited if-conversion based on the shape of the instruction.  */
+   if (current_loops
+       && (!if_info->test_bb->loop_father
+ 	  || !if_info->test_bb->loop_father->header
+ 	  || bb_loop_depth (if_info->test_bb->loop_father->header) == 0))
+     return true;
+ 
+   /* For now we only care about csel speciifcally.  */
+   bool is_csel_p = true;
+ 
+   if (if_info->then_simple
+       && if_info->a != NULL_RTX
+       && !REG_P (if_info->a)
+       && !SUBREG_P (if_info->a))
+     is_csel_p = false;
+ 
+   if (if_info->else_simple
+       && if_info->b != NULL_RTX
+       && !REG_P (if_info->b)
+       && !SUBREG_P (if_info->b))
+     is_csel_p = false;
+ 
+   for (rtx_insn *insn = seq; is_csel_p && insn; insn = NEXT_INSN (insn))
+     {
+       rtx set = single_set (insn);
+       if (!set)
+ 	continue;
+ 
+       rtx src = SET_SRC (set);
+       rtx dst = SET_DEST (set);
+       machine_mode mode = GET_MODE (src);
+       if (GET_MODE_CLASS (mode) != MODE_INT)
+ 	continue;
+ 
+       switch (GET_CODE (src))
+ 	{
+ 	case PLUS:
+ 	case MINUS:
+ 	  {
+ 	    /* Likely a CINC.  */
+ 	    if (REG_P (dst)
+ 		&& (REG_P (XEXP (src, 0)) || SUBREG_P (XEXP (src, 0)))
+ 		&& (XEXP (src, 1) == CONST1_RTX (mode)
+ 		    || XEXP (src, 1) == CONSTM1_RTX (mode)))
+ 	      is_csel_p = false;
+ 	    break;
+ 	  }
+ 	default:
+ 	  break;
+ 	}
+     }
+ 
+   /* For now accept every variant but csel unconditionally because CSEL usually
+      means you have to wait for two values to be computed.  */
+   if (!is_csel_p)
+     return true;
+ 
+   /* TODO: Add detecting of csel, cinc, cset etc and take profiling in
+ 	   consideration.  For now this basic costing is enough to cover
+ 	   most cases.  */
+   if (if_info->speed_p)
+     {
+       unsigned cost = seq_cost (seq, true);
+       return cost <= if_info->max_seq_cost;
+     }
+ 
+   return default_noce_conversion_profitable_p (seq, if_info);
+ }
+ 
  /* Implement TARGET_HARD_REGNO_NREGS.  */
  
  static unsigned int
*************** aarch64_libgcc_floating_mode_supported_p
*** 31993,31998 ****
--- 32104,32116 ----
  #define TARGET_ATOMIC_ASSIGN_EXPAND_FENV \
    aarch64_atomic_assign_expand_fenv
  
+ /* If-conversion costs.  */
+ #undef TARGET_MAX_NOCE_IFCVT_SEQ_COST
+ #define TARGET_MAX_NOCE_IFCVT_SEQ_COST aarch64_max_noce_ifcvt_seq_cost
+ 
+ #undef TARGET_NOCE_CONVERSION_PROFITABLE_P
+ #define TARGET_NOCE_CONVERSION_PROFITABLE_P aarch64_noce_conversion_profitable_p
+ 
  /* Section anchor support.  */
  
  #undef TARGET_MIN_ANCHOR_OFFSET
diff -Nrcpad gcc-15-20260328/gcc/config/aarch64/tuning_models/generic.h gcc-15-20260404/gcc/config/aarch64/tuning_models/generic.h
*** gcc-15-20260328/gcc/config/aarch64/tuning_models/generic.h	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/config/aarch64/tuning_models/generic.h	Sat Apr  4 22:32:06 2026
*************** static const struct cpu_vector_cost gene
*** 128,134 ****
  static const struct cpu_branch_cost generic_branch_cost =
  {
    1,  /* Predictable.  */
!   3   /* Unpredictable.  */
  };
  
  /* Generic approximation modes.  */
--- 128,135 ----
  static const struct cpu_branch_cost generic_branch_cost =
  {
    1,  /* Predictable.  */
!   3,  /* Unpredictable.  */
!   7, /* br_mispredict_factor.  */
  };
  
  /* Generic approximation modes.  */
diff -Nrcpad gcc-15-20260328/gcc/config/aarch64/tuning_models/generic_armv8_a.h gcc-15-20260404/gcc/config/aarch64/tuning_models/generic_armv8_a.h
*** gcc-15-20260328/gcc/config/aarch64/tuning_models/generic_armv8_a.h	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/config/aarch64/tuning_models/generic_armv8_a.h	Sat Apr  4 22:32:06 2026
*************** static const struct cpu_vector_cost gene
*** 125,137 ****
    nullptr /* issue_info  */
  };
  
- /* Generic costs for branch instructions.  */
- static const struct cpu_branch_cost generic_armv8_a_branch_cost =
- {
-   1,  /* Predictable.  */
-   3   /* Unpredictable.  */
- };
- 
  /* Generic approximation modes.  */
  static const cpu_approx_modes generic_armv8_a_approx_modes =
  {
--- 125,130 ----
*************** static const struct tune_params generic_
*** 158,164 ****
    &generic_armv8_a_addrcost_table,
    &generic_armv8_a_regmove_cost,
    &generic_armv8_a_vector_cost,
!   &generic_armv8_a_branch_cost,
    &generic_armv8_a_approx_modes,
    SVE_NOT_IMPLEMENTED, /* sve_width  */
    { 4, /* load_int.  */
--- 151,157 ----
    &generic_armv8_a_addrcost_table,
    &generic_armv8_a_regmove_cost,
    &generic_armv8_a_vector_cost,
!   &generic_branch_cost,
    &generic_armv8_a_approx_modes,
    SVE_NOT_IMPLEMENTED, /* sve_width  */
    { 4, /* load_int.  */
diff -Nrcpad gcc-15-20260328/gcc/config/riscv/riscv-modes.def gcc-15-20260404/gcc/config/riscv/riscv-modes.def
*** gcc-15-20260328/gcc/config/riscv/riscv-modes.def	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/config/riscv/riscv-modes.def	Sat Apr  4 22:32:07 2026
*************** You should have received a copy of the G
*** 19,24 ****
--- 19,26 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ INT_MODE (OI, 32);
+ 
  FLOAT_MODE (HF, 2, ieee_half_format);
  FLOAT_MODE (TF, 16, ieee_quad_format);
  FLOAT_MODE (BF, 2, 0);
diff -Nrcpad gcc-15-20260328/gcc/config.gcc gcc-15-20260404/gcc/config.gcc
*** gcc-15-20260328/gcc/config.gcc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/config.gcc	Sat Apr  4 22:32:06 2026
*************** loongarch*-*-linux*)
*** 2602,2609 ****
  
  loongarch*-*-elf*)
  	tm_file="elfos.h newlib-stdint.h ${tm_file}"
! 	tm_file="${tm_file} loongarch/elf.h loongarch/linux.h loongarch/loongarch-driver.h"
! 	tmake_file="${tmake_file} loongarch/t-multilib loongarch/t-linux"
  	gnu_ld=yes
  	gas=yes
  
--- 2602,2609 ----
  
  loongarch*-*-elf*)
  	tm_file="elfos.h newlib-stdint.h ${tm_file}"
! 	tm_file="${tm_file} loongarch/elf.h loongarch/loongarch-driver.h"
! 	tmake_file="${tmake_file} loongarch/t-multilib"
  	gnu_ld=yes
  	gas=yes
  
diff -Nrcpad gcc-15-20260328/gcc/cp/ChangeLog gcc-15-20260404/gcc/cp/ChangeLog
*** gcc-15-20260328/gcc/cp/ChangeLog	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/cp/ChangeLog	Sat Apr  4 22:32:07 2026
***************
*** 1,3 ****
--- 1,49 ----
+ 2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/124477
+ 	* module.cc (trees_in::read_function_def): Set DECL_ARGUMENTS if
+ 	installing and otherwise missing.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* constraint.cc (struct sat_entry): New data member inst_entry.
+ 	(satisfaction_cache::satisfaction_cache): Initialize inst_entry.
+ 	(satisfaction_cache::get): Use it to prefer printing the
+ 	instantiated atom in case of constraint recursion.
+ 	(satisfy_atom): Set inst_entry of the first cache entry to point
+ 	to the second entry.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123665
+ 	PR c++/123408
+ 	* pt.cc (build_extra_args): If TREE_STATIC was set on the
+ 	arguments, keep it set.
+ 	(add_extra_args): Set TREE_STATIC on the resulting arguments
+ 	when substituting templated arguments into a full set of
+ 	deferred arguments.
+ 	(tsubst_lambda_expr): Always defer templated substitution if
+ 	LAMBDA_EXPR_EXTRA_ARGS was set.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122621
+ 	* pt.cc (tsubst_pack_expansion): Use tf_partial instead of
+ 	tf_none, except when substituting outer (non-dependent) template
+ 	arguments.
+ 
  2026-03-17  Marek Polacek  <polacek@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260328/gcc/cp/module.cc gcc-15-20260404/gcc/cp/module.cc
*** gcc-15-20260328/gcc/cp/module.cc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/cp/module.cc	Sat Apr  4 22:32:07 2026
*************** trees_in::read_function_def (tree decl,
*** 12817,12822 ****
--- 12817,12829 ----
        DECL_INITIAL (decl) = initial;
        DECL_SAVED_TREE (decl) = saved;
  
+       /* Some entities (like anticipated builtins) were declared without
+ 	 DECL_ARGUMENTS, so update them now.  But don't do it if there's
+ 	 already an argument list, because we've already built the
+ 	 definition referencing those merged PARM_DECLs.  */
+       if (!DECL_ARGUMENTS (decl))
+ 	DECL_ARGUMENTS (decl) = DECL_ARGUMENTS (maybe_dup);
+ 
        if (context)
  	SET_DECL_FRIEND_CONTEXT (decl, context);
        if (cexpr.decl)
diff -Nrcpad gcc-15-20260328/gcc/fortran/ChangeLog gcc-15-20260404/gcc/fortran/ChangeLog
*** gcc-15-20260328/gcc/fortran/ChangeLog	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/fortran/ChangeLog	Sat Apr  4 22:32:07 2026
***************
*** 1,3 ****
--- 1,118 ----
+ 2026-04-02  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-02  Christopher Albert  <albert@tugraz.at>
+ 		    Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/124751
+ 	* trans-array.cc (gfc_conv_array_parameter): Build a packed
+ 	descriptor for assumed-rank actual arguments instead of reusing
+ 	stale metadata from the original descriptor.
+ 
+ 2026-04-02  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-01  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/100194
+ 	* trans-expr.cc (gfc_conv_procedure_call): Skip
+ 	gfc_conv_subref_array_arg for assumed-rank actual arguments
+ 	(e->rank == -1) when the dummy is contiguous.
+ 
+ 2026-03-31  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-03-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/124567
+ 	* interface.cc (gfc_check_dummy_characteristics): Split shape check
+ 	into a separate check for rank and a check for shape, taking into
+ 	account a corner case where the ambiguity between deferred shape
+ 	and assumed shape has not been fully resolved at the time of
+ 	checking.
+ 
+ 2026-03-31  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	Backported from master:
+ 	2025-07-31  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	PR fortran/121342
+ 	* trans-expr.cc (gfc_conv_subref_array_arg): Remove offset
+ 	update.
+ 	(gfc_conv_procedure_call): For polymorphic functions, move the
+ 	scalarizer descriptor information...
+ 	* trans-array.cc (gfc_add_loop_ss_code): ... here, and evaluate
+ 	the bounds to fresh variables.
+ 	(get_class_info_from_ss): Remove offset update.
+ 	(gfc_conv_ss_startstride): Don't set a zero value for function
+ 	result upper bounds.
+ 	(late_set_loop_bounds): New.
+ 	(gfc_conv_loop_setup): If the bounds of a function result have
+ 	been set, and no other array provided loop bounds for a
+ 	dimension, use the function result bounds as loop bounds for
+ 	that dimension.
+ 	(gfc_set_delta): Don't skip delta setting for polymorphic
+ 	function results.
+ 
+ 2026-03-31  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-06-19  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	PR fortran/120713
+ 	* trans-array.cc (gfc_trans_deferred_array): Statically
+ 	initialize deferred length variable for SAVEd character arrays.
+ 
+ 2026-03-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-03-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/124631
+ 	* simplify.cc (gfc_simplify_eoshift): Initialize sstride[0] to
+ 	prevent pointer arithmetic with undefined offset.  Fix several
+ 	frontend memleaks.
+ 
+ 2026-03-30  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-11  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/95338
+ 	* trans-types.cc (gfc_get_entry_result_type): New helper to use the
+ 	ABI return type for mixed ENTRY union fields.
+ 	(gfc_get_mixed_entry_union): Use it for each entry result field.
+ 
+ 2026-03-29  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/102459
+ 	* trans-openmp.cc (gfc_trans_omp_clauses): Choose the scalar
+ 	reference path from the full expression rank rather than the first
+ 	array reference.
+ 	(gfc_trans_omp_depobj): Likewise.
+ 
+ 2026-03-29  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/82721
+ 	* decl.cc (discard_pending_charlen): New helper.
+ 	(build_sym): Discard unattached CHARACTER length nodes when
+ 	gfc_add_type rejects the declaration.
+ 
+ 2026-03-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/84245
+ 	* match.cc (gfc_match_select_type): Free the temporary namespace
+ 	only on MATCH_NO. Return immediately on MATCH_ERROR.
+ 
  2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260328/gcc/fortran/decl.cc gcc-15-20260404/gcc/fortran/decl.cc
*** gcc-15-20260328/gcc/fortran/decl.cc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/fortran/decl.cc	Sat Apr  4 22:32:07 2026
*************** static gfc_expr *saved_kind_expr = NULL;
*** 116,121 ****
--- 116,135 ----
  static gfc_actual_arglist *decl_type_param_list;
  static gfc_actual_arglist *type_param_spec_list;
  
+ /* Drop an unattached gfc_charlen node from the current namespace.  This is
+    used when declaration processing created a length node for a symbol that is
+    rejected before the node is attached to any surviving symbol.  */
+ static void
+ discard_pending_charlen (gfc_charlen *cl)
+ {
+   if (!cl || !gfc_current_ns || gfc_current_ns->cl_list != cl)
+     return;
+ 
+   gfc_current_ns->cl_list = cl->next;
+   gfc_free_expr (cl->length);
+   free (cl);
+ }
+ 
  /********************* DATA statement subroutines *********************/
  
  static bool in_match_data = false;
*************** build_sym (const char *name, int elem, g
*** 1777,1783 ****
        && (sym->attr.implicit_type == 0
  	  || !gfc_compare_types (&sym->ts, &current_ts))
        && !gfc_add_type (sym, &current_ts, var_locus))
!     return false;
  
    if (sym->ts.type == BT_CHARACTER)
      {
--- 1791,1810 ----
        && (sym->attr.implicit_type == 0
  	  || !gfc_compare_types (&sym->ts, &current_ts))
        && !gfc_add_type (sym, &current_ts, var_locus))
!     {
!       /* Duplicate-type rejection can leave a fresh CHARACTER length node on
! 	 the namespace list before it is attached to any surviving symbol.
! 	 Drop only that unattached node; shared constant charlen nodes are
! 	 already reachable from earlier declarations.  PR82721.  */
!       if (current_ts.type == BT_CHARACTER && cl && elem == 1)
! 	{
! 	  discard_pending_charlen (cl);
! 	  gfc_clear_ts (&current_ts);
! 	}
!       else if (current_ts.type == BT_CHARACTER && cl && cl != current_ts.u.cl)
! 	discard_pending_charlen (cl);
!       return false;
!     }
  
    if (sym->ts.type == BT_CHARACTER)
      {
diff -Nrcpad gcc-15-20260328/gcc/fortran/interface.cc gcc-15-20260404/gcc/fortran/interface.cc
*** gcc-15-20260328/gcc/fortran/interface.cc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/fortran/interface.cc	Sat Apr  4 22:32:07 2026
*************** gfc_check_dummy_characteristics (gfc_sym
*** 1541,1546 ****
--- 1541,1553 ----
        int i, compval;
        gfc_expr *shape1, *shape2;
  
+       if (s1->as->rank != s2->as->rank)
+ 	{
+ 	  snprintf (errmsg, err_len, "Rank mismatch in argument '%s' (%i/%i)",
+ 		    s1->name, s1->as->rank, s2->as->rank);
+ 	  return false;
+ 	}
+ 
        /* Sometimes the ambiguity between deferred shape and assumed shape
  	 does not get resolved in module procedures, where the only explicit
  	 declaration of the dummy is in the interface.  */
*************** gfc_check_dummy_characteristics (gfc_sym
*** 1554,1560 ****
  	      s2->as->lower[i] = gfc_copy_expr (s1->as->lower[i]);
  	}
  
!       if (s1->as->type != s2->as->type)
  	{
  	  snprintf (errmsg, err_len, "Shape mismatch in argument '%s'",
  		    s1->name);
--- 1561,1569 ----
  	      s2->as->lower[i] = gfc_copy_expr (s1->as->lower[i]);
  	}
  
!       if (s1->as->type != s2->as->type
! 	  && !(s1->as->type == AS_DEFERRED
! 	       && s2->as->type == AS_ASSUMED_SHAPE))
  	{
  	  snprintf (errmsg, err_len, "Shape mismatch in argument '%s'",
  		    s1->name);
diff -Nrcpad gcc-15-20260328/gcc/fortran/simplify.cc gcc-15-20260404/gcc/fortran/simplify.cc
*** gcc-15-20260328/gcc/fortran/simplify.cc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/fortran/simplify.cc	Sat Apr  4 22:32:07 2026
*************** gfc_simplify_eoshift (gfc_expr *array, g
*** 2717,2722 ****
--- 2717,2723 ----
    /* Shut up compiler */
    len = 1;
    rsoffset = 1;
+   sstride[0] = 0;
  
    n = 0;
    for (d=0; d < array->rank; d++)
*************** gfc_simplify_eoshift (gfc_expr *array, g
*** 2786,2792 ****
  	{
  	  while (n--)
  	    {
! 	      *dest = gfc_copy_expr (bnd_ctor->expr);
  	      dest += rsoffset;
  	    }
  	}
--- 2787,2793 ----
  	{
  	  while (n--)
  	    {
! 	      *dest = bnd_ctor->expr;
  	      dest += rsoffset;
  	    }
  	}
*************** gfc_simplify_eoshift (gfc_expr *array, g
*** 2794,2800 ****
  	{
  	  while (n--)
  	    {
! 	      *dest = gfc_copy_expr (bnd);
  	      dest += rsoffset;
  	    }
  	}
--- 2795,2801 ----
  	{
  	  while (n--)
  	    {
! 	      *dest = bnd;
  	      dest += rsoffset;
  	    }
  	}
*************** gfc_simplify_eoshift (gfc_expr *array, g
*** 2835,2840 ****
--- 2836,2844 ----
  				   NULL);
      }
  
+   free (arrayvec);
+   free (resultvec);
+ 
   final:
    if (temp_boundary)
      gfc_free_expr (bnd);
diff -Nrcpad gcc-15-20260328/gcc/fortran/trans-array.cc gcc-15-20260404/gcc/fortran/trans-array.cc
*** gcc-15-20260328/gcc/fortran/trans-array.cc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/fortran/trans-array.cc	Sat Apr  4 22:32:07 2026
*************** get_class_info_from_ss (stmtblock_t * pr
*** 1426,1437 ****
  	  tmp2 = gfc_class_len_get (class_expr);
  	  gfc_add_modify (pre, tmp, tmp2);
  	}
- 
-       if (rhs_function)
- 	{
- 	  tmp = gfc_class_data_get (class_expr);
- 	  gfc_conv_descriptor_offset_set (pre, tmp, gfc_index_zero_node);
- 	}
      }
    else if (rhs_ss->info->data.array.descriptor)
     {
--- 1426,1431 ----
*************** gfc_add_loop_ss_code (gfc_loopinfo * loo
*** 3372,3389 ****
  	  break;
  
  	case GFC_SS_FUNCTION:
! 	  /* Array function return value.  We call the function and save its
! 	     result in a temporary for use inside the loop.  */
! 	  gfc_init_se (&se, NULL);
! 	  se.loop = loop;
! 	  se.ss = ss;
! 	  if (gfc_is_class_array_function (expr))
! 	    expr->must_finalize = 1;
! 	  gfc_conv_expr (&se, expr);
! 	  gfc_add_block_to_block (&outer_loop->pre, &se.pre);
! 	  gfc_add_block_to_block (&outer_loop->post, &se.post);
! 	  gfc_add_block_to_block (&outer_loop->post, &se.finalblock);
! 	  ss_info->string_length = se.string_length;
  	  break;
  
  	case GFC_SS_CONSTRUCTOR:
--- 3366,3416 ----
  	  break;
  
  	case GFC_SS_FUNCTION:
! 	  {
! 	    /* Array function return value.  We call the function and save its
! 	       result in a temporary for use inside the loop.  */
! 	    gfc_init_se (&se, NULL);
! 	    se.loop = loop;
! 	    se.ss = ss;
! 	    bool class_func = gfc_is_class_array_function (expr);
! 	    if (class_func)
! 	      expr->must_finalize = 1;
! 	    gfc_conv_expr (&se, expr);
! 	    gfc_add_block_to_block (&outer_loop->pre, &se.pre);
! 	    if (class_func
! 		&& se.expr
! 		&& GFC_CLASS_TYPE_P (TREE_TYPE (se.expr)))
! 	      {
! 		tree tmp = gfc_class_data_get (se.expr);
! 		info->descriptor = tmp;
! 		info->data = gfc_conv_descriptor_data_get (tmp);
! 		info->offset = gfc_conv_descriptor_offset_get (tmp);
! 		for (gfc_ss *s = ss; s; s = s->parent)
! 		  for (int n = 0; n < s->dimen; n++)
! 		    {
! 		      int dim = s->dim[n];
! 		      tree tree_dim = gfc_rank_cst[dim];
! 
! 		      tree start;
! 		      start = gfc_conv_descriptor_lbound_get (tmp, tree_dim);
! 		      start = gfc_evaluate_now (start, &outer_loop->pre);
! 		      info->start[dim] = start;
! 
! 		      tree end;
! 		      end = gfc_conv_descriptor_ubound_get (tmp, tree_dim);
! 		      end = gfc_evaluate_now (end, &outer_loop->pre);
! 		      info->end[dim] = end;
! 
! 		      tree stride;
! 		      stride = gfc_conv_descriptor_stride_get (tmp, tree_dim);
! 		      stride = gfc_evaluate_now (stride, &outer_loop->pre);
! 		      info->stride[dim] = stride;
! 		    }
! 	      }
! 	    gfc_add_block_to_block (&outer_loop->post, &se.post);
! 	    gfc_add_block_to_block (&outer_loop->post, &se.finalblock);
! 	    ss_info->string_length = se.string_length;
! 	  }
  	  break;
  
  	case GFC_SS_CONSTRUCTOR:
*************** done:
*** 5235,5241 ****
  	      int dim = ss->dim[n];
  
  	      info->start[dim]  = gfc_index_zero_node;
! 	      info->end[dim]    = gfc_index_zero_node;
  	      info->stride[dim] = gfc_index_one_node;
  	    }
  	  break;
--- 5262,5269 ----
  	      int dim = ss->dim[n];
  
  	      info->start[dim]  = gfc_index_zero_node;
! 	      if (ss_info->type != GFC_SS_FUNCTION)
! 		info->end[dim]    = gfc_index_zero_node;
  	      info->stride[dim] = gfc_index_one_node;
  	    }
  	  break;
*************** set_loop_bounds (gfc_loopinfo *loop)
*** 5920,5925 ****
--- 5948,5993 ----
  }
  
  
+ /* Last attempt to set the loop bounds, in case they depend on an allocatable
+    function result.  */
+ 
+ static void
+ late_set_loop_bounds (gfc_loopinfo *loop)
+ {
+   int n, dim;
+   gfc_array_info *info;
+   gfc_ss **loopspec;
+ 
+   loopspec = loop->specloop;
+ 
+   for (n = 0; n < loop->dimen; n++)
+     {
+       /* Set the extents of this range.  */
+       if (loop->from[n] == NULL_TREE
+ 	  || loop->to[n] == NULL_TREE)
+ 	{
+ 	  /* We should have found the scalarization loop specifier.  If not,
+ 	     that's bad news.  */
+ 	  gcc_assert (loopspec[n]);
+ 
+ 	  info = &loopspec[n]->info->data.array;
+ 	  dim = loopspec[n]->dim[n];
+ 
+ 	  if (loopspec[n]->info->type == GFC_SS_FUNCTION
+ 	      && info->start[dim]
+ 	      && info->end[dim])
+ 	    {
+ 	      loop->from[n] = info->start[dim];
+ 	      loop->to[n] = info->end[dim];
+ 	    }
+ 	}
+     }
+ 
+   for (loop = loop->nested; loop; loop = loop->next)
+     late_set_loop_bounds (loop);
+ }
+ 
+ 
  /* Initialize the scalarization loop.  Creates the loop variables.  Determines
     the range of the loop variables.  Creates a temporary if required.
     Also generates code for scalar expressions which have been
*************** gfc_conv_loop_setup (gfc_loopinfo * loop
*** 5938,5943 ****
--- 6006,6013 ----
       allocating the temporary.  */
    gfc_add_loop_ss_code (loop, loop->ss, false, where);
  
+   late_set_loop_bounds (loop);
+ 
    tmp_ss = loop->temp_ss;
    /* If we want a temporary then create it.  */
    if (tmp_ss != NULL)
*************** gfc_set_delta (gfc_loopinfo *loop)
*** 5994,6002 ****
        gfc_ss_type ss_type;
  
        ss_type = ss->info->type;
!       if (ss_type != GFC_SS_SECTION
! 	  && ss_type != GFC_SS_COMPONENT
! 	  && ss_type != GFC_SS_CONSTRUCTOR)
  	continue;
  
        info = &ss->info->data.array;
--- 6064,6074 ----
        gfc_ss_type ss_type;
  
        ss_type = ss->info->type;
!       if (!(ss_type == GFC_SS_SECTION
! 	    || ss_type == GFC_SS_COMPONENT
! 	    || ss_type == GFC_SS_CONSTRUCTOR
! 	    || (ss_type == GFC_SS_FUNCTION
! 		&& gfc_is_class_array_function (ss->info->expr))))
  	continue;
  
        info = &ss->info->data.array;
*************** gfc_conv_array_parameter (gfc_se *se, gf
*** 9364,9370 ****
  	  tmp = build_fold_indirect_ref_loc (input_location, desc);
  
  	  gfc_ss * ss = gfc_walk_expr (expr);
! 	  if (!transposed_dims (ss))
  	    {
  	      if (!ctree)
  		gfc_conv_descriptor_data_set (&se->pre, tmp, ptr);
--- 9436,9442 ----
  	  tmp = build_fold_indirect_ref_loc (input_location, desc);
  
  	  gfc_ss * ss = gfc_walk_expr (expr);
! 	  if (!transposed_dims (ss) && expr->rank != -1)
  	    {
  	      if (!ctree)
  		gfc_conv_descriptor_data_set (&se->pre, tmp, ptr);
*************** gfc_conv_array_parameter (gfc_se *se, gf
*** 9372,9380 ****
  	  else if (!ctree)
  	    {
  	      tree old_field, new_field;
- 
- 	      /* The original descriptor has transposed dims so we can't reuse
- 		 it directly; we have to create a new one.  */
  	      tree old_desc = tmp;
  	      tree new_desc = gfc_create_var (TREE_TYPE (old_desc), "arg_desc");
  
--- 9444,9449 ----
*************** gfc_conv_array_parameter (gfc_se *se, gf
*** 9382,9398 ****
  	      new_field = gfc_conv_descriptor_dtype (new_desc);
  	      gfc_add_modify (&se->pre, new_field, old_field);
  
! 	      old_field = gfc_conv_descriptor_offset (old_desc);
! 	      new_field = gfc_conv_descriptor_offset (new_desc);
! 	      gfc_add_modify (&se->pre, new_field, old_field);
  
! 	      for (int i = 0; i < expr->rank; i++)
  		{
! 		  old_field = gfc_conv_descriptor_dimension (old_desc,
  			gfc_rank_cst[get_array_ref_dim_for_loop_dim (ss, i)]);
! 		  new_field = gfc_conv_descriptor_dimension (new_desc,
  			gfc_rank_cst[i]);
! 		  gfc_add_modify (&se->pre, new_field, old_field);
  		}
  
  	      if (flag_coarray == GFC_FCOARRAY_LIB
--- 9451,9525 ----
  	      new_field = gfc_conv_descriptor_dtype (new_desc);
  	      gfc_add_modify (&se->pre, new_field, old_field);
  
! 	      if (expr->rank == -1)
! 		{
! 		  tree idx = gfc_create_var (TREE_TYPE (gfc_conv_descriptor_rank
! 							(old_desc)),
! 					     "idx");
! 		  tree stride = gfc_create_var (gfc_array_index_type, "stride");
! 		  stmtblock_t loop_body;
  
! 		  gfc_conv_descriptor_offset_set (&se->pre, new_desc,
! 						  gfc_index_zero_node);
! 		  gfc_conv_descriptor_span_set (&se->pre, new_desc,
! 						gfc_conv_descriptor_span_get
! 						(old_desc));
! 		  gfc_add_modify (&se->pre, stride, gfc_index_one_node);
! 
! 		  gfc_init_block (&loop_body);
! 
! 		  old_field = gfc_conv_descriptor_lbound_get (old_desc, idx);
! 		  gfc_conv_descriptor_lbound_set (&loop_body, new_desc, idx,
! 						  old_field);
! 
! 		  old_field = gfc_conv_descriptor_ubound_get (old_desc, idx);
! 		  gfc_conv_descriptor_ubound_set (&loop_body, new_desc, idx,
! 						  old_field);
! 
! 		  gfc_conv_descriptor_stride_set (&loop_body, new_desc, idx,
! 						  stride);
! 
! 		  tree offset = fold_build2_loc (input_location, MULT_EXPR,
! 						 gfc_array_index_type, stride,
! 						 gfc_conv_descriptor_lbound_get
! 						 (new_desc, idx));
! 		  offset = fold_build2_loc (input_location, MINUS_EXPR,
! 					    gfc_array_index_type,
! 					    gfc_conv_descriptor_offset_get
! 					    (new_desc), offset);
! 		  gfc_conv_descriptor_offset_set (&loop_body, new_desc, offset);
! 
! 		  tree extent = gfc_conv_array_extent_dim
! 				(gfc_conv_descriptor_lbound_get (new_desc, idx),
! 				 gfc_conv_descriptor_ubound_get (new_desc, idx),
! 				 NULL);
! 		  extent = fold_build2_loc (input_location, MULT_EXPR,
! 					    gfc_array_index_type, stride,
! 					    extent);
! 		  gfc_add_modify (&loop_body, stride, extent);
! 
! 		  gfc_simple_for_loop (&se->pre, idx,
! 				       build_int_cst (TREE_TYPE (idx), 0),
! 				       gfc_conv_descriptor_rank (old_desc),
! 				       LT_EXPR,
! 				       build_int_cst (TREE_TYPE (idx), 1),
! 				       gfc_finish_block (&loop_body));
! 		}
! 	      else
  		{
! 		  /* The original descriptor has transposed dims so we can't
! 		     reuse it directly; we have to create a new one.  */
! 		  old_field = gfc_conv_descriptor_offset_get (old_desc);
! 		  gfc_conv_descriptor_offset_set (&se->pre, new_desc, old_field);
! 
! 		  for (int i = 0; i < expr->rank; i++)
! 		    {
! 		      old_field = gfc_conv_descriptor_dimension (old_desc,
  			gfc_rank_cst[get_array_ref_dim_for_loop_dim (ss, i)]);
! 		      new_field = gfc_conv_descriptor_dimension (new_desc,
  			gfc_rank_cst[i]);
! 		      gfc_add_modify (&se->pre, new_field, old_field);
! 		    }
  		}
  
  	      if (flag_coarray == GFC_FCOARRAY_LIB
*************** gfc_trans_deferred_array (gfc_symbol * s
*** 12112,12119 ****
        && !INTEGER_CST_P (sym->ts.u.cl->backend_decl))
      {
        if (sym->ts.deferred && !sym->ts.u.cl->length && !sym->attr.dummy)
! 	gfc_add_modify (&init, sym->ts.u.cl->backend_decl,
! 			build_zero_cst (TREE_TYPE (sym->ts.u.cl->backend_decl)));
        gfc_conv_string_length (sym->ts.u.cl, NULL, &init);
        gfc_trans_vla_type_sizes (sym, &init);
  
--- 12239,12254 ----
        && !INTEGER_CST_P (sym->ts.u.cl->backend_decl))
      {
        if (sym->ts.deferred && !sym->ts.u.cl->length && !sym->attr.dummy)
! 	{
! 	  tree len_expr = sym->ts.u.cl->backend_decl;
! 	  tree init_val = build_zero_cst (TREE_TYPE (len_expr));
! 	  if (VAR_P (len_expr)
! 	      && sym->attr.save
! 	      && !DECL_INITIAL (len_expr))
! 	    DECL_INITIAL (len_expr) = init_val;
! 	  else
! 	    gfc_add_modify (&init, len_expr, init_val);
! 	}
        gfc_conv_string_length (sym->ts.u.cl, NULL, &init);
        gfc_trans_vla_type_sizes (sym, &init);
  
diff -Nrcpad gcc-15-20260328/gcc/fortran/trans-expr.cc gcc-15-20260404/gcc/fortran/trans-expr.cc
*** gcc-15-20260328/gcc/fortran/trans-expr.cc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/fortran/trans-expr.cc	Sat Apr  4 22:32:07 2026
*************** gfc_conv_subref_array_arg (gfc_se *se, g
*** 5454,5469 ****
    /* Translate the expression.  */
    gfc_conv_expr (&rse, expr);
  
-   /* Reset the offset for the function call since the loop
-      is zero based on the data pointer.  Note that the temp
-      comes first in the loop chain since it is added second.  */
-   if (gfc_is_class_array_function (expr))
-     {
-       tmp = loop.ss->loop_chain->info->data.array.descriptor;
-       gfc_conv_descriptor_offset_set (&loop.pre, tmp,
- 				      gfc_index_zero_node);
-     }
- 
    gfc_conv_tmp_array_ref (&lse);
  
    if (intent != INTENT_OUT)
--- 5454,5459 ----
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 7753,7759 ****
  		       && (fsym->attr.target
  			   ? gfc_is_not_contiguous (e)
  			   : !gfc_is_simply_contiguous (e, false, true))
! 		       && gfc_expr_is_variable (e))
  		{
  		  gfc_conv_subref_array_arg (&parmse, e, nodesc_arg,
  					     fsym->attr.intent,
--- 7743,7750 ----
  		       && (fsym->attr.target
  			   ? gfc_is_not_contiguous (e)
  			   : !gfc_is_simply_contiguous (e, false, true))
! 		       && gfc_expr_is_variable (e)
! 		       && e->rank != -1)
  		{
  		  gfc_conv_subref_array_arg (&parmse, e, nodesc_arg,
  					     fsym->attr.intent,
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 8843,8870 ****
  	  && se->expr && GFC_CLASS_TYPE_P (TREE_TYPE (se->expr))
  	  && expr->must_finalize)
  	{
! 	  int n;
! 	  if (se->ss && se->ss->loop)
! 	    {
! 	      gfc_add_block_to_block (&se->ss->loop->pre, &se->pre);
! 	      se->expr = gfc_evaluate_now (se->expr, &se->ss->loop->pre);
! 	      tmp = gfc_class_data_get (se->expr);
! 	      info->descriptor = tmp;
! 	      info->data = gfc_conv_descriptor_data_get (tmp);
! 	      info->offset = gfc_conv_descriptor_offset_get (tmp);
! 	      for (n = 0; n < se->ss->loop->dimen; n++)
! 		{
! 		  tree dim = gfc_rank_cst[n];
! 		  se->ss->loop->to[n] = gfc_conv_descriptor_ubound_get (tmp, dim);
! 		  se->ss->loop->from[n] = gfc_conv_descriptor_lbound_get (tmp, dim);
! 		}
! 	    }
! 	  else
! 	    {
! 	      /* TODO Eliminate the doubling of temporaries. This
! 		 one is necessary to ensure no memory leakage.  */
! 	      se->expr = gfc_evaluate_now (se->expr, &se->pre);
! 	    }
  
  	  /* Finalize the result, if necessary.  */
  	  attr = expr->value.function.esym
--- 8834,8842 ----
  	  && se->expr && GFC_CLASS_TYPE_P (TREE_TYPE (se->expr))
  	  && expr->must_finalize)
  	{
! 	  /* TODO Eliminate the doubling of temporaries.  This
! 	     one is necessary to ensure no memory leakage.  */
! 	  se->expr = gfc_evaluate_now (se->expr, &se->pre);
  
  	  /* Finalize the result, if necessary.  */
  	  attr = expr->value.function.esym
diff -Nrcpad gcc-15-20260328/gcc/fortran/trans-openmp.cc gcc-15-20260404/gcc/fortran/trans-openmp.cc
*** gcc-15-20260328/gcc/fortran/trans-openmp.cc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/fortran/trans-openmp.cc	Sat Apr  4 22:32:07 2026
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4010,4016 ****
  		{
  		  tree ptr;
  		  gfc_init_se (&se, NULL);
! 		  if (n->expr->ref->u.ar.type == AR_ELEMENT)
  		    {
  		      gfc_conv_expr_reference (&se, n->expr);
  		      ptr = se.expr;
--- 4010,4020 ----
  		{
  		  tree ptr;
  		  gfc_init_se (&se, NULL);
! 		  /* The first ref can be an element selection on the base
! 		     object while the full expression still denotes an array,
! 		     e.g. x(j)%a.  Pick the lowering path from the overall
! 		     expression rank, not from the first REF_ARRAY.  */
! 		  if (n->expr->rank == 0)
  		    {
  		      gfc_conv_expr_reference (&se, n->expr);
  		      ptr = se.expr;
*************** gfc_trans_omp_depobj (gfc_code *code)
*** 7338,7344 ****
        else if (n->expr && n->expr->ref->u.ar.type != AR_FULL)
  	{
  	  gfc_init_se (&se, NULL);
! 	  if (n->expr->ref->u.ar.type == AR_ELEMENT)
  	    {
  	      gfc_conv_expr_reference (&se, n->expr);
  	      var = se.expr;
--- 7342,7348 ----
        else if (n->expr && n->expr->ref->u.ar.type != AR_FULL)
  	{
  	  gfc_init_se (&se, NULL);
! 	  if (n->expr->rank == 0)
  	    {
  	      gfc_conv_expr_reference (&se, n->expr);
  	      var = se.expr;
diff -Nrcpad gcc-15-20260328/gcc/fortran/trans-types.cc gcc-15-20260404/gcc/fortran/trans-types.cc
*** gcc-15-20260328/gcc/fortran/trans-types.cc	Sat Mar 28 22:32:07 2026
--- gcc-15-20260404/gcc/fortran/trans-types.cc	Sat Apr  4 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 39,45 ****
  #include "dwarf2out.h"	/* For struct array_descr_info.  */
  #include "attribs.h"
  #include "alias.h"
! 
  
  #if (GFC_MAX_DIMENSIONS < 10)
  #define GFC_RANK_DIGITS 1
--- 39,45 ----
  #include "dwarf2out.h"	/* For struct array_descr_info.  */
  #include "attribs.h"
  #include "alias.h"
! 
  
  #if (GFC_MAX_DIMENSIONS < 10)
  #define GFC_RANK_DIGITS 1
*************** gfc_get_pchar_type (int kind)
*** 1278,1284 ****
    return index < 0 ? 0 : gfc_pcharacter_types[index];
  }
  
! 
  /* Create a character type with the given kind and length.  */
  
  tree
--- 1278,1284 ----
    return index < 0 ? 0 : gfc_pcharacter_types[index];
  }
  
! 
  /* Create a character type with the given kind and length.  */
  
  tree
*************** gfc_get_character_type (int kind, gfc_ch
*** 1314,1320 ****
  
    return gfc_get_character_type_len (kind, len);
  }
! 
  /* Convert a basic type.  This will be an array for character types.  */
  
  tree
--- 1314,1320 ----
  
    return gfc_get_character_type_len (kind, len);
  }
! 
  /* Convert a basic type.  This will be an array for character types.  */
  
  tree
*************** gfc_typenode_for_spec (gfc_typespec * sp
*** 1414,1420 ****
      }
    return basetype;
  }
! 
  /* Build an INT_CST for constant expressions, otherwise return NULL_TREE.  */
  
  static tree
--- 1414,1420 ----
      }
    return basetype;
  }
! 
  /* Build an INT_CST for constant expressions, otherwise return NULL_TREE.  */
  
  static tree
*************** gfc_conv_array_bound (gfc_expr * expr)
*** 1427,1433 ****
    /* Otherwise return NULL.  */
    return NULL_TREE;
  }
! 
  /* Return the type of an element of the array.  Note that scalar coarrays
     are special.  In particular, for GFC_ARRAY_TYPE_P, the original argument
     (with POINTER_TYPE stripped) is returned.  */
--- 1427,1433 ----
    /* Otherwise return NULL.  */
    return NULL_TREE;
  }
! 
  /* Return the type of an element of the array.  Note that scalar coarrays
     are special.  In particular, for GFC_ARRAY_TYPE_P, the original argument
     (with POINTER_TYPE stripped) is returned.  */
*************** gfc_get_element_type (tree type)
*** 1467,1473 ****
  
    return element;
  }
! 
  /* Build an array.  This function is called from gfc_sym_type().
     Actually returns array descriptor type.
  
--- 1467,1473 ----
  
    return element;
  }
! 
  /* Build an array.  This function is called from gfc_sym_type().
     Actually returns array descriptor type.
  
*************** gfc_build_array_type (tree type, gfc_arr
*** 1647,1653 ****
  				    corank, lbound, ubound, 0, akind,
  				    restricted);
  }
! 
  /* Returns the struct descriptor_dimension type.  */
  
  static tree
--- 1647,1653 ----
  				    corank, lbound, ubound, 0, akind,
  				    restricted);
  }
! 
  /* Returns the struct descriptor_dimension type.  */
  
  static tree
*************** gfc_get_array_type_bounds (tree etype, i
*** 2280,2286 ****
  
    return fat_type;
  }
! 
  /* Build a pointer type. This function is called from gfc_sym_type().  */
  
  static tree
--- 2280,2286 ----
  
    return fat_type;
  }
! 
  /* Build a pointer type. This function is called from gfc_sym_type().  */
  
  static tree
*************** gfc_nonrestricted_type (tree t)
*** 2455,2461 ****
    return ret;
  }
  
! 
  /* Return the type for a symbol.  Special handling is required for character
     types to get the correct level of indirection.
     For functions return the return type.
--- 2455,2461 ----
    return ret;
  }
  
! 
  /* Return the type for a symbol.  Special handling is required for character
     types to get the correct level of indirection.
     For functions return the return type.
*************** gfc_sym_type (gfc_symbol * sym, bool is_
*** 2584,2590 ****
  
    return (type);
  }
! 
  /* Layout and output debug info for a record type.  */
  
  void
--- 2584,2590 ----
  
    return (type);
  }
! 
  /* Layout and output debug info for a record type.  */
  
  void
*************** gfc_finish_type (tree type)
*** 2599,2605 ****
    rest_of_type_compilation (type, 1);
    rest_of_decl_compilation (decl, 1, 0);
  }
! 
  /* Add a field of given NAME and TYPE to the context of a UNION_TYPE
     or RECORD_TYPE pointed to by CONTEXT.  The new field is chained
     to the end of the field list pointed to by *CHAIN.
--- 2599,2605 ----
    rest_of_type_compilation (type, 1);
    rest_of_decl_compilation (decl, 1, 0);
  }
! 
  /* Add a field of given NAME and TYPE to the context of a UNION_TYPE
     or RECORD_TYPE pointed to by CONTEXT.  The new field is chained
     to the end of the field list pointed to by *CHAIN.
*************** gfc_return_by_reference (gfc_symbol * sy
*** 3243,3249 ****
  
    return 0;
  }
! 
  static tree
  gfc_get_mixed_entry_union (gfc_namespace *ns)
  {
--- 3243,3270 ----
  
    return 0;
  }
! 
! static tree
! gfc_get_entry_result_type (gfc_symbol *sym)
! {
!   tree type;
! 
!   type = gfc_sym_type (sym->result);
! 
!   /* Mixed ENTRY master unions must use the ABI return type of each entry.
!      Under -ff2c, default REAL entries return C double even though their
!      Fortran result symbol remains default REAL.  */
!   if (flag_f2c
!       && sym->ts.type == BT_REAL
!       && sym->ts.kind == gfc_default_real_kind
!       && !sym->attr.pointer
!       && !sym->attr.allocatable
!       && !sym->attr.always_explicit)
!     type = gfc_get_real_type (gfc_default_double_kind);
! 
!   return type;
! }
! 
  static tree
  gfc_get_mixed_entry_union (gfc_namespace *ns)
  {
*************** gfc_get_mixed_entry_union (gfc_namespace
*** 3272,3278 ****
        if (el == el2)
  	gfc_add_field_to_struct_1 (type,
  				   get_identifier (el->sym->result->name),
! 				   gfc_sym_type (el->sym->result), &chain);
      }
  
    /* Finish off the type.  */
--- 3293,3300 ----
        if (el == el2)
  	gfc_add_field_to_struct_1 (type,
  				   get_identifier (el->sym->result->name),
! 				   gfc_get_entry_result_type (el->sym),
! 				   &chain);
      }
  
    /* Finish off the type.  */
*************** gfc_get_mixed_entry_union (gfc_namespace
*** 3280,3286 ****
    TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (type)) = 1;
    return type;
  }
! 
  /* Create a "fn spec" based on the formal arguments;
     cf. create_function_arglist.  */
  
--- 3302,3308 ----
    TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (type)) = 1;
    return type;
  }
! 
  /* Create a "fn spec" based on the formal arguments;
     cf. create_function_arglist.  */
  
*************** arg_type_list_done:
*** 3601,3607 ****
  
    return type;
  }
! 
  /* Language hooks for middle-end access to type nodes.  */
  
  /* Return an integer type with BITS bits of precision,
--- 3623,3629 ----
  
    return type;
  }
! 
  /* Language hooks for middle-end access to type nodes.  */
  
  /* Return an integer type with BITS bits of precision,
diff -Nrcpad gcc-15-20260328/gcc/testsuite/ChangeLog gcc-15-20260404/gcc/testsuite/ChangeLog
*** gcc-15-20260328/gcc/testsuite/ChangeLog	Sat Mar 28 22:32:08 2026
--- gcc-15-20260404/gcc/testsuite/ChangeLog	Sat Apr  4 22:32:08 2026
***************
*** 1,3 ****
--- 1,185 ----
+ 2026-04-03  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-03  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/95163
+ 	PR fortran/95163
+ 	* gfortran.dg/gomp/pr95163.f90: New test.
+ 
+ 2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/124477
+ 	* g++.dg/modules/builtin-10_a.C: New test.
+ 	* g++.dg/modules/builtin-10_b.C: New test.
+ 
+ 2026-04-02  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-02  Christopher Albert  <albert@tugraz.at>
+ 		    Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/124751
+ 	* gfortran.dg/pr100194.f90: Run the testcase and add runtime
+ 	coverage for packed assumed-rank sections.
+ 
+ 2026-04-02  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-01  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/100194
+ 	* gfortran.dg/pr100194.f90: New test.
+ 
+ 2026-03-31  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-03-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/124567
+ 	* gfortran.dg/pr124567.f90: New test.
+ 	* gfortran.dg/proc_decl_30.f90: Likewise.
+ 
+ 2026-03-31  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	Backported from master:
+ 	2025-07-31  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	PR fortran/121342
+ 	* gfortran.dg/class_elemental_1.f90: New test.
+ 
+ 2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/opt107.adb: New test.
+ 	* gnat.dg/opt107_pkg.ads: New helper.
+ 
+ 2026-03-31  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-06-19  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	PR fortran/120713
+ 	* gfortran.dg/save_alloc_character_1.f90: New test.
+ 
+ 2026-03-31  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	Backported from master:
+ 	2026-03-31  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	PR target/124712
+ 	* gcc.dg/vect/vect-fmax-2.c: Changed effective target vect_float
+ 	to vect_double.
+ 	* gcc.dg/vect/vect-fmax-3.c: Likewise.
+ 	* gcc.dg/vect/vect-fmin-2.c: Likewise.
+ 	* gcc.dg/vect/vect-fmin-3.c: Likewise.
+ 
+ 2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	Backported from master:
+ 	2026-03-31  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* gcc.dg/fstack-protector-strong.c (foo2): Prevent loop
+ 	optimizations.  Expect stack protection again.
+ 
+ 2026-03-30  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/123017
+ 	* gcc.target/aarch64/pr123017_1.c: New test.
+ 	* gcc.target/aarch64/pr123017_2.c: New test.
+ 	* gcc.target/aarch64/pr123017_3.c: New test.
+ 	* gcc.target/aarch64/pr123017_4.c: New test.
+ 	* gcc.target/aarch64/pr123017_5.c: New test.
+ 	* gcc.target/aarch64/pr123017_6.c: New test.
+ 	* gcc.target/aarch64/pr123017_7.c: New test.
+ 
+ 2026-03-30  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-11  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/95338
+ 	* gfortran.dg/pr95338.f90: New test.
+ 
+ 2026-03-29  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-03-29  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR target/124674
+ 	* gcc.target/riscv/pr124674.c: New test.
+ 
+ 2026-03-29  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/102459
+ 	* gfortran.dg/pr102459.f90: New test.
+ 
+ 2026-03-29  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/82721
+ 	* gfortran.dg/pr82721.f90: New test.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-11  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/124389
+ 	PR c++/122494
+ 	* g++.dg/cpp0x/static_assert18.C: New test.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* g++.dg/cpp2a/concepts-recursive-sat2.C: Verify that the
+ 	instantiated parameter mapping is printed.
+ 	* g++.dg/cpp2a/concepts-recursive-sat5.C: Likewise.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123665
+ 	PR c++/123408
+ 	* g++.dg/cpp2a/lambda-targ22.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ22a.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ23.C: New test.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122621
+ 	* g++.dg/cpp2a/class-deduction-alias26.C: New test.
+ 
+ 2026-03-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-02-02  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* g++.dg/cpp23/feat-cxx2b.C: Adjust expected __cpp_deduction_guides
+ 	value.
+ 	* g++.dg/cpp26/feat-cxx26.C: Likewise.
+ 
+ 2026-03-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	* gfortran.dg/pr84245.f90: New test.
+ 
  2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260328/gcc/testsuite/g++.dg/modules/builtin-10_a.C gcc-15-20260404/gcc/testsuite/g++.dg/modules/builtin-10_a.C
*** gcc-15-20260328/gcc/testsuite/g++.dg/modules/builtin-10_a.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/g++.dg/modules/builtin-10_a.C	Sat Apr  4 22:32:09 2026
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/124477
+ // { dg-additional-options "-fmodules -Wno-global-module -O3" }
+ // { dg-module-cmi M }
+ 
+ module;
+ extern "C" {
+   typedef __SIZE_TYPE__ size_t;
+ 
+   extern void *memset (void *__s, int __c, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1)));
+ 
+   extern
+     __inline
+     __attribute__((__always_inline__))
+     __attribute__((__gnu_inline__))
+     __attribute__((__artificial__))
+   void *
+     __attribute__((__leaf__))
+   memset(void *__dest, int __ch, size_t __len) noexcept(true) {
+     return __builtin___memset_chk(__dest, __ch, __len,
+                                   __builtin_object_size(__dest, 0));
+   }
+ }
+ export module M;
+ export using ::memset;
diff -Nrcpad gcc-15-20260328/gcc/testsuite/g++.dg/modules/builtin-10_b.C gcc-15-20260404/gcc/testsuite/g++.dg/modules/builtin-10_b.C
*** gcc-15-20260328/gcc/testsuite/g++.dg/modules/builtin-10_b.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/g++.dg/modules/builtin-10_b.C	Sat Apr  4 22:32:09 2026
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/124477
+ // { dg-additional-options "-fmodules -O3 -fdump-lang-module-alias" }
+ 
+ import M;
+ void foo(void *data) {
+   memset(data, 0xFF, 4);
+ }
+ 
+ // { dg-final { scan-lang-dump {Deduping '::memset'} module } }
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.dg/fstack-protector-strong.c gcc-15-20260404/gcc/testsuite/gcc.dg/fstack-protector-strong.c
*** gcc-15-20260328/gcc/testsuite/gcc.dg/fstack-protector-strong.c	Sat Mar 28 22:32:10 2026
--- gcc-15-20260404/gcc/testsuite/gcc.dg/fstack-protector-strong.c	Sat Apr  4 22:32:10 2026
*************** foo2 ()
*** 43,48 ****
--- 43,50 ----
  {
    struct AA aa;
    int i;
+ #pragma GCC novector
+ #pragma GCC unroll 0
    for (i = 0; i < 10; ++i)
      {
        aa.as.array[i] = i * (i-1) + i / 2;
*************** void foo12 ()
*** 154,157 ****
    global3 ();
  }
  
! /* { dg-final { scan-assembler-times "stack_chk_fail" 11 } } */
--- 156,159 ----
    global3 ();
  }
  
! /* { dg-final { scan-assembler-times "stack_chk_fail" 12 } } */
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.dg/vect/vect-fmax-2.c gcc-15-20260404/gcc/testsuite/gcc.dg/vect/vect-fmax-2.c
*** gcc-15-20260328/gcc/testsuite/gcc.dg/vect/vect-fmax-2.c	Sat Mar 28 22:32:11 2026
--- gcc-15-20260404/gcc/testsuite/gcc.dg/vect/vect-fmax-2.c	Sat Apr  4 22:32:11 2026
***************
*** 1,4 ****
! /* { dg-require-effective-target vect_float } */
  
  #define TYPE double
  #define FN __builtin_fmax
--- 1,4 ----
! /* { dg-require-effective-target vect_double } */
  
  #define TYPE double
  #define FN __builtin_fmax
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.dg/vect/vect-fmax-3.c gcc-15-20260404/gcc/testsuite/gcc.dg/vect/vect-fmax-3.c
*** gcc-15-20260328/gcc/testsuite/gcc.dg/vect/vect-fmax-3.c	Sat Mar 28 22:32:11 2026
--- gcc-15-20260404/gcc/testsuite/gcc.dg/vect/vect-fmax-3.c	Sat Apr  4 22:32:11 2026
***************
*** 1,4 ****
! /* { dg-require-effective-target vect_float } */
  
  #include "tree-vect.h"
  
--- 1,4 ----
! /* { dg-require-effective-target vect_double } */
  
  #include "tree-vect.h"
  
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.dg/vect/vect-fmin-2.c gcc-15-20260404/gcc/testsuite/gcc.dg/vect/vect-fmin-2.c
*** gcc-15-20260328/gcc/testsuite/gcc.dg/vect/vect-fmin-2.c	Sat Mar 28 22:32:11 2026
--- gcc-15-20260404/gcc/testsuite/gcc.dg/vect/vect-fmin-2.c	Sat Apr  4 22:32:11 2026
***************
*** 1,4 ****
! /* { dg-require-effective-target vect_float } */
  
  #ifndef TYPE
  #define TYPE double
--- 1,4 ----
! /* { dg-require-effective-target vect_double } */
  
  #ifndef TYPE
  #define TYPE double
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.dg/vect/vect-fmin-3.c gcc-15-20260404/gcc/testsuite/gcc.dg/vect/vect-fmin-3.c
*** gcc-15-20260328/gcc/testsuite/gcc.dg/vect/vect-fmin-3.c	Sat Mar 28 22:32:11 2026
--- gcc-15-20260404/gcc/testsuite/gcc.dg/vect/vect-fmin-3.c	Sat Apr  4 22:32:11 2026
***************
*** 1,4 ****
! /* { dg-require-effective-target vect_float } */
  
  #include "tree-vect.h"
  
--- 1,4 ----
! /* { dg-require-effective-target vect_double } */
  
  #include "tree-vect.h"
  
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_1.c gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_1.c
*** gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_1.c	Sat Apr  4 22:32:11 2026
***************
*** 0 ****
--- 1,38 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { scan-assembler-times "csel\t" 2 } } */
+ 
+ #include <stdint.h>
+ #include <stddef.h>
+ 
+ // Branchy: compiler can emit a short compare+branch.
+ size_t branchy(size_t cur, size_t dist, size_t fallback, const uint8_t *src, uint8_t *dst, size_t len) {
+     if (dist < cur && dist < fallback) {
+         const uint8_t *p = src - dist;
+         for (size_t i = 0; i < len; ++i)
+ 	  dst[i] = p[i];
+         return dist;
+     } else {
+         const uint8_t *p = src - fallback;
+         for (size_t i = 0; i < len; ++i)
+ 	  dst[i] = p[i];
+         return fallback;
+     }
+ }
+ 
+ // CSEL-heavy: chain ternaries so both paths stay live; compilers emit cmps + csel.
+ size_t selecty(size_t cur, size_t dist, size_t fallback, const uint8_t *src, uint8_t *dst, size_t len) {
+     // Compute both candidates unconditionally, then pick with ternaries.
+     size_t candA_off = dist;
+     size_t candB_off = fallback;
+     const uint8_t *candA = src - candA_off;
+     const uint8_t *candB = src - candB_off;
+ 
+     size_t useA = (dist < cur && dist < fallback);
+     const uint8_t *p = useA ? candA : candB;
+     size_t chosen = useA ? candA_off : candB_off;
+ 
+     for (size_t i = 0; i < len; ++i)
+       dst[i] = p[i];
+     return chosen;
+ }
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_2.c gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_2.c
*** gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_2.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_2.c	Sat Apr  4 22:32:11 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { scan-assembler-times "csel\t" 0 } } */
+ 
+ void f(const int *restrict in,
+    int *restrict out,
+    int n, int threshold)
+ {
+   for (int i = 0; i < n; i+=4) {
+     out[i+0] = in[i+0] > threshold ? in[i+0] : in[i+0] + i;
+     out[i+1] = in[i+1] > threshold ? in[i+1] : in[i+1] + i;
+     out[i+2] = in[i+2] > threshold ? in[i+2] : in[i+2] + i;
+     out[i+3] = in[i+3] > threshold ? in[i+3] : in[i+3] + i;
+   }
+ }
+ 
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_3.c gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_3.c
*** gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_3.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_3.c	Sat Apr  4 22:32:11 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { scan-assembler-times "csel\t" 0 } } */
+ 
+ void f(const int *restrict in,
+    int *restrict out,
+    int n, int threshold)
+ {
+   for (int i = 0; i < n; ++i) {
+     int v = in[i];
+     if (v > threshold) {
+       int t = v * 3;
+       t += 7;
+       t ^= 0x55;
+       t *= 0x55;
+       t -= 0x5;
+       t &= 0xFE;
+       t ^= 0x55;
+       out[i] = t;
+     } else {
+       int t = v * 5;
+       t += 4;
+       t ^= 0x65;
+       t *= 0x35;
+       t -= 0x7;
+       t &= 0x0E;
+       t ^= 0x45;
+       out[i] = t;
+     }
+   }
+ }
+ 
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_4.c gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_4.c
*** gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_4.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_4.c	Sat Apr  4 22:32:11 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { scan-assembler-times "csel\t" 0 } } */
+ 
+ void f(const int *restrict in,
+    int *restrict out,
+    int n, int threshold)
+ {
+   for (int i = 0; i < n; ++i) {
+     int v = in[i];
+     if (v > threshold) {
+       int t = v * 3;
+       out[i] = t;
+     }
+   }
+ }
+ 
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_5.c gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_5.c
*** gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_5.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_5.c	Sat Apr  4 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { scan-assembler-times "csel\t" 1 } } */
+ 
+ void f(const int *restrict in,
+    int *restrict out,
+    int n, int threshold)
+ {
+   for (int i = 0; i < n; ++i) {
+     int v = in[i];
+     if (v > threshold) {
+       int t = v * 3;
+       t += 7;
+       out[i] = t;
+     } else {
+       out[i] = v;
+     }
+   }
+ }
+ 
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_6.c gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_6.c
*** gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_6.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_6.c	Sat Apr  4 22:32:11 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { scan-assembler-times "csel\t" 0 } } */
+ 
+ void f(const int *restrict in,
+    int *restrict out,
+    int n, int threshold)
+ {
+   for (int i = 0; i < n; ++i) {
+     int v = in[i];
+     if (v > threshold) {
+       int t = v * 3;
+       t += 7;
+       t ^= 0x55;
+       t *= 0x55;
+       out[i] = t;
+     } else {
+       out[i] = v;
+     }
+   }
+ }
+ 
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_7.c gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_7.c
*** gcc-15-20260328/gcc/testsuite/gcc.target/aarch64/pr123017_7.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gcc.target/aarch64/pr123017_7.c	Sat Apr  4 22:32:11 2026
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { scan-assembler-times "csel\t" 0 } } */
+ 
+ void f(const int *restrict in,
+    int *restrict out,
+    int n, int threshold)
+ {
+   for (int i = 0; i < n; ++i) {
+     int v = in[i];
+     if (v > threshold) {
+       int t = v * 3;
+       t += 7;
+       t ^= 0x55;
+       t *= 0x55;
+       t -= 0x5;
+       t &= 0xFE;
+       t ^= 0x55;
+       out[i] = t;
+     } else {
+       out[i] = v;
+     }
+   }
+ }
+ 
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gcc.target/riscv/pr124674.c gcc-15-20260404/gcc/testsuite/gcc.target/riscv/pr124674.c
*** gcc-15-20260328/gcc/testsuite/gcc.target/riscv/pr124674.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gcc.target/riscv/pr124674.c	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile { target { rv64 } } } */
+ /* { dg-additional-options "-Wno-pedantic -march=rv64gc -mabi=lp64d" } */
+ 
+ struct {
+   __int128 a;
+   int c[64];
+ } s;
+ 
+ int g;
+ 
+ void foo() { __builtin_mul_overflow(*(_Complex long *)&s.c[1] ? 1 : 0, 1, &g); }
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gfortran.dg/class_elemental_1.f90 gcc-15-20260404/gcc/testsuite/gfortran.dg/class_elemental_1.f90
*** gcc-15-20260328/gcc/testsuite/gfortran.dg/class_elemental_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gfortran.dg/class_elemental_1.f90	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/121342
+ ! The polymorphic function result as actual argument used to force the loop
+ ! bounds around the elemental call, altering access to the other arrays.
+ 
+ program p
+   implicit none
+   type :: t
+     integer :: i
+   end type
+   type :: u
+     integer :: i, a
+   end type
+   type(u) :: accum(5)
+   integer :: a(3:7), k
+   a = [ (k*k, k=1,5) ]
+   call s(accum, f(), a)
+   ! print *, accum%i
+   ! print *, accum%a
+   if (any(accum%i /= accum%a)) error stop 1
+ contains
+   elemental subroutine s(l, c, a)
+     type(u)  , intent(out) :: l
+     class(t) , intent(in)  :: c
+     integer  , intent(in)  :: a
+     l%i = c%i
+     l%a = a
+   end subroutine
+   function f()
+     class(t), allocatable :: f(:)
+     allocate(f(-1:3))
+     f%i = [ (k*k, k=1,5) ]
+   end function
+ end program
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gfortran.dg/gomp/pr95163.f90 gcc-15-20260404/gcc/testsuite/gfortran.dg/gomp/pr95163.f90
*** gcc-15-20260328/gcc/testsuite/gfortran.dg/gomp/pr95163.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gfortran.dg/gomp/pr95163.f90	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do compile }
+ ! PR fortran/95163
+ ! Contributed by John Donners <john.donners@eviden.com>
+ !
+ ! ICE in gimplify_adjust_omp_clauses with map and firstprivate on same
+ ! variable.
+ 
+   integer :: i
+   i = 1
+ !$omp target map(tofrom: i) firstprivate (i)  ! { dg-error "present on both data and map clauses" }
+   i = i + 1
+ !$omp end target
+ end
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gfortran.dg/pr100194.f90 gcc-15-20260404/gcc/testsuite/gfortran.dg/pr100194.f90
*** gcc-15-20260328/gcc/testsuite/gfortran.dg/pr100194.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gfortran.dg/pr100194.f90	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,98 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/100194
+ ! ICE in gfc_trans_create_temp_array when passing a non-contiguous
+ ! assumed-rank array to a contiguous assumed-rank dummy argument.
+ !
+ ! Contributed by Martin Diehl <m.diehl@kit.edu>
+ 
+ subroutine s(x)
+    real :: x(..)
+    call t(x)
+ contains
+    subroutine t(y)
+       real, contiguous :: y(..)
+    end
+ end
+ 
+ ! The following from the PR, these compiled OK before the patch.
+ !
+ ! Contributed by G. Steinmetz <gscfq@t-online.de>
+ 
+ subroutine z3(x)
+    real, contiguous :: x(..)
+    call t(x)
+ contains
+    subroutine t(y)
+       real, contiguous :: y(..)
+    end
+ end
+ 
+ subroutine z2(x)
+    real, contiguous :: x(..)
+    call t(x)
+ contains
+    subroutine t(y)
+       real :: y(..)
+    end
+ end
+ 
+ ! Runtime follow-up from Paul Thomas <pault@gcc.gnu.org>.
+ 
+ program p
+   implicit none
+   interface
+     subroutine pr100194_runtime(x, res)
+       integer :: x(..)
+       integer, allocatable :: res(:)
+     end subroutine pr100194_runtime
+   end interface
+ 
+   type :: ty
+     character(4) :: chr
+     integer :: r(2)
+   end type ty
+ 
+   integer :: x(4) = [42, 84, 126, 168]
+   type(ty) :: y = ty("abcd", [42, 84])
+   integer, allocatable :: z(:)
+   integer, allocatable :: u(:, :)
+ 
+   u = reshape ([x, 4 * x, 16 * x, 64 * x], [4, 4])
+ 
+   call pr100194_runtime(x, z)
+   if (any (z /= [84, 168, 252, 336])) stop 1
+ 
+   call pr100194_runtime(x(1:4:2), z)
+   if (any (z /= [84, 252])) stop 2
+ 
+   call pr100194_runtime(x([1, 3, 4, 2]), z)
+   if (any (z /= [84, 252, 336, 168])) stop 3
+ 
+   call pr100194_runtime(y%r, z)
+   if (any (z /= [84, 168])) stop 4
+ 
+   call pr100194_runtime(u(1, :), z)
+   if (any (z /= [84, 336, 1344, 5376])) stop 5
+ 
+   call pr100194_runtime(u(:, 1), z)
+   if (any (z /= [84, 168, 252, 336])) stop 6
+ end program p
+ 
+ subroutine pr100194_runtime(x, res)
+   integer :: x(..)
+   integer, allocatable :: res(:)
+ 
+   call t(x)
+ 
+ contains
+ 
+   subroutine t(y)
+     integer, contiguous :: y(..)
+ 
+     select rank (y)
+       rank (1)
+         res = 2 * y
+     end select
+   end subroutine t
+ end subroutine pr100194_runtime
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gfortran.dg/pr102459.f90 gcc-15-20260404/gcc/testsuite/gfortran.dg/pr102459.f90
*** gcc-15-20260328/gcc/testsuite/gfortran.dg/pr102459.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gfortran.dg/pr102459.f90	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,15 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-fopenmp" }
+ 
+ program p
+   type t
+     integer :: a(2)
+   end type
+   type(t) :: x(8)
+ 
+   !$omp task depend (iterator(j=1:8), out:x(j)%a)
+   !$omp end task
+ 
+   !$omp task depend (iterator(j=1:8), out:x(j)%a(1))
+   !$omp end task
+ end
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gfortran.dg/pr124567.f90 gcc-15-20260404/gcc/testsuite/gfortran.dg/pr124567.f90
*** gcc-15-20260328/gcc/testsuite/gfortran.dg/pr124567.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gfortran.dg/pr124567.f90	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,62 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/124567 - overriding method not resolved correctly
+ !
+ ! Contributed by Salvatore Filippone 
+ 
+ module psb_base_spm_mod
+   type  :: psb_base_spm
+   end type psb_base_spm
+ end module psb_base_spm_mod
+ 
+ module psb_r_base_spm_mod
+   use psb_base_spm_mod
+   type, extends(psb_base_spm) :: psb_r_base_spm
+   contains
+     procedure, pass(a) :: csgrw => psb_r_base_csgrw
+   end type psb_r_base_spm
+ 
+   interface
+     subroutine psb_r_base_csgrw(a,iren)
+       import
+       class(psb_r_base_spm), intent(in) :: a
+       integer, intent(in), optional     :: iren(:)
+     end subroutine psb_r_base_csgrw
+   end interface
+ end module psb_r_base_spm_mod
+ 
+ module psb_d_mf_mat_mod
+   use psb_r_base_spm_mod
+   type, extends(psb_r_base_spm) :: psb_d_mf_spm
+     procedure(d_mf_mv), pass(a), pointer :: var_csmv => null()
+   contains
+     procedure, pass(a) :: csgrw     => psb_d_mf_csgrw
+     procedure, pass(a) :: set_csmv  => d_mf_set_csmv
+   end type psb_d_mf_spm
+ 
+   interface
+     subroutine d_mf_mv(a,x,info)
+       import :: psb_d_mf_spm
+       class(psb_d_mf_spm), intent(in) :: a
+       real, intent(in)                :: x(:)
+       integer, intent(out)            :: info
+     end subroutine d_mf_mv
+   end interface
+ 
+   interface
+     subroutine psb_d_mf_csgrw(a,iren)
+       import
+       class(psb_d_mf_spm), intent(in) :: a
+       integer, intent(in), optional   :: iren(:)
+     end subroutine psb_d_mf_csgrw
+   end interface
+ 
+ contains
+   subroutine  d_mf_set_csmv(func,a)
+     implicit none
+     class(psb_d_mf_spm), intent(inout) :: a
+     procedure(d_mf_mv)                 :: func
+     a%var_csmv => func
+     return
+   end subroutine d_mf_set_csmv
+ end module psb_d_mf_mat_mod
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gfortran.dg/pr82721.f90 gcc-15-20260404/gcc/testsuite/gfortran.dg/pr82721.f90
*** gcc-15-20260328/gcc/testsuite/gfortran.dg/pr82721.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gfortran.dg/pr82721.f90	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! { dg-set-target-env-var MALLOC_PERTURB_ "165" }
+ ! PR fortran/82721
+ ! Reject a duplicate declaration without leaving the CHARACTER length
+ ! expression from the failed statement on the namespace charlen list.
+ 
+ integer :: b
+ character(len(c)) :: b  ! { dg-error "already has basic type of INTEGER" }
+ end
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gfortran.dg/pr95338.f90 gcc-15-20260404/gcc/testsuite/gfortran.dg/pr95338.f90
*** gcc-15-20260328/gcc/testsuite/gfortran.dg/pr95338.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gfortran.dg/pr95338.f90	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,27 ----
+ ! { dg-do run }
+ ! { dg-additional-options "-O1 -ff2c" }
+ !
+ ! PR fortran/95338 - mixed ENTRY results with -ff2c must use the ABI
+ ! return type in the master union.
+ 
+ module m
+ contains
+   function f(x)
+     integer :: x
+     integer :: f
+     real :: g
+ 
+     f = x
+     return
+ 
+     entry g(x)
+     g = x
+   end
+ end
+ 
+ program p
+   use m
+ 
+   if (f(1) /= 1) stop 1
+   if (g(1) /= 1.0) stop 2
+ end
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gfortran.dg/proc_decl_30.f90 gcc-15-20260404/gcc/testsuite/gfortran.dg/proc_decl_30.f90
*** gcc-15-20260328/gcc/testsuite/gfortran.dg/proc_decl_30.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gfortran.dg/proc_decl_30.f90	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,53 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/124567 - rank/shape check in interface checking
+ !
+ ! Variation of gfortran.dg/proc_decl_26.f90
+ 
+ program test
+   implicit none
+ 
+   interface
+     subroutine one(a)
+       integer a(:)
+     end subroutine
+     subroutine two(a)
+       integer a(..)
+     end subroutine
+   end interface
+ 
+   ! Assumed-shape vs. deferred
+   call foo(two)  ! { dg-error "Rank mismatch in argument 'a' \\(1/-1\\)" }
+   call bar(two)  ! { dg-error "Rank mismatch in argument 'a' \\(1/-1\\)" }
+ 
+   ! Reversed
+   call bas(one)  ! { dg-error "Rank mismatch in argument 'a' \\(-1/1\\)" }
+   call bla(one)  ! { dg-error "Rank mismatch in argument 'a' \\(-1/1\\)" }
+ 
+ contains
+ 
+   subroutine foo(f1)
+     procedure(one) :: f1
+   end subroutine foo
+ 
+   subroutine bar(f2)
+     interface
+       subroutine f2(a)
+         integer a(:)
+       end subroutine
+     end interface
+   end subroutine bar
+ 
+   subroutine bas(f1)
+     procedure(two) :: f1
+   end subroutine bas
+ 
+   subroutine bla(f2)
+     interface
+       subroutine f2(a)
+         integer a(..)
+       end subroutine
+     end interface
+   end subroutine bla
+ 
+ end program 
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gfortran.dg/save_alloc_character_1.f90 gcc-15-20260404/gcc/testsuite/gfortran.dg/save_alloc_character_1.f90
*** gcc-15-20260328/gcc/testsuite/gfortran.dg/save_alloc_character_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gfortran.dg/save_alloc_character_1.f90	Sat Apr  4 22:32:13 2026
***************
*** 0 ****
--- 1,23 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/120713
+ ! Check that the length variable of SAVEd allocatable character arrays are
+ ! not initialized at function entry.
+ 
+ program p
+   implicit none
+   call s(1)
+   call s(2)
+ contains
+   subroutine s(i)
+     integer, intent(in) :: i
+     character(len=:), allocatable, save :: a(:)
+     integer :: j
+     if (i == 1) then
+       allocate(a, source= [ ('x' // achar(ichar('0') + j), j=1,7) ])
+     else
+       if (len(a) /= 2) error stop 1
+       if (any(a /= ['x1','x2','x3','x4','x5','x6','x7'])) error stop 2
+     end if
+   end subroutine s
+ end program p
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gnat.dg/opt107.adb gcc-15-20260404/gcc/testsuite/gnat.dg/opt107.adb
*** gcc-15-20260328/gcc/testsuite/gnat.dg/opt107.adb	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gnat.dg/opt107.adb	Sat Apr  4 22:32:14 2026
***************
*** 0 ****
--- 1,27 ----
+ -- { dg-do compile }
+ -- { dg-options "-O" }
+ 
+ with Opt107_Pkg; use Opt107_Pkg;
+ 
+ function Opt107 return Rec is
+    R : Rec;
+ begin
+    R.W1A := B_A_7;
+    R.W1B := 0;
+    R.W1C := C_A;
+    R.W1D := (Spare => 0,
+              D_A => 0,
+              D_B => 0,
+              D_C => 0,
+              D_D => 0);
+    R.W2B := (Spare => 0,
+              E_A => 0,
+              E_B => 0,
+              E_C => 0,
+              E_D => 0,
+              E_E => 0,
+              E_F => 0,
+              E_G => 0,
+              E_H => 0);
+    return R;
+ end;
diff -Nrcpad gcc-15-20260328/gcc/testsuite/gnat.dg/opt107_pkg.ads gcc-15-20260404/gcc/testsuite/gnat.dg/opt107_pkg.ads
*** gcc-15-20260328/gcc/testsuite/gnat.dg/opt107_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-15-20260404/gcc/testsuite/gnat.dg/opt107_pkg.ads	Sat Apr  4 22:32:14 2026
***************
*** 0 ****
--- 1,156 ----
+ with System;
+ with Unchecked_Conversion;
+ 
+ package Opt107_Pkg is
+ 
+    Word_Size : constant := 32;
+    type Word_Type is mod 2 ** Word_Size;
+    for Word_Type'Size use Word_Size;
+ 
+    Word : constant := Word_Size / System.Storage_Unit;
+ 
+    Halfword_Size : constant := Word_Size / 2;
+    
+    type Halfword_Type is range 0 .. 2 ** Halfword_Size - 1;
+    for Halfword_Type'Size use Halfword_Size;
+ 
+    type One_Bit_Type is mod 2 ** 1;
+    for One_Bit_Type'Size use 1;
+    
+    type Four_Bit_Type is mod 2 ** 4;
+    for Four_Bit_Type'Size use 4;
+ 
+    type Seven_Bit_Type is mod 2 ** 7;
+    for Seven_Bit_Type'Size use 7;
+ 
+    type Eight_Bit_Type is mod 2 ** 8;
+    for Eight_Bit_Type'Size use 8;
+ 
+    type Twelve_Bit_Type is mod 2 ** 12;
+    for Twelve_Bit_Type'Size use 12;
+    
+    type Thirty_One_Bit_Type is mod 2 ** 31;
+    for Thirty_One_Bit_Type'Size use 31;
+ 
+    type W0_Type is record
+       A : Eight_Bit_Type;
+       B : Eight_Bit_Type;
+       C : Halfword_Type;
+    end record;
+ 
+    for W0_Type use record
+       A at Word * 0 range 24 .. 31;
+       B at Word * 0 range 16 .. 23;
+       C at Word * 0 range 0 .. 15;
+    end record;
+    for W0_Type'Size use Word_Size;
+ 
+    type A_Type is (A0, A1);
+    for A_Type use (A0 => 0, A1 => 1);
+    for A_Type'Size use 1;
+    
+    type B_Type is (B_A_1,
+                    B_A_2,
+                    B_A_3,
+                    B_A_4,
+                    B_A_5,
+                    B_A_6,
+                    B_A_7,
+                    B_A_8,
+                    B_B_1,
+                    B_B_2,
+                    B_B_3,
+                    B_B_4,
+                    B_B_5,
+                    B_B_6,
+                    B_B_7,
+                    B_B_8);
+ 
+    for B_Type use (B_A_1 => 8#00#,
+                    B_A_2 => 8#01#,
+                    B_A_3 => 8#02#,
+                    B_A_4 => 8#03#,
+                    B_A_5 => 8#04#,
+                    B_A_6 => 8#05#,
+                    B_A_7 => 8#06#,
+                    B_A_8 => 8#07#,
+                    B_B_1 => 8#10#,
+                    B_B_2 => 8#11#,
+                    B_B_3 => 8#12#,
+                    B_B_4 => 8#13#,
+                    B_B_5 => 8#14#,
+                    B_B_6 => 8#15#,
+                    B_B_7 => 8#16#,
+                    B_B_8 => 8#17#);
+    for B_Type'Size use 8;
+    
+    type C_Type is (C_A, C_B);
+    for C_Type use (C_A => 0, C_B => 2);
+    for C_Type'Size use 4;
+    
+    type D_Type is record
+       Spare : Twelve_Bit_Type;
+       D_A : One_Bit_Type;
+       D_B : One_Bit_Type;
+       D_C : One_Bit_Type;
+       D_D : One_Bit_Type;
+    end record;
+ 
+    for D_Type use record
+       Spare at 0 range 4 .. 15;
+       D_A at 0 range 3 .. 3;
+       D_B at 0 range 2 .. 2;
+       D_C at 0 range 1 .. 1;
+       D_D at 0 range 0 .. 0;
+    end record;
+    for D_Type'Size use Halfword_Size;
+ 
+    type E_Type is record
+       Spare : Seven_Bit_Type;
+       E_A : One_Bit_Type;
+       E_B : One_Bit_Type;
+       E_C : One_Bit_Type;
+       E_D : One_Bit_Type;
+       E_E : One_Bit_Type;
+       E_F : One_Bit_Type;
+       E_G : One_Bit_Type;
+       E_H : One_Bit_Type;
+    end record;
+ 
+    for E_Type use record
+       Spare at 0 range 8 .. 14;
+       E_A at 0 range 7 .. 7;
+       E_B at 0 range 6 .. 6;
+       E_C at 0 range 5 .. 5;
+       E_D at 0 range 4 .. 4;
+       E_E at 0 range 3 .. 3;
+       E_F at 0 range 2 .. 2;
+       E_G at 0 range 1 .. 1;
+       E_H at 0 range 0 .. 0;
+    end record;
+    for E_Type'Size use 15;
+ 
+    type Rec is record
+       W0 : W0_Type;
+       W1A : B_Type;
+       W1B : Four_Bit_Type;
+       W1C : C_Type;
+       W1D : D_Type;
+       W2A : A_Type;
+       W2B : E_Type;
+       W2C : Halfword_Type;
+    end record;
+ 
+    for Rec use record
+       W0  at Word * 0 range  0 .. 31;
+       W1A at Word * 1 range 24 .. 31;
+       W1B at Word * 1 range 20 .. 23;
+       W1C at Word * 1 range 16 .. 19;
+       W1D at Word * 1 range  0 .. 15;
+       W2A at Word * 2 range 31 .. 31;
+       W2B at Word * 2 range 16 .. 30;
+       W2C at Word * 2 range  0 .. 15;
+    end record;
+    for Rec'Size use 6 * Halfword_Size;
+ 
+ end Opt107_Pkg;
diff -Nrcpad gcc-15-20260328/gcc/tree-ssa-dse.cc gcc-15-20260404/gcc/tree-ssa-dse.cc
*** gcc-15-20260328/gcc/tree-ssa-dse.cc	Sat Mar 28 22:32:14 2026
--- gcc-15-20260404/gcc/tree-ssa-dse.cc	Sat Apr  4 22:32:14 2026
*************** compute_trims (ao_ref *ref, sbitmap live
*** 423,430 ****
       the bitmap extends through ref->max_size, so we know that in the original
       bitmap bits 0 .. ref->max_size were true.  But we need to check that this
       covers the bytes of REF exactly.  */
!   const unsigned int align = known_alignment (ref->offset);
!   if ((align > 0 && align < BITS_PER_UNIT)
        || !known_eq (ref->size, ref->max_size))
      return;
  
--- 423,432 ----
       the bitmap extends through ref->max_size, so we know that in the original
       bitmap bits 0 .. ref->max_size were true.  But we need to check that this
       covers the bytes of REF exactly.  */
!   const unsigned int offset_align = known_alignment (ref->offset);
!   const unsigned int size_align = known_alignment (ref->size);
!   if ((offset_align > 0 && offset_align < BITS_PER_UNIT)
!       || (size_align > 0 && size_align < BITS_PER_UNIT)
        || !known_eq (ref->size, ref->max_size))
      return;
  
diff -Nrcpad gcc-15-20260328/libstdc++-v3/ChangeLog gcc-15-20260404/libstdc++-v3/ChangeLog
*** gcc-15-20260328/libstdc++-v3/ChangeLog	Sat Mar 28 22:32:16 2026
--- gcc-15-20260404/libstdc++-v3/ChangeLog	Sat Apr  4 22:32:16 2026
***************
*** 1,3 ****
--- 1,19 ----
+ 2026-03-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/124463
+ 	* include/bits/deque.tcc (__uninitialized_copy_a): Define
+ 	overloads for input and output iterators being std::deque
+ 	iterators, and for only the output iterator being a std::deque
+ 	iterator.
+ 	(__uninitialized_move_a): Overload for input and output
+ 	iterators being std::deque iterators.
+ 	* include/bits/stl_uninitialized.h (__uninitialized_copy_a)
+ 	(__uninitialized_move_a): Declare overloads for std::deque
+ 	iterators.
+ 
  2026-03-20  Jonathan Wakely  <jwakely@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260328/libstdc++-v3/include/bits/deque.tcc gcc-15-20260404/libstdc++-v3/include/bits/deque.tcc
*** gcc-15-20260328/libstdc++-v3/include/bits/deque.tcc	Sat Mar 28 22:32:16 2026
--- gcc-15-20260404/libstdc++-v3/include/bits/deque.tcc	Sat Apr  4 22:32:16 2026
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1542,1547 ****
--- 1542,1641 ----
        return __last2 != __first2;
      }
  
+ #if __cplusplus >= 201103L
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
+   template<typename _ITp, typename _IRef, typename _IPtr, typename _OTp,
+ 	   typename _Tp>
+     _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
+     __uninitialized_copy_a(
+       _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
+       _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __last,
+       _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*> __result,
+       allocator<_Tp>&)
+     {
+       // In order to unwind all initialized elements, we just use the default
+       // implementation if construction can throw.
+       if constexpr (!__is_nothrow_constructible(_OTp, _IRef))
+ 	return std::__do_uninit_copy(__first, __last, __result);
+       else
+ 	while (__first != __last)
+ 	  {
+ 	    auto __from = __first._M_cur;
+ 	    ptrdiff_t __n;
+ 	    if (__first._M_node == __last._M_node)
+ 	      __n = __last._M_cur - __from;
+ 	    else
+ 	      __n = __first._M_last - __from;
+ 	    _OTp* __sres = __result._M_cur;
+ 	    __n = std::min<ptrdiff_t>(__n, __result._M_last - __result._M_cur);
+ 	    std::uninitialized_copy(__from, __from + __n, __result._M_cur);
+ 	    __first += __n;
+ 	    __result += __n;
+ 	  }
+       return __result;
+     }
+ 
+   template<typename _Iter, typename _OTp, typename _Tp>
+     __enable_if_t<__is_random_access_iter<_Iter>::value,
+ 		  _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>>
+     __uninitialized_copy_a(_Iter __first, _Iter __last,
+       _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*> __result,
+       allocator<_Tp>&)
+     {
+       // In order to unwind all initialized elements, we just use the default
+       // implementation if construction can throw.
+       if constexpr (!__is_nothrow_constructible(_OTp, decltype(*__first)))
+ 	return std::__do_uninit_copy(__first, __last, __result);
+       else
+ 	while (__first != __last)
+ 	  {
+ 	    auto __n = std::min<ptrdiff_t>(__last - __first,
+ 					   __result._M_last - __result._M_cur);
+ 	    std::uninitialized_copy(__first, __first + __n, __result._M_cur);
+ 	    __first += __n;
+ 	    __result += __n;
+ 	  }
+       return __result;
+     }
+ 
+   template<typename _ITp, typename _IRef, typename _IPtr, typename _OTp,
+ 	   typename _Tp>
+     _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
+     __uninitialized_move_a(
+       _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
+       _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __last,
+       _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*> __result,
+       allocator<_Tp>&)
+     {
+       // In order to unwind all initialized elements, we just use the default
+       // implementation if construction can throw.
+       if constexpr (!__is_nothrow_constructible(_OTp,
+ 						decltype(std::move(*__first))))
+ 	return std::uninitialized_copy(std::make_move_iterator(__first),
+ 				       std::make_move_iterator(__last),
+ 				       __result);
+       else
+ 	while (__first != __last)
+ 	  {
+ 	    auto __from = __first._M_cur;
+ 	    ptrdiff_t __n;
+ 	    if (__first._M_node == __last._M_node)
+ 	      __n = __last._M_cur - __from;
+ 	    else
+ 	      __n = __first._M_last - __from;
+ 	    __n = std::min<ptrdiff_t>(__n, __result._M_last - __result._M_cur);
+ 	    std::uninitialized_copy(std::make_move_iterator(__from),
+ 				    std::make_move_iterator(__from + __n),
+ 				    __result._M_cur);
+ 	    __first += __n;
+ 	    __result += __n;
+ 	  }
+       return __result;
+     }
+ #pragma GCC diagnostic pop
+ #endif // C++11
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
diff -Nrcpad gcc-15-20260328/libstdc++-v3/include/bits/stl_uninitialized.h gcc-15-20260404/libstdc++-v3/include/bits/stl_uninitialized.h
*** gcc-15-20260328/libstdc++-v3/include/bits/stl_uninitialized.h	Sat Mar 28 22:32:16 2026
--- gcc-15-20260404/libstdc++-v3/include/bits/stl_uninitialized.h	Sat Apr  4 22:32:16 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 639,644 ****
--- 639,671 ----
      }
  #endif
  
+ #if __cplusplus >= 201103L
+   template<typename _ITp, typename _IRef, typename _IPtr, typename _OTp,
+ 	   typename _Tp>
+     _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
+     __uninitialized_copy_a(
+       _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
+       _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __last,
+       _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*> __result,
+       allocator<_Tp>&);
+ 
+   template<typename _Iter, typename _OTp, typename _Tp>
+     __enable_if_t<__is_random_access_iter<_Iter>::value,
+ 		  _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>>
+     __uninitialized_copy_a(_Iter __first, _Iter __last,
+       _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*> __result,
+       allocator<_Tp>&);
+ 
+   template<typename _ITp, typename _IRef, typename _IPtr, typename _OTp,
+ 	   typename _Tp>
+     _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
+     __uninitialized_move_a(
+       _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
+       _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __last,
+       _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*> __result,
+       allocator<_Tp>&);
+ #endif
+ 
    template<typename _InputIterator, typename _ForwardIterator,
  	   typename _Allocator>
      _GLIBCXX20_CONSTEXPR
