diff -Nrcpad gcc-13-20260326/LAST_UPDATED gcc-13-20260402/LAST_UPDATED
*** gcc-13-20260326/LAST_UPDATED	Thu Mar 26 22:32:20 2026
--- gcc-13-20260402/LAST_UPDATED	Thu Apr  2 22:32:19 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-13 revision 6f0271ff027d5521b88aa9b8c92d245421b3d759
--- 1 ----
! Obtained from git: releases/gcc-13 revision 10b759ff2ea978ca9562dc93b560f4e6ce6c75e7
diff -Nrcpad gcc-13-20260326/MD5SUMS gcc-13-20260402/MD5SUMS
*** gcc-13-20260326/MD5SUMS	Thu Mar 26 22:32:24 2026
--- gcc-13-20260402/MD5SUMS	Thu Apr  2 22:32:23 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-13-20260326.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-13-20260402.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 21,27 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! d59ce1bca90b170e3e52651d325455a1  LAST_UPDATED
  81b3330d422f3ce1ef8b720dfae35068  MAINTAINERS
  2b61ddbd876fa839639a7ca551773426  Makefile.def
  5d2d6a74f897f8158d37f5f2ec6877ce  Makefile.in
--- 21,27 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 38cfcfe1c2189fb9ff052aaa84c528da  LAST_UPDATED
  81b3330d422f3ce1ef8b720dfae35068  MAINTAINERS
  2b61ddbd876fa839639a7ca551773426  Makefile.def
  5d2d6a74f897f8158d37f5f2ec6877ce  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 475,481 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! aeaa33ada117800b802851dd5fc33135  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 475,481 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! c3e67959b0189a7f2a4f551d568bdd63  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 510,516 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! a07cb948e4765b5597bc2c9b0ad582c3  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 510,516 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! c9ff20d3911fb93238ca2f358c5cfbdc  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** a92be6f532ece352cab8309520cf28f0  gcc/co
*** 5078,5084 ****
  6614aac0ce8960f693faf880a7560bc5  gcc/coroutine-passes.cc
  9d6931fedff9a87a6266d15841579e67  gcc/coverage.cc
  b964f4291cd58a61a06769149429435f  gcc/coverage.h
! b883e52537eacc6407100ad7298af075  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 5078,5084 ----
  6614aac0ce8960f693faf880a7560bc5  gcc/coroutine-passes.cc
  9d6931fedff9a87a6266d15841579e67  gcc/coverage.cc
  b964f4291cd58a61a06769149429435f  gcc/coverage.h
! 5c942f8c3cd35b13b70325f0597af5a5  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** eba9d2541aa4aa5f8a8e7aa169c9d594  gcc/cp
*** 5162,5168 ****
  7037f63acd4161418cc8dcd1d86866e0  gcc/cp/optimize.cc
  7ce2758a3656c365608f6aab53de2f35  gcc/cp/parser.cc
  fbb3d4644cdc4c0c8d47620a0b3a8094  gcc/cp/parser.h
! 959d49d0616fb4657eee363822d2b024  gcc/cp/pt.cc
  d03dc5c4f806d6a6841801d7d7d0080c  gcc/cp/ptree.cc
  aba5829381a2a8991e36ebb8d4eb9761  gcc/cp/rtti.cc
  88eb1ceb39a66b26decf9af394a4f5c2  gcc/cp/search.cc
--- 5162,5168 ----
  7037f63acd4161418cc8dcd1d86866e0  gcc/cp/optimize.cc
  7ce2758a3656c365608f6aab53de2f35  gcc/cp/parser.cc
  fbb3d4644cdc4c0c8d47620a0b3a8094  gcc/cp/parser.h
! c6002b159901d7a3c9888e60477393d8  gcc/cp/pt.cc
  d03dc5c4f806d6a6841801d7d7d0080c  gcc/cp/ptree.cc
  aba5829381a2a8991e36ebb8d4eb9761  gcc/cp/rtti.cc
  88eb1ceb39a66b26decf9af394a4f5c2  gcc/cp/search.cc
*************** c2dbf831f4bbc53553765214d1b2d674  gcc/fl
*** 5576,5582 ****
  46538296abcbd26df93f276f5974ec0f  gcc/fold-const-call.h
  e091b0ed4e31525d6d685d5e6f7a7fa0  gcc/fold-const.cc
  9dd2c87502c864095a8b942bea07b5f3  gcc/fold-const.h
! c70b2272b35f1ab1df1fd7591759a64c  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 5576,5582 ----
  46538296abcbd26df93f276f5974ec0f  gcc/fold-const-call.h
  e091b0ed4e31525d6d685d5e6f7a7fa0  gcc/fold-const.cc
  9dd2c87502c864095a8b942bea07b5f3  gcc/fold-const.h
! 75e12a9a7be10f954173858a47962dae  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** dead8f794e0bc7ece3c9f46a4b9ead58  gcc/fo
*** 5614,5620 ****
  bc8a50172db20622023d7b83c31d7737  gcc/fortran/cpp.h
  d49d08bf3282ebea910b14cf88b1b5ee  gcc/fortran/data.cc
  86b2ebfc95645333cba0df8f79638b62  gcc/fortran/data.h
! af7535cdf336627a57c695f9708c2ba8  gcc/fortran/decl.cc
  03376b1f69cb12088fb0957658714aa3  gcc/fortran/dependency.cc
  528121f9fe625a6b314dd0e4e9601e70  gcc/fortran/dependency.h
  638a4c6c1f147853ccf44c5442c876f9  gcc/fortran/dump-parse-tree.cc
--- 5614,5620 ----
  bc8a50172db20622023d7b83c31d7737  gcc/fortran/cpp.h
  d49d08bf3282ebea910b14cf88b1b5ee  gcc/fortran/data.cc
  86b2ebfc95645333cba0df8f79638b62  gcc/fortran/data.h
! 9925d7b3281ff3c6f6304682e50e8c8c  gcc/fortran/decl.cc
  03376b1f69cb12088fb0957658714aa3  gcc/fortran/dependency.cc
  528121f9fe625a6b314dd0e4e9601e70  gcc/fortran/dependency.h
  638a4c6c1f147853ccf44c5442c876f9  gcc/fortran/dump-parse-tree.cc
*************** af7535cdf336627a57c695f9708c2ba8  gcc/fo
*** 5624,5630 ****
  2c46f4a85ebcd58b3bdb7f98f7d0b85c  gcc/fortran/frontend-passes.cc
  5d21a6b2bc38e36e9ce485f9b899cf5d  gcc/fortran/gfc-diagnostic.def
  d428ee96a4c880140da26aec0f107bda  gcc/fortran/gfc-internals.texi
! 706de8b42efb4516e0de8473694c5cde  gcc/fortran/gfortran.h
  0da9587d85518945e473eb0045cf3202  gcc/fortran/gfortran.texi
  538b040a49c9f6c46cbd59c2a9ce1afd  gcc/fortran/gfortranspec.cc
  97f68911dc79e4809e6107ec13390bf9  gcc/fortran/interface.cc
--- 5624,5630 ----
  2c46f4a85ebcd58b3bdb7f98f7d0b85c  gcc/fortran/frontend-passes.cc
  5d21a6b2bc38e36e9ce485f9b899cf5d  gcc/fortran/gfc-diagnostic.def
  d428ee96a4c880140da26aec0f107bda  gcc/fortran/gfc-internals.texi
! 18f9a7bac53ec8c9ec3d6e189090e830  gcc/fortran/gfortran.h
  0da9587d85518945e473eb0045cf3202  gcc/fortran/gfortran.texi
  538b040a49c9f6c46cbd59c2a9ce1afd  gcc/fortran/gfortranspec.cc
  97f68911dc79e4809e6107ec13390bf9  gcc/fortran/interface.cc
*************** d2a4c5315fb086aeaa125c4b2829a29f  gcc/fo
*** 5640,5646 ****
  5659bf0ae0187cfd21cd8f599d82f98d  gcc/fortran/lang-specs.h
  92cf8f5887329d298f04e41b7fd4b780  gcc/fortran/lang.opt
  dfe2708ae1610f0355d4e3f64825ed31  gcc/fortran/libgfortran.h
! f820f80f97ddcdeff771996b47adc742  gcc/fortran/match.cc
  a91d0fda9651b722ffd4fb160f95378a  gcc/fortran/match.h
  38fc5448e9ea8b828a44496034ac708e  gcc/fortran/matchexp.cc
  540b2df11e809f8e922d0bc5b5562d6b  gcc/fortran/mathbuiltins.def
--- 5640,5646 ----
  5659bf0ae0187cfd21cd8f599d82f98d  gcc/fortran/lang-specs.h
  92cf8f5887329d298f04e41b7fd4b780  gcc/fortran/lang.opt
  dfe2708ae1610f0355d4e3f64825ed31  gcc/fortran/libgfortran.h
! bea3116ee750dc99599200ed7513be4e  gcc/fortran/match.cc
  a91d0fda9651b722ffd4fb160f95378a  gcc/fortran/match.h
  38fc5448e9ea8b828a44496034ac708e  gcc/fortran/matchexp.cc
  540b2df11e809f8e922d0bc5b5562d6b  gcc/fortran/mathbuiltins.def
*************** b07d21325e9bf64201a6131a3dacb9e2  gcc/fo
*** 5656,5662 ****
  0ea05c5f1f9c27f26a76525f5eed9380  gcc/fortran/scanner.h
  d7be9766180ba9d84c17fe538c02907f  gcc/fortran/simplify.cc
  72519934fee840610460010d9b5e0503  gcc/fortran/st.cc
! b51ee6b2a9e4f3e8bf69662f69c8f23c  gcc/fortran/symbol.cc
  e99e43daa5fef5f3d2c6dce6be81a683  gcc/fortran/target-memory.cc
  70445c82cc8c84eb76adf2a52acad00d  gcc/fortran/target-memory.h
  b16988fb11ef93959450cfdd9eaa8825  gcc/fortran/trans-array.cc
--- 5656,5662 ----
  0ea05c5f1f9c27f26a76525f5eed9380  gcc/fortran/scanner.h
  d7be9766180ba9d84c17fe538c02907f  gcc/fortran/simplify.cc
  72519934fee840610460010d9b5e0503  gcc/fortran/st.cc
! f517590a45dbb7448f8bdabbb424c775  gcc/fortran/symbol.cc
  e99e43daa5fef5f3d2c6dce6be81a683  gcc/fortran/target-memory.cc
  70445c82cc8c84eb76adf2a52acad00d  gcc/fortran/target-memory.h
  b16988fb11ef93959450cfdd9eaa8825  gcc/fortran/trans-array.cc
*************** c15bfe2308615f6c0395efd6cdf7a3ae  gcc/fo
*** 5668,5677 ****
  db3105c2b544e19c5f87f1fc6165b7c0  gcc/fortran/trans-expr.cc
  7a6a0f4f555cbc9df7d147a017fc7444  gcc/fortran/trans-intrinsic.cc
  f6db1c9d47520d97d86df27171bd0050  gcc/fortran/trans-io.cc
! 4100e048c21085f4f2f9bdb70f4e29a2  gcc/fortran/trans-openmp.cc
  8c36caba9ba82554a7f97e56b2a48d63  gcc/fortran/trans-stmt.cc
  61675b3c591abd1d33f4d00338f84245  gcc/fortran/trans-stmt.h
! fc8598d1cff8fe85c82eb15bd14d186b  gcc/fortran/trans-types.cc
  5581dfe9c36f8428667284c49aa3d0a8  gcc/fortran/trans-types.h
  78b4a00c913f103a3f3d18c8c181efd9  gcc/fortran/trans.cc
  f816175a2ce44db1f8492faf3a65da0d  gcc/fortran/trans.h
--- 5668,5677 ----
  db3105c2b544e19c5f87f1fc6165b7c0  gcc/fortran/trans-expr.cc
  7a6a0f4f555cbc9df7d147a017fc7444  gcc/fortran/trans-intrinsic.cc
  f6db1c9d47520d97d86df27171bd0050  gcc/fortran/trans-io.cc
! c7930b7764e05d4b5c9e3c65f7ccc34c  gcc/fortran/trans-openmp.cc
  8c36caba9ba82554a7f97e56b2a48d63  gcc/fortran/trans-stmt.cc
  61675b3c591abd1d33f4d00338f84245  gcc/fortran/trans-stmt.h
! 7065faf196096868a61e1b84526614b9  gcc/fortran/trans-types.cc
  5581dfe9c36f8428667284c49aa3d0a8  gcc/fortran/trans-types.h
  78b4a00c913f103a3f3d18c8c181efd9  gcc/fortran/trans.cc
  f816175a2ce44db1f8492faf3a65da0d  gcc/fortran/trans.h
*************** c12e2732707baf23e73a14d0b1b36dfd  gcc/in
*** 5957,5963 ****
  b604200ebd6bbb8075a58d20d96105e3  gcc/intl.cc
  2086a023243c1aeb61f8be26da7a72ad  gcc/intl.h
  f1c9645780e7d29c2d852ae147ef5d45  gcc/ipa-comdats.cc
! 6a1702a5c0f4ba3a3e91d03b1d87c58c  gcc/ipa-cp.cc
  55517140580887ca4deb8ce1e0321892  gcc/ipa-devirt.cc
  c8ce953e3c995ecf84e97c4c93a60807  gcc/ipa-fnsummary.cc
  fb25c569d03784bece5c17aaaaa369c5  gcc/ipa-fnsummary.h
--- 5957,5963 ----
  b604200ebd6bbb8075a58d20d96105e3  gcc/intl.cc
  2086a023243c1aeb61f8be26da7a72ad  gcc/intl.h
  f1c9645780e7d29c2d852ae147ef5d45  gcc/ipa-comdats.cc
! b99e784ab51d3c4658406ce120e4d3a1  gcc/ipa-cp.cc
  55517140580887ca4deb8ce1e0321892  gcc/ipa-devirt.cc
  c8ce953e3c995ecf84e97c4c93a60807  gcc/ipa-fnsummary.cc
  fb25c569d03784bece5c17aaaaa369c5  gcc/ipa-fnsummary.h
*************** b829ed0032c899e107be2db349c913f3  gcc/ta
*** 7637,7643 ****
  811da275a2b9d3186a6decf96c01b0ed  gcc/targhooks.cc
  edb193a32070c4a7626fb75382def9b9  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 5f9812f0d645d7feedabf764d01d5119  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 7637,7643 ----
  811da275a2b9d3186a6decf96c01b0ed  gcc/targhooks.cc
  edb193a32070c4a7626fb75382def9b9  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 86747cc1fe566b2077d7f26af1dc1d63  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** b9007290e56f8c058df6fc2174bc755b  gcc/te
*** 14195,14200 ****
--- 14195,14202 ----
  b2e8cc3ca2686458232f6ab8399d9dda  gcc/testsuite/g++.dg/cpp0x/constexpr-93169.C
  bc7ccf4287a38e8f82df800db6150879  gcc/testsuite/g++.dg/cpp0x/constexpr-95307.C
  32c39fce8b20cb104d6da1cffca8a530  gcc/testsuite/g++.dg/cpp0x/constexpr-96241.C
+ 629f0389a900c8203177e0396b4ac416  gcc/testsuite/g++.dg/cpp0x/constexpr-97740a.C
+ eb45e434ffc94954a98ab41dfca4430c  gcc/testsuite/g++.dg/cpp0x/constexpr-97740b.C
  6aa74413b4ef74580a0a5da7abf23914  gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
  5f550fa68a208c2d1f3f6d02dca0b709  gcc/testsuite/g++.dg/cpp0x/constexpr-98295.C
  d08d3bdb37be475451a39fd6f72486e9  gcc/testsuite/g++.dg/cpp0x/constexpr-99.C
*************** c43cd4a90674d630795e0323738e0460  gcc/te
*** 21940,21945 ****
--- 21942,21948 ----
  9cf2cc98e56a48a7332ea02be0425960  gcc/testsuite/g++.dg/ipa/pr108830.C
  e66c84f48f938ed2bb548ce51957afce  gcc/testsuite/g++.dg/ipa/pr113757.C
  9183db2978d574bc26d43a0d942ec920  gcc/testsuite/g++.dg/ipa/pr118243.C
+ 2e880749089a9c6febba9ae1fa0de490  gcc/testsuite/g++.dg/ipa/pr122856.C
  02f3704c0511b2d171c55dbf09c64325  gcc/testsuite/g++.dg/ipa/pr43695.C
  5345293723ad062b59b168c319738e1e  gcc/testsuite/g++.dg/ipa/pr43812.C
  b001cbe3dfdeb7d2a1061f024aa08ea4  gcc/testsuite/g++.dg/ipa/pr44372.C
*************** aa46a01c430ca6bcb60fb6bc2edfbb1d  gcc/te
*** 53034,53044 ****
  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
  8fd9883d5396ca3292f66484ef525262  gcc/testsuite/gcc.dg/vect/vect-fncall-mask.c
  f7e0d01143aad0f81b1d1f66c5737e3a  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
  35c3ee4b34fc72c77cfca5c91b2ab36c  gcc/testsuite/gcc.dg/vect/vect-gather-1.c
--- 53037,53047 ----
  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
  8fd9883d5396ca3292f66484ef525262  gcc/testsuite/gcc.dg/vect/vect-fncall-mask.c
  f7e0d01143aad0f81b1d1f66c5737e3a  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
  35c3ee4b34fc72c77cfca5c91b2ab36c  gcc/testsuite/gcc.dg/vect/vect-gather-1.c
*************** afe21b866be9162c6b654dc6771e6ead  gcc/te
*** 89473,89480 ****
--- 89476,89485 ----
  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
  107263fe1c86ee042c855774a2b8e242  gcc/testsuite/gfortran.dg/pr102532.f90
+ 4efde3b7d107b33c9c8792e23b683d17  gcc/testsuite/gfortran.dg/pr102596.f90
  c081e1f510a2d68ec176356111dab188  gcc/testsuite/gfortran.dg/pr102685.f90
  d99cea26823109c0bb853b42df152999  gcc/testsuite/gfortran.dg/pr102715.f90
  f28998ba16e7a78633a9de3d5eaf0667  gcc/testsuite/gfortran.dg/pr102816.f90
*************** d4b65efea892e3a54acdb92a298fc582  gcc/te
*** 89536,89541 ****
--- 89541,89547 ----
  0677f2dac82b1b95cde8edf69efd60a9  gcc/testsuite/gfortran.dg/pr106918.f90
  09719e2d59fe58682ef7a737cdf01620  gcc/testsuite/gfortran.dg/pr106934.f90
  e1ccca85dc432ca649742c05520157d9  gcc/testsuite/gfortran.dg/pr106945.f90
+ 1b7098a64b99eb214b607f599b3eb32f  gcc/testsuite/gfortran.dg/pr106946.f90
  a9c6ba4d14cec93cd2edec54fda6a916  gcc/testsuite/gfortran.dg/pr106985.f90
  eb96b826eeaf84f157c8635706721d40  gcc/testsuite/gfortran.dg/pr106986.f90
  054c58cb24c0bee4ea0b5fcf3cdbf86d  gcc/testsuite/gfortran.dg/pr106999.f90
*************** e338cfba2f466abedf9af92b52cd6fb3  gcc/te
*** 90048,90053 ****
--- 90054,90060 ----
  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
*************** fd7937a762c5733d3533bba0d9b05a6e  gcc/te
*** 90062,90067 ****
--- 90069,90075 ----
  95b2ba5b10167fedc1a075877a7a103b  gcc/testsuite/gfortran.dg/pr84088.f90
  ee7b5aa850a8be8a1ed15f2fcdca347a  gcc/testsuite/gfortran.dg/pr84117.f90
  c41bc69547a048a19ccb1adc57ce3bca  gcc/testsuite/gfortran.dg/pr84155.f90
+ e6d08fa65e9eb602b71f0e6a8b44a739  gcc/testsuite/gfortran.dg/pr84245.f90
  12af81a97aa86950b63e458f115e45c9  gcc/testsuite/gfortran.dg/pr84523.f90
  6d593814cbde3b81eb21e9501a48bac2  gcc/testsuite/gfortran.dg/pr84565.f90
  4cf62650961664b3e4bce16d177b5929  gcc/testsuite/gfortran.dg/pr84674.f90
*************** a6b1d851f4c5b6cfffa8f56c8f9cd150  gcc/te
*** 90285,90290 ****
--- 90293,90299 ----
  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
*************** e3943d4860baba3dd60a559ec3b4df36  gcc/te
*** 95313,95318 ****
--- 95322,95329 ----
  858a5d2e6efff052115969f794debc69  gcc/testsuite/gnat.dg/opt102_pkg.ads
  337a806a6dd1106b843af17238d34b5b  gcc/testsuite/gnat.dg/opt104.adb
  7ee5b6675114982998270619932802bf  gcc/testsuite/gnat.dg/opt104.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
*************** da67de91badb3e7882b0f0f56a67670e  gcc/tr
*** 100617,100623 ****
  e36c0da1e5dc257d4ccff9c24043d7fc  gcc/tree-ssa-dce.h
  35f365067a15b900bdc007c8c4366fd1  gcc/tree-ssa-dom.cc
  aba207ac671bbe2380e556429ad21a00  gcc/tree-ssa-dom.h
! 06b408425e068ded81092e5bcc7d6022  gcc/tree-ssa-dse.cc
  9fe4418350cac32811c9ed2ed8de371f  gcc/tree-ssa-dse.h
  8d97cf47138ffd7cd6f4c316e206b8f2  gcc/tree-ssa-forwprop.cc
  567c30a8d9160fdcd286536c8e4a553e  gcc/tree-ssa-ifcombine.cc
--- 100628,100634 ----
  e36c0da1e5dc257d4ccff9c24043d7fc  gcc/tree-ssa-dce.h
  35f365067a15b900bdc007c8c4366fd1  gcc/tree-ssa-dom.cc
  aba207ac671bbe2380e556429ad21a00  gcc/tree-ssa-dom.h
! ac53f170ce2d238972f604eab2d06164  gcc/tree-ssa-dse.cc
  9fe4418350cac32811c9ed2ed8de371f  gcc/tree-ssa-dse.h
  8d97cf47138ffd7cd6f4c316e206b8f2  gcc/tree-ssa-forwprop.cc
  567c30a8d9160fdcd286536c8e4a553e  gcc/tree-ssa-ifcombine.cc
*************** b018601a4e35da4037b1e04dfdb00b98  libgom
*** 110930,110935 ****
--- 110941,110947 ----
  10f51539240fd456f44686f1368a9ebb  libgomp/testsuite/libgomp.fortran/pointer1.f90
  ea1e8a0a21d27e85d504f82d979196a3  libgomp/testsuite/libgomp.fortran/pointer2.f90
  5a38dd4751898fd9556aa9ed131fad76  libgomp/testsuite/libgomp.fortran/pr100981-2.f90
+ bd4d373b7453a268a0da695bf8bf8f52  libgomp/testsuite/libgomp.fortran/pr120286.f90
  1e7de6c9f1376e7662fc088ab6ec5e64  libgomp/testsuite/libgomp.fortran/pr25162.f
  150790c35955da1ca1b74284c2553f34  libgomp/testsuite/libgomp.fortran/pr25219.f90
  a83bd562c0d1b609f2a71de244b3a1a0  libgomp/testsuite/libgomp.fortran/pr27395-1.f90
diff -Nrcpad gcc-13-20260326/gcc/ChangeLog gcc-13-20260402/gcc/ChangeLog
*** gcc-13-20260326/gcc/ChangeLog	Thu Mar 26 22:32:06 2026
--- gcc-13-20260402/gcc/ChangeLog	Thu Apr  2 22:32:05 2026
***************
*** 1,3 ****
--- 1,20 ----
+ 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-27  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-02-20  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/122856
+ 	* ipa-cp.cc (self_recursive_pass_through_p): Test jump function type first.
+ 	(self_recursive_ancestor_p): New function.
+ 	(find_scalar_values_for_callers_subset): Test also for self-recursive
+ 	ancestor jump functions.
+ 	(push_agg_values_for_index_from_edge): Likewise.
+ 
  2026-03-22  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-13-20260326/gcc/DATESTAMP gcc-13-20260402/gcc/DATESTAMP
*** gcc-13-20260326/gcc/DATESTAMP	Thu Mar 26 22:32:06 2026
--- gcc-13-20260402/gcc/DATESTAMP	Thu Apr  2 22:32:05 2026
***************
*** 1 ****
! 20260326
--- 1 ----
! 20260402
diff -Nrcpad gcc-13-20260326/gcc/cp/ChangeLog gcc-13-20260402/gcc/cp/ChangeLog
*** gcc-13-20260326/gcc/cp/ChangeLog	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/cp/ChangeLog	Thu Apr  2 22:32:06 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-03-30  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/97740
+ 	* pt.cc (tsubst_expr) <case COMPONENT_REF>: Don't check access
+ 	when the given member is already a FIELD_DECL.
+ 
  2026-03-22  Marek Polacek  <polacek@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-13-20260326/gcc/cp/pt.cc gcc-13-20260402/gcc/cp/pt.cc
*** gcc-13-20260326/gcc/cp/pt.cc	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/cp/pt.cc	Thu Apr  2 22:32:07 2026
*************** tsubst_copy_and_build (tree t,
*** 21511,21518 ****
--- 21511,21524 ----
  	  }
  	else if (TREE_CODE (member) == FIELD_DECL)
  	  {
+ 	    /* Assume access of this FIELD_DECL has already been checked; we
+ 	       don't recheck it to avoid bogus access errors when substituting
+ 	       a reduced constant initializer (97740).  */
+ 	    gcc_checking_assert (TREE_CODE (TREE_OPERAND (t, 1)) == FIELD_DECL);
+ 	    push_deferring_access_checks (dk_deferred);
  	    r = finish_non_static_data_member (member, object, NULL_TREE,
  					       complain);
+ 	    pop_deferring_access_checks ();
  	    if (TREE_CODE (r) == COMPONENT_REF)
  	      REF_PARENTHESIZED_P (r) = REF_PARENTHESIZED_P (t);
  	    RETURN (r);
diff -Nrcpad gcc-13-20260326/gcc/fortran/ChangeLog gcc-13-20260402/gcc/fortran/ChangeLog
*** gcc-13-20260326/gcc/fortran/ChangeLog	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/fortran/ChangeLog	Thu Apr  2 22:32:07 2026
***************
*** 1,3 ****
--- 1,56 ----
+ 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-30  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/106946
+ 	* decl.cc (gfc_match_data_decl): Remove CLASS components added by a
+ 	failed declaration in a derived type, and guard symtree deletion.
+ 	* gfortran.h (gfc_free_component, gfc_delete_symtree): Declare.
+ 	* symbol.cc (gfc_free_component): New function.
+ 	(free_components): Use it.
+ 	(gfc_delete_symtree): Make non-static.
+ 
+ 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-22  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-13-20260326/gcc/fortran/decl.cc gcc-13-20260402/gcc/fortran/decl.cc
*** gcc-13-20260326/gcc/fortran/decl.cc	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/fortran/decl.cc	Thu Apr  2 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
*** 1772,1778 ****
        && (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)
      {
--- 1786,1805 ----
        && (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)
      {
*************** gfc_match_data_decl (void)
*** 6276,6287 ****
--- 6303,6330 ----
    gfc_symbol *sym;
    match m;
    int elem;
+   gfc_component *comp_tail = NULL;
  
    type_param_spec_list = NULL;
    decl_type_param_list = NULL;
  
    num_idents_on_line = 0;
  
+   /* Record the last component before we start, so that we can roll back
+      any components added during this statement on error.  PR106946.
+      Must be set before any 'goto cleanup' with m == MATCH_ERROR.  */
+   if (gfc_comp_struct (gfc_current_state ()))
+     {
+       gfc_symbol *block = gfc_current_block ();
+       if (block)
+ 	{
+ 	  comp_tail = block->components;
+ 	  if (comp_tail)
+ 	    while (comp_tail->next)
+ 	      comp_tail = comp_tail->next;
+ 	}
+     }
+ 
    m = gfc_match_decl_type_spec (&current_ts, 0);
    if (m != MATCH_YES)
      return m;
*************** ok:
*** 6401,6406 ****
--- 6444,6492 ----
    gfc_free_data_all (gfc_current_ns);
  
  cleanup:
+   /* If we failed inside a derived type definition, remove any CLASS
+      components that were added during this failed statement.  For CLASS
+      components, gfc_build_class_symbol creates an extra container symbol in
+      the namespace outside the normal undo machinery.  When reject_statement
+      later calls gfc_undo_symbols, the declaration state is rolled back but
+      that helper symbol survives and leaves the component dangling.  Ordinary
+      components do not create that extra helper symbol, so leave them in
+      place for the usual follow-up diagnostics.  PR106946.  */
+   if (m == MATCH_ERROR && gfc_comp_struct (gfc_current_state ()))
+     {
+       gfc_symbol *block = gfc_current_block ();
+       if (block)
+ 	{
+ 	  gfc_component **prev;
+ 	  if (comp_tail)
+ 	    prev = &comp_tail->next;
+ 	  else
+ 	    prev = &block->components;
+ 
+ 	  while (*prev)
+ 	    {
+ 	      gfc_component *c = *prev;
+ 	      if (c->ts.type == BT_CLASS && c->ts.u.derived
+ 		  && c->ts.u.derived->attr.is_class)
+ 		{
+ 		  /* Unlink this CLASS component.  */
+ 		  *prev = c->next;
+ 
+ 		  /* Remove the CLASS container from the namespace.  */
+ 		  gfc_symbol *fclass = c->ts.u.derived;
+ 		  if (gfc_find_symtree (fclass->ns->sym_root, fclass->name))
+ 		    gfc_delete_symtree (&fclass->ns->sym_root, fclass->name);
+ 		  gfc_release_symbol (fclass);
+ 
+ 		  /* Free the component structure.  */
+ 		  gfc_free_component (c);
+ 		}
+ 	      else
+ 		prev = &c->next;
+ 	    }
+ 	}
+     }
+ 
    if (saved_kind_expr)
      gfc_free_expr (saved_kind_expr);
    if (type_param_spec_list)
diff -Nrcpad gcc-13-20260326/gcc/fortran/gfortran.h gcc-13-20260402/gcc/fortran/gfortran.h
*** gcc-13-20260326/gcc/fortran/gfortran.h	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/fortran/gfortran.h	Thu Apr  2 22:32:07 2026
*************** bool gfc_missing_attr (symbol_attribute
*** 3470,3475 ****
--- 3470,3476 ----
  bool gfc_copy_attr (symbol_attribute *, symbol_attribute *, locus *);
  int gfc_copy_dummy_sym (gfc_symbol **, gfc_symbol *, int);
  bool gfc_add_component (gfc_symbol *, const char *, gfc_component **);
+ void gfc_free_component (gfc_component *);
  gfc_symbol *gfc_use_derived (gfc_symbol *);
  gfc_component *gfc_find_component (gfc_symbol *, const char *, bool, bool,
                                     gfc_ref **);
*************** bool gfc_reference_st_label (gfc_st_labe
*** 3481,3486 ****
--- 3482,3488 ----
  
  gfc_namespace *gfc_get_namespace (gfc_namespace *, int);
  gfc_symtree *gfc_new_symtree (gfc_symtree **, const char *);
+ void gfc_delete_symtree (gfc_symtree **, const char *);
  gfc_symtree *gfc_find_symtree (gfc_symtree *, const char *);
  void gfc_delete_symtree (gfc_symtree **, const char *);
  gfc_symtree *gfc_get_unique_symtree (gfc_namespace *);
diff -Nrcpad gcc-13-20260326/gcc/fortran/match.cc gcc-13-20260402/gcc/fortran/match.cc
*** gcc-13-20260326/gcc/fortran/match.cc	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/fortran/match.cc	Thu Apr  2 22:32:07 2026
*************** gfc_match_select_type (void)
*** 6574,6585 ****
    else
      {
        m = gfc_match (" %e ", &expr1);
!       if (m != MATCH_YES)
  	{
  	  std::swap (ns, gfc_current_ns);
  	  gfc_free_namespace (ns);
  	  return m;
  	}
      }
  
    m = gfc_match (" )%t");
--- 6574,6590 ----
    else
      {
        m = gfc_match (" %e ", &expr1);
!       if (m == MATCH_NO)
  	{
  	  std::swap (ns, gfc_current_ns);
  	  gfc_free_namespace (ns);
  	  return m;
  	}
+       /* On MATCH_ERROR, the temporary block namespace may already contain
+ 	 broken state from the failed expression match.  Avoid freeing it
+ 	 through the normal rollback path.  */
+       else if (m == MATCH_ERROR)
+ 	return m;
      }
  
    m = gfc_match (" )%t");
diff -Nrcpad gcc-13-20260326/gcc/fortran/symbol.cc gcc-13-20260402/gcc/fortran/symbol.cc
*** gcc-13-20260326/gcc/fortran/symbol.cc	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/fortran/symbol.cc	Thu Apr  2 22:32:07 2026
*************** gfc_find_component (gfc_symbol *sym, con
*** 2600,2605 ****
--- 2600,2620 ----
  /* Given a symbol, free all of the component structures and everything
     they point to.  */
  
+ void
+ gfc_free_component (gfc_component *p)
+ {
+   gfc_free_array_spec (p->as);
+   gfc_free_expr (p->initializer);
+   if (p->kind_expr)
+     gfc_free_expr (p->kind_expr);
+   if (p->param_list)
+     gfc_free_actual_arglist (p->param_list);
+   free (p->tb);
+   p->tb = NULL;
+   free (p);
+ }
+ 
+ 
  static void
  free_components (gfc_component *p)
  {
*************** free_components (gfc_component *p)
*** 2608,2623 ****
    for (; p; p = q)
      {
        q = p->next;
! 
!       gfc_free_array_spec (p->as);
!       gfc_free_expr (p->initializer);
!       if (p->kind_expr)
! 	gfc_free_expr (p->kind_expr);
!       if (p->param_list)
! 	gfc_free_actual_arglist (p->param_list);
!       free (p->tb);
!       p->tb = NULL;
!       free (p);
      }
  }
  
--- 2623,2629 ----
    for (; p; p = q)
      {
        q = p->next;
!       gfc_free_component (p);
      }
  }
  
diff -Nrcpad gcc-13-20260326/gcc/fortran/trans-openmp.cc gcc-13-20260402/gcc/fortran/trans-openmp.cc
*** gcc-13-20260326/gcc/fortran/trans-openmp.cc	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/fortran/trans-openmp.cc	Thu Apr  2 22:32:07 2026
*************** gfc_has_alloc_comps (tree type, tree dec
*** 405,410 ****
--- 405,434 ----
    return false;
  }
  
+ /* Return true if TYPE is a class container for a POINTER entity.  */
+ 
+ static bool
+ gfc_is_class_pointer_type (tree type)
+ {
+   tree name;
+   const char *s;
+ 
+   if (POINTER_TYPE_P (type))
+     type = TREE_TYPE (type);
+ 
+   if (!GFC_CLASS_TYPE_P (type))
+     return false;
+ 
+   name = TYPE_NAME (type);
+   if (name && TREE_CODE (name) == TYPE_DECL)
+     name = DECL_NAME (name);
+   if (!name)
+     return false;
+ 
+   s = IDENTIFIER_POINTER (name);
+   return startswith (s, "__class_") && s[strlen (s) - 1] == 'p';
+ }
+ 
  /* Return true if TYPE is polymorphic but not with pointer attribute.  */
  
  static bool
*************** gfc_omp_clause_default_ctor (tree clause
*** 754,760 ****
        return NULL_TREE;
      }
  
!   gcc_assert (outer != NULL_TREE);
  
    /* Allocatable arrays and scalars in PRIVATE clauses need to be set to
       "not currently allocated" allocation status if outer
--- 778,786 ----
        return NULL_TREE;
      }
  
!   gcc_assert (outer != NULL_TREE
! 	      || (!GFC_DESCRIPTOR_TYPE_P (type)
! 		  && !gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause))));
  
    /* Allocatable arrays and scalars in PRIVATE clauses need to be set to
       "not currently allocated" allocation status if outer
*************** gfc_omp_clause_copy_ctor (tree clause, t
*** 844,865 ****
  {
    tree type = TREE_TYPE (dest), ptr, size, call;
    tree decl_type = TREE_TYPE (OMP_CLAUSE_DECL (clause));
    tree cond, then_b, else_b;
    stmtblock_t block, cond_block;
  
    gcc_assert (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_FIRSTPRIVATE
  	      || OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_LINEAR);
  
!   /* Privatize pointer, only; cf. gfc_omp_predetermined_sharing. */
!   if (DECL_P (OMP_CLAUSE_DECL (clause))
!       && GFC_DECL_ASSOCIATE_VAR_P (OMP_CLAUSE_DECL (clause)))
!     return build2 (MODIFY_EXPR, TREE_TYPE (dest), dest, src);
  
!   if (DECL_ARTIFICIAL (OMP_CLAUSE_DECL (clause))
!       && DECL_LANG_SPECIFIC (OMP_CLAUSE_DECL (clause))
!       && GFC_DECL_SAVED_DESCRIPTOR (OMP_CLAUSE_DECL (clause)))
!     decl_type
!       = TREE_TYPE (GFC_DECL_SAVED_DESCRIPTOR (OMP_CLAUSE_DECL (clause)));
  
    if (gfc_is_polymorphic_nonptr (decl_type))
      {
--- 870,898 ----
  {
    tree type = TREE_TYPE (dest), ptr, size, call;
    tree decl_type = TREE_TYPE (OMP_CLAUSE_DECL (clause));
+   tree orig_decl = OMP_CLAUSE_DECL (clause);
    tree cond, then_b, else_b;
    stmtblock_t block, cond_block;
  
    gcc_assert (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_FIRSTPRIVATE
  	      || OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_LINEAR);
  
!   if (DECL_ARTIFICIAL (orig_decl)
!       && DECL_LANG_SPECIFIC (orig_decl)
!       && GFC_DECL_SAVED_DESCRIPTOR (orig_decl))
!     {
!       orig_decl = GFC_DECL_SAVED_DESCRIPTOR (orig_decl);
!       decl_type = TREE_TYPE (orig_decl);
!     }
  
!   /* Privatize pointer association only; cf. gfc_omp_predetermined_sharing.
!      This includes scalar class pointers, whose tree type is still the class
!      record even though the Fortran entity has POINTER semantics.  */
!   if (DECL_P (orig_decl)
!       && (GFC_DECL_ASSOCIATE_VAR_P (orig_decl)
! 	  || GFC_DECL_GET_SCALAR_POINTER (orig_decl)
! 	  || gfc_is_class_pointer_type (decl_type)))
!     return build2 (MODIFY_EXPR, TREE_TYPE (dest), dest, src);
  
    if (gfc_is_polymorphic_nonptr (decl_type))
      {
*************** gfc_omp_clause_dtor (tree clause, tree d
*** 1367,1383 ****
  {
    tree type = TREE_TYPE (decl), tem;
    tree decl_type = TREE_TYPE (OMP_CLAUSE_DECL (clause));
  
!   /* Only pointer was privatized; cf. gfc_omp_clause_copy_ctor. */
!   if (DECL_P (OMP_CLAUSE_DECL (clause))
!       && GFC_DECL_ASSOCIATE_VAR_P (OMP_CLAUSE_DECL (clause)))
      return NULL_TREE;
  
-   if (DECL_ARTIFICIAL (OMP_CLAUSE_DECL (clause))
-       && DECL_LANG_SPECIFIC (OMP_CLAUSE_DECL (clause))
-       && GFC_DECL_SAVED_DESCRIPTOR (OMP_CLAUSE_DECL (clause)))
-     decl_type
- 	= TREE_TYPE (GFC_DECL_SAVED_DESCRIPTOR (OMP_CLAUSE_DECL (clause)));
    if (gfc_is_polymorphic_nonptr (decl_type))
      {
        if (POINTER_TYPE_P (decl_type))
--- 1400,1423 ----
  {
    tree type = TREE_TYPE (decl), tem;
    tree decl_type = TREE_TYPE (OMP_CLAUSE_DECL (clause));
+   tree orig_decl = OMP_CLAUSE_DECL (clause);
  
!   if (DECL_ARTIFICIAL (orig_decl)
!       && DECL_LANG_SPECIFIC (orig_decl)
!       && GFC_DECL_SAVED_DESCRIPTOR (orig_decl))
!     {
!       orig_decl = GFC_DECL_SAVED_DESCRIPTOR (orig_decl);
!       decl_type = TREE_TYPE (orig_decl);
!     }
! 
!   /* Only pointer association was privatized; cf. gfc_omp_clause_copy_ctr.
!      Scalar class pointers must not finalize or free their targets here.  */
!   if (DECL_P (orig_decl)
!       && (GFC_DECL_ASSOCIATE_VAR_P (orig_decl)
! 	  || GFC_DECL_GET_SCALAR_POINTER (orig_decl)
! 	  || gfc_is_class_pointer_type (decl_type)))
      return NULL_TREE;
  
    if (gfc_is_polymorphic_nonptr (decl_type))
      {
        if (POINTER_TYPE_P (decl_type))
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 2961,2967 ****
  		{
  		  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;
--- 3001,3011 ----
  		{
  		  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)
*** 5809,5815 ****
        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;
--- 5853,5859 ----
        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-13-20260326/gcc/fortran/trans-types.cc gcc-13-20260402/gcc/fortran/trans-types.cc
*** gcc-13-20260326/gcc/fortran/trans-types.cc	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/fortran/trans-types.cc	Thu Apr  2 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)
*** 1111,1117 ****
    return index < 0 ? 0 : gfc_pcharacter_types[index];
  }
  
! 
  /* Create a character type with the given kind and length.  */
  
  tree
--- 1111,1117 ----
    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
*** 1147,1153 ****
  
    return gfc_get_character_type_len (kind, len);
  }
! 
  /* Convert a basic type.  This will be an array for character types.  */
  
  tree
--- 1147,1153 ----
  
    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
*** 1243,1249 ****
      }
    return basetype;
  }
! 
  /* Build an INT_CST for constant expressions, otherwise return NULL_TREE.  */
  
  static tree
--- 1243,1249 ----
      }
    return basetype;
  }
! 
  /* Build an INT_CST for constant expressions, otherwise return NULL_TREE.  */
  
  static tree
*************** gfc_conv_array_bound (gfc_expr * expr)
*** 1256,1262 ****
    /* 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.  */
--- 1256,1262 ----
    /* 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)
*** 1296,1302 ****
  
    return element;
  }
! 
  /* Build an array.  This function is called from gfc_sym_type().
     Actually returns array descriptor type.
  
--- 1296,1302 ----
  
    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
*** 1468,1474 ****
  				    corank, lbound, ubound, 0, akind,
  				    restricted);
  }
! 
  /* Returns the struct descriptor_dimension type.  */
  
  static tree
--- 1468,1474 ----
  				    corank, lbound, ubound, 0, akind,
  				    restricted);
  }
! 
  /* Returns the struct descriptor_dimension type.  */
  
  static tree
*************** gfc_get_array_type_bounds (tree etype, i
*** 2092,2098 ****
  
    return fat_type;
  }
! 
  /* Build a pointer type. This function is called from gfc_sym_type().  */
  
  static tree
--- 2092,2098 ----
  
    return fat_type;
  }
! 
  /* Build a pointer type. This function is called from gfc_sym_type().  */
  
  static tree
*************** gfc_nonrestricted_type (tree t)
*** 2267,2273 ****
    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.
--- 2267,2273 ----
    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_
*** 2391,2397 ****
  
    return (type);
  }
! 
  /* Layout and output debug info for a record type.  */
  
  void
--- 2391,2397 ----
  
    return (type);
  }
! 
  /* Layout and output debug info for a record type.  */
  
  void
*************** gfc_finish_type (tree type)
*** 2406,2412 ****
    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.
--- 2406,2412 ----
    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
*** 2970,2976 ****
  
    return 0;
  }
! 
  static tree
  gfc_get_mixed_entry_union (gfc_namespace *ns)
  {
--- 2970,2997 ----
  
    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
*** 2999,3005 ****
        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.  */
--- 3020,3027 ----
        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
*** 3007,3013 ****
    TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (type)) = 1;
    return type;
  }
! 
  /* Create a "fn spec" based on the formal arguments;
     cf. create_function_arglist.  */
  
--- 3029,3035 ----
    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:
*** 3328,3334 ****
  
    return type;
  }
! 
  /* Language hooks for middle-end access to type nodes.  */
  
  /* Return an integer type with BITS bits of precision,
--- 3350,3356 ----
  
    return type;
  }
! 
  /* Language hooks for middle-end access to type nodes.  */
  
  /* Return an integer type with BITS bits of precision,
diff -Nrcpad gcc-13-20260326/gcc/ipa-cp.cc gcc-13-20260402/gcc/ipa-cp.cc
*** gcc-13-20260326/gcc/ipa-cp.cc	Thu Mar 26 22:32:07 2026
--- gcc-13-20260402/gcc/ipa-cp.cc	Thu Apr  2 22:32:07 2026
*************** self_recursive_pass_through_p (cgraph_ed
*** 5480,5488 ****
  			       bool simple = true)
  {
    enum availability availability;
!   if (cs->caller == cs->callee->function_symbol (&availability)
        && availability > AVAIL_INTERPOSABLE
-       && jfunc->type == IPA_JF_PASS_THROUGH
        && (!simple || ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
        && ipa_get_jf_pass_through_formal_id (jfunc) == i
        && ipa_node_params_sum->get (cs->caller)
--- 5480,5488 ----
  			       bool simple = true)
  {
    enum availability availability;
!   if (jfunc->type == IPA_JF_PASS_THROUGH
!       && cs->caller == cs->callee->function_symbol (&availability)
        && availability > AVAIL_INTERPOSABLE
        && (!simple || ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
        && ipa_get_jf_pass_through_formal_id (jfunc) == i
        && ipa_node_params_sum->get (cs->caller)
*************** self_recursive_pass_through_p (cgraph_ed
*** 5491,5496 ****
--- 5491,5515 ----
    return false;
  }
  
+ /* Return true if JFUNC, which describes the i-th parameter of call CS, is an
+    ancestor function with zero offset to itself when the cgraph_node involved
+    is not an IPA-CP clone.  */
+ 
+ static bool
+ self_recursive_ancestor_p (cgraph_edge *cs, ipa_jump_func *jfunc, int i)
+ {
+   enum availability availability;
+   if (jfunc->type == IPA_JF_ANCESTOR
+       && cs->caller == cs->callee->function_symbol (&availability)
+       && availability > AVAIL_INTERPOSABLE
+       && ipa_get_jf_ancestor_offset (jfunc) == 0
+       && ipa_get_jf_ancestor_formal_id (jfunc) == i
+       && ipa_node_params_sum->get (cs->caller)
+       && !ipa_node_params_sum->get (cs->caller)->ipcp_orig_node)
+     return true;
+   return false;
+ }
+ 
  /* Return true if JFUNC, which describes a part of an aggregate represented or
     pointed to by the i-th parameter of call CS, is a pass-through function to
     itself when the cgraph_node involved is not an IPA-CP clone..  When
*************** find_more_scalar_values_for_callers_subs
*** 5574,5579 ****
--- 5593,5600 ----
  				ipa_get_jf_pass_through_operand (jump_func),
  				type);
  	    }
+ 	  else if (self_recursive_ancestor_p (cs, jump_func, i))
+ 	    continue;
  	  else
  	    t = ipa_value_from_jfunc (ipa_node_params_sum->get (cs->caller),
  				      jump_func, type);
*************** push_agg_values_for_index_from_edge (str
*** 5739,5745 ****
  	      && !src_plats->aggs_bottom
  	      && (agg_jf_preserved || !src_plats->aggs_by_ref))
  	    {
! 	      if (interim && self_recursive_pass_through_p (cs, jfunc, index))
  		{
  		  interim->push_adjusted_values (src_idx, index, unit_delta,
  						 res);
--- 5760,5767 ----
  	      && !src_plats->aggs_bottom
  	      && (agg_jf_preserved || !src_plats->aggs_by_ref))
  	    {
! 	      if (interim && (self_recursive_pass_through_p (cs, jfunc, index)
! 			      || self_recursive_ancestor_p (cs, jfunc, index)))
  		{
  		  interim->push_adjusted_values (src_idx, index, unit_delta,
  						 res);
diff -Nrcpad gcc-13-20260326/gcc/testsuite/ChangeLog gcc-13-20260402/gcc/testsuite/ChangeLog
*** gcc-13-20260326/gcc/testsuite/ChangeLog	Thu Mar 26 22:32:08 2026
--- gcc-13-20260402/gcc/testsuite/ChangeLog	Thu Apr  2 22:32:08 2026
***************
*** 1,3 ****
--- 1,77 ----
+ 2026-03-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/opt107.adb: New test.
+ 	* gnat.dg/opt107_pkg.ads: New helper.
+ 
+ 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-30  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/97740
+ 	* g++.dg/cpp0x/constexpr-97740a.C: New test.
+ 	* g++.dg/cpp0x/constexpr-97740b.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-30  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-03-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/106946
+ 	* gfortran.dg/pr106946.f90: Cover allocatable and pointer CLASS
+ 	declarations, including a valid component followed by a bad one.
+ 
+ 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  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-27  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-02-20  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/122856
+ 	* g++.dg/ipa/pr122856.C: New test.
+ 
  2026-03-23  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gnat.dg/generic_inst20.ads, gnat.dg/generic_inst20.adb: New test.
diff -Nrcpad gcc-13-20260326/gcc/testsuite/g++.dg/cpp0x/constexpr-97740a.C gcc-13-20260402/gcc/testsuite/g++.dg/cpp0x/constexpr-97740a.C
*** gcc-13-20260326/gcc/testsuite/g++.dg/cpp0x/constexpr-97740a.C	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/g++.dg/cpp0x/constexpr-97740a.C	Thu Apr  2 22:32:08 2026
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/97740
+ // { dg-do compile { target c++11 } }
+ 
+ struct A {
+   constexpr const int* get() const { return &m; }
+ private:
+   int m;
+ } a;
+ 
+ struct B { const int* p; };
+ 
+ template<class T>
+ void f() {
+   constexpr B x = {a.get()}; // { dg-bogus "private" }
+   constexpr B y = {&a.m};    // { dg-error "private" }
+ }
+ 
+ template void f<int>();
diff -Nrcpad gcc-13-20260326/gcc/testsuite/g++.dg/cpp0x/constexpr-97740b.C gcc-13-20260402/gcc/testsuite/g++.dg/cpp0x/constexpr-97740b.C
*** gcc-13-20260326/gcc/testsuite/g++.dg/cpp0x/constexpr-97740b.C	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/g++.dg/cpp0x/constexpr-97740b.C	Thu Apr  2 22:32:08 2026
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/97740
+ // { dg-do compile { target c++14 } }
+ 
+ struct A {
+   constexpr const int* get() const { return &m; }
+ private:
+   int m;
+ } a;
+ 
+ struct B { const int* p; };
+ 
+ template<A* arg>
+ void f() {
+   [] (auto) {
+     constexpr B x = {arg->get()}; // { dg-bogus "private" }
+     constexpr B y = {&arg->m};    // { dg-error "private" }
+   }(0);
+ }
+ 
+ template void f<&a>();
diff -Nrcpad gcc-13-20260326/gcc/testsuite/g++.dg/ipa/pr122856.C gcc-13-20260402/gcc/testsuite/g++.dg/ipa/pr122856.C
*** gcc-13-20260326/gcc/testsuite/g++.dg/ipa/pr122856.C	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/g++.dg/ipa/pr122856.C	Thu Apr  2 22:32:08 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -std=gnu++11" } */
+ 
+ template <typename T>
+ class Base {
+ public:
+     virtual int get();
+     virtual ~Base() = default;
+ };
+ 
+ template <typename T>
+ class Derived : public Base<T> {
+ public:
+     int get() override { return Base<T>::get(); }
+ };
+ 
+ template <typename T>
+ int Base<T>::get() {
+ 
+     return static_cast<Derived<int>*>(this)->get();
+ }
+ 
+ int main() {
+     Derived<int> d;
+     return d.get();
+ }
diff -Nrcpad gcc-13-20260326/gcc/testsuite/gcc.dg/vect/vect-fmax-2.c gcc-13-20260402/gcc/testsuite/gcc.dg/vect/vect-fmax-2.c
*** gcc-13-20260326/gcc/testsuite/gcc.dg/vect/vect-fmax-2.c	Thu Mar 26 22:32:12 2026
--- gcc-13-20260402/gcc/testsuite/gcc.dg/vect/vect-fmax-2.c	Thu Apr  2 22:32:10 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-13-20260326/gcc/testsuite/gcc.dg/vect/vect-fmax-3.c gcc-13-20260402/gcc/testsuite/gcc.dg/vect/vect-fmax-3.c
*** gcc-13-20260326/gcc/testsuite/gcc.dg/vect/vect-fmax-3.c	Thu Mar 26 22:32:12 2026
--- gcc-13-20260402/gcc/testsuite/gcc.dg/vect/vect-fmax-3.c	Thu Apr  2 22:32:10 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-13-20260326/gcc/testsuite/gcc.dg/vect/vect-fmin-2.c gcc-13-20260402/gcc/testsuite/gcc.dg/vect/vect-fmin-2.c
*** gcc-13-20260326/gcc/testsuite/gcc.dg/vect/vect-fmin-2.c	Thu Mar 26 22:32:12 2026
--- gcc-13-20260402/gcc/testsuite/gcc.dg/vect/vect-fmin-2.c	Thu Apr  2 22:32:10 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-13-20260326/gcc/testsuite/gcc.dg/vect/vect-fmin-3.c gcc-13-20260402/gcc/testsuite/gcc.dg/vect/vect-fmin-3.c
*** gcc-13-20260326/gcc/testsuite/gcc.dg/vect/vect-fmin-3.c	Thu Mar 26 22:32:12 2026
--- gcc-13-20260402/gcc/testsuite/gcc.dg/vect/vect-fmin-3.c	Thu Apr  2 22:32:10 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-13-20260326/gcc/testsuite/gfortran.dg/pr102459.f90 gcc-13-20260402/gcc/testsuite/gfortran.dg/pr102459.f90
*** gcc-13-20260326/gcc/testsuite/gfortran.dg/pr102459.f90	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/gfortran.dg/pr102459.f90	Thu Apr  2 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-13-20260326/gcc/testsuite/gfortran.dg/pr102596.f90 gcc-13-20260402/gcc/testsuite/gfortran.dg/pr102596.f90
*** gcc-13-20260326/gcc/testsuite/gfortran.dg/pr102596.f90	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/gfortran.dg/pr102596.f90	Thu Apr  2 22:32:13 2026
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-fopenmp" }
+ 
+ program p
+   integer, allocatable :: r
+ 
+   allocate (r)
+   r = 0
+ 
+   !$omp target parallel reduction(task, +:r)
+   r = r + 1
+   !$omp end target parallel
+ end
diff -Nrcpad gcc-13-20260326/gcc/testsuite/gfortran.dg/pr106946.f90 gcc-13-20260402/gcc/testsuite/gfortran.dg/pr106946.f90
*** gcc-13-20260326/gcc/testsuite/gfortran.dg/pr106946.f90	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/gfortran.dg/pr106946.f90	Thu Apr  2 22:32:13 2026
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do compile }
+ ! PR fortran/106946
+ ! ICE in resolve_component on invalid CLASS declaration with missing comma.
+ !
+ ! The bad declarations below should diagnose and continue without leaving
+ ! behind dangling CLASS container symbols in the surrounding namespace.
+ 
+ program p
+   type :: u
+   end type
+ 
+   type :: v
+   end type
+ 
+   type :: w
+   end type
+ 
+   type :: t1
+     class(u), allocatable :: a b  ! { dg-error "Syntax error in data declaration" }
+   end type
+ 
+   type :: t2
+     class(v), pointer :: p q  ! { dg-error "Syntax error in data declaration" }
+   end type
+ 
+   type :: t3
+     class(w), allocatable :: ok
+     class(w), allocatable :: x y  ! { dg-error "Syntax error in data declaration" }
+   end type
+ end
diff -Nrcpad gcc-13-20260326/gcc/testsuite/gfortran.dg/pr82721.f90 gcc-13-20260402/gcc/testsuite/gfortran.dg/pr82721.f90
*** gcc-13-20260326/gcc/testsuite/gfortran.dg/pr82721.f90	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/gfortran.dg/pr82721.f90	Thu Apr  2 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-13-20260326/gcc/testsuite/gfortran.dg/pr84245.f90 gcc-13-20260402/gcc/testsuite/gfortran.dg/pr84245.f90
*** gcc-13-20260326/gcc/testsuite/gfortran.dg/pr84245.f90	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/gfortran.dg/pr84245.f90	Thu Apr  2 22:32:13 2026
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! { dg-options "-w" }
+ 
+ program p
+   select type (x%a) ! { dg-error "Unexpected '%'.*nonderived-type variable 'x'" }
+   end select        ! { dg-error "Expecting END PROGRAM statement" }
+ end
diff -Nrcpad gcc-13-20260326/gcc/testsuite/gfortran.dg/pr95338.f90 gcc-13-20260402/gcc/testsuite/gfortran.dg/pr95338.f90
*** gcc-13-20260326/gcc/testsuite/gfortran.dg/pr95338.f90	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/gfortran.dg/pr95338.f90	Thu Apr  2 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-13-20260326/gcc/testsuite/gnat.dg/opt107.adb gcc-13-20260402/gcc/testsuite/gnat.dg/opt107.adb
*** gcc-13-20260326/gcc/testsuite/gnat.dg/opt107.adb	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/gnat.dg/opt107.adb	Thu Apr  2 22:32:13 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-13-20260326/gcc/testsuite/gnat.dg/opt107_pkg.ads gcc-13-20260402/gcc/testsuite/gnat.dg/opt107_pkg.ads
*** gcc-13-20260326/gcc/testsuite/gnat.dg/opt107_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/gcc/testsuite/gnat.dg/opt107_pkg.ads	Thu Apr  2 22:32:13 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-13-20260326/gcc/tree-ssa-dse.cc gcc-13-20260402/gcc/tree-ssa-dse.cc
*** gcc-13-20260326/gcc/tree-ssa-dse.cc	Thu Mar 26 22:32:15 2026
--- gcc-13-20260402/gcc/tree-ssa-dse.cc	Thu Apr  2 22:32:13 2026
*************** compute_trims (ao_ref *ref, sbitmap live
*** 410,417 ****
       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;
  
--- 410,419 ----
       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-13-20260326/libgomp/testsuite/libgomp.fortran/pr120286.f90 gcc-13-20260402/libgomp/testsuite/libgomp.fortran/pr120286.f90
*** gcc-13-20260326/libgomp/testsuite/libgomp.fortran/pr120286.f90	Thu Jan  1 00:00:00 1970
--- gcc-13-20260402/libgomp/testsuite/libgomp.fortran/pr120286.f90	Thu Apr  2 22:32:15 2026
***************
*** 0 ****
--- 1,49 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/120286 - scalar class pointers in OpenMP private/firstprivate
+ ! clauses must preserve association status without taking ownership.
+ 
+ program main
+   implicit none
+ 
+   type foo_t
+     integer :: dummy
+   end type foo_t
+ 
+   type fooPtr_t
+     class(foo_t), pointer :: p
+   end type fooPtr_t
+ 
+   type fooPtrStack_t
+     class(fooPtr_t), allocatable :: list(:)
+   end type fooPtrStack_t
+ 
+   type(fooPtrStack_t) :: x
+   class(foo_t), pointer :: ptr
+   integer :: it, n
+   logical :: ok
+ 
+   allocate (x%list(1))
+   allocate (x%list(1)%p)
+   x%list(1)%p%dummy = 7
+ 
+   do it = 1, 16
+ !$omp parallel do default(none) num_threads(2) private(n, ptr) shared(x)
+     do n = 1, 1
+       ptr => x%list(n)%p
+     end do
+ !$omp end parallel do
+   end do
+ 
+   if (.not. associated (x%list(1)%p)) stop 1
+   if (x%list(1)%p%dummy /= 7) stop 2
+ 
+   ptr => x%list(1)%p
+   ok = .false.
+ 
+ !$omp parallel default(none) num_threads(1) firstprivate(ptr) shared(x, ok)
+   ok = associated (ptr, x%list(1)%p) .and. ptr%dummy == 7
+ !$omp end parallel
+ 
+   if (.not. ok) stop 3
+ end program main
