diff -Nrcpad gcc-15-20260321/LAST_UPDATED gcc-15-20260328/LAST_UPDATED
*** gcc-15-20260321/LAST_UPDATED	Sat Mar 21 22:32:21 2026
--- gcc-15-20260328/LAST_UPDATED	Sat Mar 28 22:32:20 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision fa37bfd7f2d01858323d7b8100a154d0a526b8f9
--- 1 ----
! Obtained from git: releases/gcc-15 revision 2241491c24848355a713532eecdc1ce0df35fc1d
diff -Nrcpad gcc-15-20260321/MD5SUMS gcc-15-20260328/MD5SUMS
*** gcc-15-20260321/MD5SUMS	Sat Mar 21 22:32:26 2026
--- gcc-15-20260328/MD5SUMS	Sat Mar 28 22:32:24 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20260321.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-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
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 071f63e1b336d9c846c8a43eaf81589d  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 392629cea20fae7cba78e8883b560e42  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
! 522a7c76721c4de58e28e3c7e8389be7  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
! c5329edbc41627a12ecd3a00311bde31  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
! f4320cb5f8485c32fc5e5d5a6b670761  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
! ae0327587b0a3ed0fcf20f660bb46c8d  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 563,569 ****
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 259cc2b047fa2f8b780efe159de71f37  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 563,569 ----
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! bf6c539d2cca33c0a7c5b257bae0acfb  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** e364f4e3ae92066699cc93a8f7b828c1  gcc/ad
*** 2924,2930 ****
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! ce35c489ed70449ba1be2a5edceeeb70  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
  15eb4c6e6a36d1557dba3f2a571d4519  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
--- 2924,2930 ----
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! add4ee44b18268dbe3d59cb4d9783497  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
  15eb4c6e6a36d1557dba3f2a571d4519  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
*************** d0ed9c569455451ee26c8e2565b7125b  gcc/ad
*** 2950,2956 ****
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
  8f677120e0bcecbdcfa5b9c4f44cb282  gcc/ada/sem_dist.adb
  a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ada/sem_dist.ads
! ea4d856a616d24b9db47871b82e88726  gcc/ada/sem_elab.adb
  c074ec7450863300eff2a21c036a624b  gcc/ada/sem_elab.ads
  1dcf7c5349839b9e9ab4ee0d1954c7c6  gcc/ada/sem_elim.adb
  c837e01542a712c622bac1cd152fc080  gcc/ada/sem_elim.ads
--- 2950,2956 ----
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
  8f677120e0bcecbdcfa5b9c4f44cb282  gcc/ada/sem_dist.adb
  a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ada/sem_dist.ads
! 2ac0bcc8c012f664bd89b9a24521c156  gcc/ada/sem_elab.adb
  c074ec7450863300eff2a21c036a624b  gcc/ada/sem_elab.ads
  1dcf7c5349839b9e9ab4ee0d1954c7c6  gcc/ada/sem_elim.adb
  c837e01542a712c622bac1cd152fc080  gcc/ada/sem_elim.ads
*************** ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-
*** 3213,3219 ****
  364fe59813c3f5a2a44f15892f087f94  gcc/c-family/c-common.cc
  7d631d63d02c9fdb7b800977cd8dc894  gcc/c-family/c-common.def
  c6ac8fb15a8d6272184d999f651d660d  gcc/c-family/c-common.h
! 1c57db57b8673a678e1501b694ea87e0  gcc/c-family/c-cppbuiltin.cc
  01db2d5cca29943c49bb372f2137d874  gcc/c-family/c-dump.cc
  53e39536dbd251b4c218e15e99f21a0d  gcc/c-family/c-format.cc
  89a27efffabf06afdd7dee7495d2591c  gcc/c-family/c-format.h
--- 3213,3219 ----
  364fe59813c3f5a2a44f15892f087f94  gcc/c-family/c-common.cc
  7d631d63d02c9fdb7b800977cd8dc894  gcc/c-family/c-common.def
  c6ac8fb15a8d6272184d999f651d660d  gcc/c-family/c-common.h
! 088f9e83e236e54e87478f4ec3a68756  gcc/c-family/c-cppbuiltin.cc
  01db2d5cca29943c49bb372f2137d874  gcc/c-family/c-dump.cc
  53e39536dbd251b4c218e15e99f21a0d  gcc/c-family/c-format.cc
  89a27efffabf06afdd7dee7495d2591c  gcc/c-family/c-format.h
*************** fce8de27014c109814b3f69be6a5d4f6  gcc/cp
*** 5543,5549 ****
  65891fa261ce5aa3474ed32683a124d3  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  ea043095301b104b0d04f08fa408bb14  gcc/cp/constexpr.cc
! d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
  564af52a675c5727faa9f84885de41dc  gcc/cp/coroutines.cc
--- 5543,5549 ----
  65891fa261ce5aa3474ed32683a124d3  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  ea043095301b104b0d04f08fa408bb14  gcc/cp/constexpr.cc
! a4fc328db28f375cb129e7d3b1a96683  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
  564af52a675c5727faa9f84885de41dc  gcc/cp/coroutines.cc
*************** e7fe06956aada61bcaae5168ad47a9c1  gcc/cp
*** 5588,5594 ****
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  eae2e1338eefdbc34a442a4f5e164277  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! f259f4b41d4c04ce153b31653a65eaaf  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  318c5e4a338363a8183b4a01222aa800  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
--- 5588,5594 ----
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  eae2e1338eefdbc34a442a4f5e164277  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! a8921c44ca26c68398160eea82789934  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  318c5e4a338363a8183b4a01222aa800  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6061,6067 ****
  c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 4e5741ff77479e20eaf881ba22e60141  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
! 397ab9622152e2d96c52c6dc650558d6  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** d2a28ef98f6f78d1608fb52204e013a5  gcc/fo
*** 6129,6135 ****
  2e69cb4e17cc2e89fd21228231798659  gcc/fortran/lang.opt
  9c43410ca32214bfab9763966c01547a  gcc/fortran/lang.opt.urls
  e350765243fa7b881ed82507561870ff  gcc/fortran/libgfortran.h
! 6ea6f6099b39496a2bec1a9d299d96c0  gcc/fortran/match.cc
  047778859aa899389e3b7e65c1439faa  gcc/fortran/match.h
  8181d5e935b96288d9a51fb8138faefb  gcc/fortran/matchexp.cc
  297213add624aabc75e1e83d2e504eef  gcc/fortran/mathbuiltins.def
--- 6129,6135 ----
  2e69cb4e17cc2e89fd21228231798659  gcc/fortran/lang.opt
  9c43410ca32214bfab9763966c01547a  gcc/fortran/lang.opt.urls
  e350765243fa7b881ed82507561870ff  gcc/fortran/libgfortran.h
! f654eecadb8cabd4c371426eb83f08b1  gcc/fortran/match.cc
  047778859aa899389e3b7e65c1439faa  gcc/fortran/match.h
  8181d5e935b96288d9a51fb8138faefb  gcc/fortran/matchexp.cc
  297213add624aabc75e1e83d2e504eef  gcc/fortran/mathbuiltins.def
*************** c78c72f9e780bf1c0eea63295c5ba590  gcc/fo
*** 6148,6160 ****
  abd1247d4f726490e981994fe5fc3124  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 3642bf5789a9f38411283c5e4969c5ab  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
! 238ad5aa85447100b73b8f59bf5dcaa8  gcc/fortran/trans-expr.cc
  8ba8fa53a4179a343767efc9ef4e17be  gcc/fortran/trans-intrinsic.cc
  a26cd103074d9ae2f87ac35ba1b90970  gcc/fortran/trans-io.cc
  2e5ebe2e22c411c3e1476d807025ae07  gcc/fortran/trans-openmp.cc
--- 6148,6160 ----
  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
*************** b3a965e425e6cf7888319667faf58da9  gcc/sy
*** 8448,8454 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! e8dc0491ecfe698190f474b9aceb3de5  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
! 909aa3db57dc621436cd7ecb6b06b1a9  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** e884bf1c365eb117bddb8cf25bb61944  gcc/te
*** 19078,19083 ****
--- 19078,19084 ----
  18a5617c6a56b06d2e51299f84183279  gcc/testsuite/g++.dg/cpp0x/static_assert15.C
  53545b7342e66ae87c68f3a770b6a193  gcc/testsuite/g++.dg/cpp0x/static_assert16.C
  a763580664ce585f23dcbf8cf13cab6a  gcc/testsuite/g++.dg/cpp0x/static_assert17.C
+ 0b478e7b19ce99e25e3b117a78dbd54a  gcc/testsuite/g++.dg/cpp0x/static_assert18.C
  7c94507411d8f0fcd4964618204cd929  gcc/testsuite/g++.dg/cpp0x/static_assert2.C
  f24eae3c4070d37d2bbcb3f45a386807  gcc/testsuite/g++.dg/cpp0x/static_assert3.C
  09c6459c722f7fda152e22ef59d4e30c  gcc/testsuite/g++.dg/cpp0x/static_assert4.C
*************** e4eef3325d652767c4b83b6aed8c24b5  gcc/te
*** 21022,21028 ****
  54f4344e911f644cb2cc34417b933914  gcc/testsuite/g++.dg/cpp23/ext-floating7.C
  bc34c96001d8dfdc3193f88b494b97a1  gcc/testsuite/g++.dg/cpp23/ext-floating8.C
  235a8f3c94e9cc7e9180fe31a3d8352b  gcc/testsuite/g++.dg/cpp23/ext-floating9.C
! 41f6b84af959c52c0015d14c364d9a05  gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C
  b2919427c96be25ae3a72933323c8de1  gcc/testsuite/g++.dg/cpp23/init-stmt1.C
  368308646b02bb36cf22014a0d5bbbdb  gcc/testsuite/g++.dg/cpp23/init-stmt2.C
  906bfd9572fea8013b12e8c215392381  gcc/testsuite/g++.dg/cpp23/label1.C
--- 21023,21029 ----
  54f4344e911f644cb2cc34417b933914  gcc/testsuite/g++.dg/cpp23/ext-floating7.C
  bc34c96001d8dfdc3193f88b494b97a1  gcc/testsuite/g++.dg/cpp23/ext-floating8.C
  235a8f3c94e9cc7e9180fe31a3d8352b  gcc/testsuite/g++.dg/cpp23/ext-floating9.C
! cb638f384b69db1073adfb06c1cc5942  gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C
  b2919427c96be25ae3a72933323c8de1  gcc/testsuite/g++.dg/cpp23/init-stmt1.C
  368308646b02bb36cf22014a0d5bbbdb  gcc/testsuite/g++.dg/cpp23/init-stmt2.C
  906bfd9572fea8013b12e8c215392381  gcc/testsuite/g++.dg/cpp23/label1.C
*************** d0519edbdf7be9b73cadd101aebf0d60  gcc/te
*** 21112,21118 ****
  63db9f67d075960d87cf10ec80c8c798  gcc/testsuite/g++.dg/cpp26/delete2.C
  fcd9d0d666c1c3882f154900cd8e57fb  gcc/testsuite/g++.dg/cpp26/delete3.C
  b835b9bb00c8b448e2ac56df5e6cae60  gcc/testsuite/g++.dg/cpp26/enum-conv1.C
! 3f483bbcb1d535aa9c7cb56cc358f2df  gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
  e439504634b8fdea668e10d9fc930c63  gcc/testsuite/g++.dg/cpp26/literals1.C
  24ebebb3be412c0e507595cb8c7458f5  gcc/testsuite/g++.dg/cpp26/literals2.C
  1eebd6cbce6cabc0490fdd8bf706934d  gcc/testsuite/g++.dg/cpp26/name-independent-decl1.C
--- 21113,21119 ----
  63db9f67d075960d87cf10ec80c8c798  gcc/testsuite/g++.dg/cpp26/delete2.C
  fcd9d0d666c1c3882f154900cd8e57fb  gcc/testsuite/g++.dg/cpp26/delete3.C
  b835b9bb00c8b448e2ac56df5e6cae60  gcc/testsuite/g++.dg/cpp26/enum-conv1.C
! 6db9247119c35aa62cb162c1e62c4b18  gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
  e439504634b8fdea668e10d9fc930c63  gcc/testsuite/g++.dg/cpp26/literals1.C
  24ebebb3be412c0e507595cb8c7458f5  gcc/testsuite/g++.dg/cpp26/literals2.C
  1eebd6cbce6cabc0490fdd8bf706934d  gcc/testsuite/g++.dg/cpp26/name-independent-decl1.C
*************** fbdc0e6797df6f79ec2f98e9681b3df2  gcc/te
*** 21252,21257 ****
--- 21253,21259 ----
  041d83d15cbe2f1b6faf8df5779ee617  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias24.C
  de00e6f50f8aa11ae388287d947cb6dd  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias25.C
  5ca927feee2c144f300c078175416059  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias25a.C
+ e958b2de4daf4cbee928c81f06d5dc9e  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias26.C
  b5dae7ae7594a42f65f1f8f0f17b30a8  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias3.C
  06de637acc58c0572ef2eb75419e55e3  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias4.C
  0538d499885f751447275fb21053fc26  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias5.C
*************** f14a1d093c6192fd601a94286a19cd55  gcc/te
*** 21554,21563 ****
  f713831318164c8a8d53cee4f41a5feb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98394.C
  47d56c0b8e4b2e304785aae26d0409fb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98644.C
  7bff00217f0937919ad829a2aa4986de  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat1.C
! 494a9362815e7269cd14d3b6eb900c68  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
  c74823853141d61f8e8a8e1d3a3f8bd4  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
  333e80767f9ac98151ff6ec608cef8ab  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
! a5dcc7f1104645e397389de9dc3d2362  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C
  05d0c4aeef396d36ed2d0d824682b06c  gcc/testsuite/g++.dg/cpp2a/concepts-redecl1.C
  89a75de6ffea2b5931b15021369b2a4e  gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
  2a75164ac4ebdba51dd415fcd578a8f9  gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
--- 21556,21565 ----
  f713831318164c8a8d53cee4f41a5feb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98394.C
  47d56c0b8e4b2e304785aae26d0409fb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98644.C
  7bff00217f0937919ad829a2aa4986de  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat1.C
! b0679a6958bd99749db8630269b69a2c  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
  c74823853141d61f8e8a8e1d3a3f8bd4  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
  333e80767f9ac98151ff6ec608cef8ab  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
! 068f4770bb6848b516017a203e505522  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C
  05d0c4aeef396d36ed2d0d824682b06c  gcc/testsuite/g++.dg/cpp2a/concepts-redecl1.C
  89a75de6ffea2b5931b15021369b2a4e  gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
  2a75164ac4ebdba51dd415fcd578a8f9  gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
*************** fc1805f7c9ae0e0d70715f21f1ab1323  gcc/te
*** 22082,22087 ****
--- 22084,22092 ----
  d363d5590bc863dbb1f6bb96bad95b3c  gcc/testsuite/g++.dg/cpp2a/lambda-targ2.C
  4a6ffc2b771825c108a429a4faf02bcc  gcc/testsuite/g++.dg/cpp2a/lambda-targ20.C
  e20c87111262a5e61bd6b3d5b3c21beb  gcc/testsuite/g++.dg/cpp2a/lambda-targ21.C
+ cf4951735fc79d21719a1d9d147e601f  gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C
+ cda34ab516f0f3b749efab4ba8f525af  gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C
+ c9c401dee234950a35f6baa7697a4559  gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C
  d948ecca981f7c5de5ca48afc987ea36  gcc/testsuite/g++.dg/cpp2a/lambda-targ2a.C
  096118fef57f992a05319e3b6f8ba6a7  gcc/testsuite/g++.dg/cpp2a/lambda-targ3.C
  21c4749dcabd9a286db03db935f9cd86  gcc/testsuite/g++.dg/cpp2a/lambda-targ4.C
*************** aadce1b09e2a4d220805726af0c7f109  gcc/te
*** 105861,105866 ****
--- 105866,105872 ----
  7a5b7a18d621b5e1b9d04b73e259ddd4  gcc/testsuite/gfortran.dg/pr104849.f90
  35a7804825dacf412e34e3f973b467f1  gcc/testsuite/gfortran.dg/pr104908.f90
  a5bb6d9b844f014490dab5e87b60244c  gcc/testsuite/gfortran.dg/pr105152.f90
+ 472e7c3181a65bf922fc24aa4a286685  gcc/testsuite/gfortran.dg/pr105168.f90
  ff052278fd65d5823600af4550f5eae7  gcc/testsuite/gfortran.dg/pr105205.f90
  22283af469347d85bd1fe4dae42939a3  gcc/testsuite/gfortran.dg/pr105230.f90
  0d13bd4f2344022f31050b761cea6e41  gcc/testsuite/gfortran.dg/pr105361.f90
*************** c409953e60b511d0f73cda8df16bc1dc  gcc/te
*** 105972,105977 ****
--- 105978,105984 ----
  d8b2b1281d8bcf0eb181e2643ffb6265  gcc/testsuite/gfortran.dg/pr117820.f90
  f12b0640f8ed3bdc0c826763af5ffd1f  gcc/testsuite/gfortran.dg/pr117901.f90
  dcb4fe6d926f672dd118a4a8ec9b6625  gcc/testsuite/gfortran.dg/pr118640.f90
+ 86ed735b34078d76c3e00aee11815c32  gcc/testsuite/gfortran.dg/pr119273.f90
  21d662c2190def3714e2bdeb64b9dce2  gcc/testsuite/gfortran.dg/pr119502.f90
  bfe9a93946cdb6a9b66dd7249e65330d  gcc/testsuite/gfortran.dg/pr119836_1.f90
  1c099fc2477935ea4f6d6e213b94eb2f  gcc/testsuite/gfortran.dg/pr119836_2.f90
*************** fd7937a762c5733d3533bba0d9b05a6e  gcc/te
*** 106461,106466 ****
--- 106468,106474 ----
  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
*************** cbda4ce37f542285b521cda175f88ae8  gcc/te
*** 111649,111656 ****
--- 111657,111668 ----
  dd47c03d89ee0f8e064407c83ce2bd8a  gcc/testsuite/gnat.dg/generic_inst16_pkg.ads
  f2632b1a519e9ef9974bffe9e87a626f  gcc/testsuite/gnat.dg/generic_inst16_proc.adb
  8cff9a48dce3a564b54a3bb3f90eb85d  gcc/testsuite/gnat.dg/generic_inst16_proc.ads
+ b5916e544f6608c5d56d2cd4f13b5ffc  gcc/testsuite/gnat.dg/generic_inst19.adb
  bfa8ba450e641250f8eccf95997dd260  gcc/testsuite/gnat.dg/generic_inst2.adb
  063cf5c93b1a85bf617a62be0da63bdb  gcc/testsuite/gnat.dg/generic_inst2.ads
+ 9754b7078322105e191275ecef261619  gcc/testsuite/gnat.dg/generic_inst20-sub.adb
+ 0681c30c9efac88d67f6a19fb0a024db  gcc/testsuite/gnat.dg/generic_inst20.adb
+ c840150e814260285b976366030a3845  gcc/testsuite/gnat.dg/generic_inst20.ads
  2faefd507420ceafdccad8d472e66202  gcc/testsuite/gnat.dg/generic_inst2_c.ads
  1997a63f7761d0c3157019f91d059346  gcc/testsuite/gnat.dg/generic_inst3.adb
  ec082cac4cc6410759efb287bf918b11  gcc/testsuite/gnat.dg/generic_inst3_kafka_lib-topic.ads
*************** e046a9c4874579f81515c4b3d9106b63  gcc/tr
*** 118187,118193 ****
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
  e14744b5f500a4c01221207e438177b8  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
! 268ce19b4711a0dfeb13d74f87ad5127  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
  90ca59c0844cd326f35f9cae17ec174b  gcc/tree-into-ssa.cc
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
--- 118199,118205 ----
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
  e14744b5f500a4c01221207e438177b8  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
! 1c79d0364197f21840c57e2fd4b7c4b3  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
  90ca59c0844cd326f35f9cae17ec174b  gcc/tree-into-ssa.cc
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
diff -Nrcpad gcc-15-20260321/gcc/ChangeLog gcc-15-20260328/gcc/ChangeLog
*** gcc-15-20260321/gcc/ChangeLog	Sat Mar 21 22:32:05 2026
--- gcc-15-20260328/gcc/ChangeLog	Sat Mar 28 22:32:06 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-03-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-03-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/124627
+ 	* tree-inline.cc (copy_debug_stmts): Only copy debug
+ 	stmts that are still in the IL.
+ 
  2026-03-17  Alice Carlotti  <alice.carlotti@arm.com>
  
  	* config/aarch64/aarch64-sve2.md (@aarch64_pred_revd<mode>):
diff -Nrcpad gcc-15-20260321/gcc/DATESTAMP gcc-15-20260328/gcc/DATESTAMP
*** gcc-15-20260321/gcc/DATESTAMP	Sat Mar 21 22:32:05 2026
--- gcc-15-20260328/gcc/DATESTAMP	Sat Mar 28 22:32:06 2026
***************
*** 1 ****
! 20260321
--- 1 ----
! 20260328
diff -Nrcpad gcc-15-20260321/gcc/ada/ChangeLog gcc-15-20260328/gcc/ada/ChangeLog
*** gcc-15-20260321/gcc/ada/ChangeLog	Sat Mar 21 22:32:05 2026
--- gcc-15-20260328/gcc/ada/ChangeLog	Sat Mar 28 22:32:06 2026
***************
*** 1,3 ****
--- 1,14 ----
+ 2026-03-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124607
+ 	* sem_elab.adb (Has_Body.Find_Body): Fix thinko.
+ 
+ 2026-03-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124606
+ 	* sem_ch12.adb (Find_Actual_Type): Rename formal parameter.
+ 	(Map_Formal_Package_Entities): Do not register base types.
+ 
  2026-03-14  Matthias Klose  <doko@gcc.gnu.org>
  
  	PR ada/107475
diff -Nrcpad gcc-15-20260321/gcc/ada/sem_ch12.adb gcc-15-20260328/gcc/ada/sem_ch12.adb
*** gcc-15-20260321/gcc/ada/sem_ch12.adb	Sat Mar 21 22:32:06 2026
--- gcc-15-20260328/gcc/ada/sem_ch12.adb	Sat Mar 28 22:32:06 2026
*************** package body Sem_Ch12 is
*** 637,649 ****
     --  of freeze nodes for instance bodies that may depend on other instances.
  
     function Find_Actual_Type
!      (Typ       : Entity_Id;
!       Gen_Type  : Entity_Id) return Entity_Id;
     --  When validating the actual types of a child instance, check whether
     --  the formal is a formal type of the parent unit, and retrieve the current
     --  actual for it. Typ is the entity in the analyzed formal type declaration
     --  (component or index type of an array type, or designated type of an
!    --  access formal) and Gen_Type is the enclosing analyzed formal array
     --  or access type. The desired actual may be a formal of a parent, or may
     --  be declared in a formal package of a parent. In both cases it is a
     --  generic actual type because it appears within a visible instance.
--- 637,649 ----
     --  of freeze nodes for instance bodies that may depend on other instances.
  
     function Find_Actual_Type
!      (Typ     : Entity_Id;
!       Gen_Typ : Entity_Id) return Entity_Id;
     --  When validating the actual types of a child instance, check whether
     --  the formal is a formal type of the parent unit, and retrieve the current
     --  actual for it. Typ is the entity in the analyzed formal type declaration
     --  (component or index type of an array type, or designated type of an
!    --  access formal) and Gen_Typ is the enclosing analyzed formal array
     --  or access type. The desired actual may be a formal of a parent, or may
     --  be declared in a formal package of a parent. In both cases it is a
     --  generic actual type because it appears within a visible instance.
*************** package body Sem_Ch12 is
*** 9858,9867 ****
     ----------------------
  
     function Find_Actual_Type
!      (Typ      : Entity_Id;
!       Gen_Type : Entity_Id) return Entity_Id
     is
!       Gen_Scope : constant Entity_Id := Scope (Gen_Type);
        T         : Entity_Id;
  
     begin
--- 9858,9867 ----
     ----------------------
  
     function Find_Actual_Type
!      (Typ     : Entity_Id;
!       Gen_Typ : Entity_Id) return Entity_Id
     is
!       Gen_Scope : constant Entity_Id := Scope (Gen_Typ);
        T         : Entity_Id;
  
     begin
*************** package body Sem_Ch12 is
*** 15869,15878 ****
                    Set_Instance_Of (Class_Wide_Type (E1), Class_Wide_Type (E2));
                 end if;
  
-                if Is_Constrained (E1) then
-                   Set_Instance_Of (Base_Type (E1), Base_Type (E2));
-                end if;
- 
                 if Ekind (E1) = E_Package and then No (Renamed_Entity (E1)) then
                    Map_Formal_Package_Entities (E1, E2);
                 end if;
--- 15869,15874 ----
diff -Nrcpad gcc-15-20260321/gcc/ada/sem_elab.adb gcc-15-20260328/gcc/ada/sem_elab.adb
*** gcc-15-20260321/gcc/ada/sem_elab.adb	Sat Mar 21 22:32:06 2026
--- gcc-15-20260328/gcc/ada/sem_elab.adb	Sat Mar 28 22:32:06 2026
*************** package body Sem_Elab is
*** 9892,9898 ****
                 --  The corresponding subunit was previously loaded
  
                 if Present (Lib_Unit) then
!                   return Lib_Unit;
  
                 --  Otherwise attempt to load the corresponding subunit
  
--- 9892,9898 ----
                 --  The corresponding subunit was previously loaded
  
                 if Present (Lib_Unit) then
!                   return Proper_Body (Unit (Lib_Unit));
  
                 --  Otherwise attempt to load the corresponding subunit
  
diff -Nrcpad gcc-15-20260321/gcc/c-family/c-cppbuiltin.cc gcc-15-20260328/gcc/c-family/c-cppbuiltin.cc
*** gcc-15-20260321/gcc/c-family/c-cppbuiltin.cc	Sat Mar 21 22:32:06 2026
--- gcc-15-20260328/gcc/c-family/c-cppbuiltin.cc	Sat Mar 28 22:32:06 2026
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1060,1066 ****
  	  cpp_define (pfile, "__cpp_conditional_explicit=201806L");
  	  cpp_define (pfile, "__cpp_consteval=202211L");
  	  cpp_define (pfile, "__cpp_constinit=201907L");
! 	  cpp_define (pfile, "__cpp_deduction_guides=201907L");
  	  cpp_define (pfile, "__cpp_nontype_template_args=201911L");
  	  cpp_define (pfile, "__cpp_nontype_template_parameter_class=201806L");
  	  cpp_define (pfile, "__cpp_impl_destroying_delete=201806L");
--- 1060,1067 ----
  	  cpp_define (pfile, "__cpp_conditional_explicit=201806L");
  	  cpp_define (pfile, "__cpp_consteval=202211L");
  	  cpp_define (pfile, "__cpp_constinit=201907L");
! 	  if (cxx_dialect <= cxx20)
! 	    cpp_define (pfile, "__cpp_deduction_guides=201907L");
  	  cpp_define (pfile, "__cpp_nontype_template_args=201911L");
  	  cpp_define (pfile, "__cpp_nontype_template_parameter_class=201806L");
  	  cpp_define (pfile, "__cpp_impl_destroying_delete=201806L");
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1077,1082 ****
--- 1078,1084 ----
  	  cpp_define (pfile, "__cpp_auto_cast=202110L");
  	  if (cxx_dialect <= cxx23)
  	    cpp_define (pfile, "__cpp_constexpr=202211L");
+ 	  cpp_define (pfile, "__cpp_deduction_guides=202207L");
  	  cpp_define (pfile, "__cpp_multidimensional_subscript=202211L");
  	  cpp_define (pfile, "__cpp_named_character_escapes=202207L");
  	  cpp_define (pfile, "__cpp_static_call_operator=202207L");
diff -Nrcpad gcc-15-20260321/gcc/cp/constraint.cc gcc-15-20260328/gcc/cp/constraint.cc
*** gcc-15-20260321/gcc/cp/constraint.cc	Sat Mar 21 22:32:06 2026
--- gcc-15-20260328/gcc/cp/constraint.cc	Sat Mar 28 22:32:07 2026
*************** struct GTY((for_user)) sat_entry
*** 1895,1900 ****
--- 1895,1904 ----
       the first time.  */
    tree result;
  
+   /* For a !ATOMIC_CONSTR_MAP_INSTANTIATED_P atom, this conveniently points to
+      the entry for the corresponding atom after instantiating its mapping.  */
+   sat_entry *inst_entry;
+ 
    /* The value of input_location when satisfaction of ATOM+ARGS was first
       performed.  */
    location_t location;
*************** satisfaction_cache
*** 2054,2059 ****
--- 2058,2064 ----
        entry->atom = atom;
        entry->args = args;
        entry->result = NULL_TREE;
+       entry->inst_entry = nullptr;
        entry->location = input_location;
        entry->ftc_begin = entry->ftc_end = -1;
        entry->diagnose_instability = false;
*************** satisfaction_cache::get ()
*** 2093,2102 ****
      {
        /* If we get here, it means satisfaction is self-recursive.  */
        gcc_checking_assert (!entry->result || seen_error ());
        if (info.noisy ())
! 	error_at (EXPR_LOCATION (ATOMIC_CONSTR_EXPR (entry->atom)),
  		  "satisfaction of atomic constraint %qE depends on itself",
! 		  entry->atom);
        return error_mark_node;
      }
  
--- 2098,2109 ----
      {
        /* If we get here, it means satisfaction is self-recursive.  */
        gcc_checking_assert (!entry->result || seen_error ());
+       /* Prefer printing the instantiated mapping.  */
+       tree atom = entry->inst_entry ? entry->inst_entry->atom : entry->atom;
        if (info.noisy ())
! 	error_at (EXPR_LOCATION (ATOMIC_CONSTR_EXPR (atom)),
  		  "satisfaction of atomic constraint %qE depends on itself",
! 		  atom);
        return error_mark_node;
      }
  
*************** satisfy_atom (tree t, tree args, sat_inf
*** 2416,2421 ****
--- 2423,2430 ----
    gcc_assert (!ATOMIC_CONSTR_MAP_INSTANTIATED_P (t));
    ATOMIC_CONSTR_MAP_INSTANTIATED_P (t) = true;
    satisfaction_cache inst_cache (t, /*args=*/NULL_TREE, info);
+   if (cache.entry && inst_cache.entry)
+     cache.entry->inst_entry = inst_cache.entry;
    if (tree r = inst_cache.get ())
      {
        cache.entry->location = inst_cache.entry->location;
diff -Nrcpad gcc-15-20260321/gcc/cp/pt.cc gcc-15-20260328/gcc/cp/pt.cc
*** gcc-15-20260321/gcc/cp/pt.cc	Sat Mar 21 22:32:06 2026
--- gcc-15-20260328/gcc/cp/pt.cc	Sat Mar 28 22:32:07 2026
*************** build_extra_args (tree pattern, tree arg
*** 13738,13744 ****
    /* Make a copy of the extra arguments so that they won't get changed
       out from under us.  */
    tree extra = preserve_args (copy_template_args (args), /*cow_p=*/false);
!   if (complain & tf_partial)
      /* Remember whether this is a partial substitution.  */
      TREE_STATIC (extra) = true;
    if (local_specializations)
--- 13738,13744 ----
    /* Make a copy of the extra arguments so that they won't get changed
       out from under us.  */
    tree extra = preserve_args (copy_template_args (args), /*cow_p=*/false);
!   if ((complain & tf_partial) || TREE_STATIC (args))
      /* Remember whether this is a partial substitution.  */
      TREE_STATIC (extra) = true;
    if (local_specializations)
*************** add_extra_args (tree extra, tree args, t
*** 13777,13787 ****
        extra = TREE_VALUE (extra);
      }
    if (TREE_STATIC (extra))
!     /* This is a partial substitution into e.g. a requires-expr or lambda-expr
!        inside a default template argument; we expect 'extra' to be a full set
!        of template arguments for the template context, so it suffices to just
!        substitute into them.  */
!     args = tsubst_template_args (extra, args, complain, in_decl);
    else
      args = add_to_template_args (extra, args);
    return args;
--- 13777,13793 ----
        extra = TREE_VALUE (extra);
      }
    if (TREE_STATIC (extra))
!     {
!       /* This is a partial substitution into e.g. a requires-expr or lambda-expr
! 	 inside a default template argument; we expect 'extra' to be a full set
! 	 of template arguments for the template context, so it suffices to just
! 	 substitute into them.  */
!       args = tsubst_template_args (extra, args, complain, in_decl);
!       if (processing_template_decl)
! 	/* A templated substitution into a partial substitution is still a
! 	   partial substitution.  */
! 	TREE_STATIC (args) = true;
!     }
    else
      args = add_to_template_args (extra, args);
    return args;
*************** tsubst_lambda_expr (tree t, tree args, t
*** 20214,20220 ****
  
    args = add_extra_args (LAMBDA_EXPR_EXTRA_ARGS (t), args, complain, in_decl);
    if (processing_template_decl
!       && (!in_template_context || (complain & tf_partial)))
      {
        /* Defer templated substitution into a lambda-expr if we lost the
  	 necessary template context.  This may happen for a lambda-expr
--- 20220,20227 ----
  
    args = add_extra_args (LAMBDA_EXPR_EXTRA_ARGS (t), args, complain, in_decl);
    if (processing_template_decl
!       && (!in_template_context || (complain & tf_partial)
! 	  || LAMBDA_EXPR_EXTRA_ARGS (t)))
      {
        /* Defer templated substitution into a lambda-expr if we lost the
  	 necessary template context.  This may happen for a lambda-expr
*************** tsubst_lambda_expr (tree t, tree args, t
*** 20222,20228 ****
  
  	 Defer dependent substitution as well so that we don't prematurely
  	 lower the level of a deduced return type or any other auto or
! 	 template parameter belonging to the lambda.  */
        t = copy_node (t);
        LAMBDA_EXPR_EXTRA_ARGS (t) = NULL_TREE;
        LAMBDA_EXPR_EXTRA_ARGS (t) = build_extra_args (t, args, complain);
--- 20229,20239 ----
  
  	 Defer dependent substitution as well so that we don't prematurely
  	 lower the level of a deduced return type or any other auto or
! 	 template parameter belonging to the lambda.
! 
! 	 Finally, if a substitution into this lambda was previously
! 	 deferred, keep deferring until the final (non-templated)
! 	 substitution.  */
        t = copy_node (t);
        LAMBDA_EXPR_EXTRA_ARGS (t) = NULL_TREE;
        LAMBDA_EXPR_EXTRA_ARGS (t) = build_extra_args (t, args, complain);
*************** alias_ctad_tweaks (tree tmpl, tree uguid
*** 31039,31045 ****
  			  (INNERMOST_TEMPLATE_PARMS (fullatparms)));
      }
  
!   tsubst_flags_t complain = tf_none;
    tree aguides = NULL_TREE;
    tree atparms = INNERMOST_TEMPLATE_PARMS (fullatparms);
    unsigned natparms = TREE_VEC_LENGTH (atparms);
--- 31050,31056 ----
  			  (INNERMOST_TEMPLATE_PARMS (fullatparms)));
      }
  
!   tsubst_flags_t complain = tf_partial;
    tree aguides = NULL_TREE;
    tree atparms = INNERMOST_TEMPLATE_PARMS (fullatparms);
    unsigned natparms = TREE_VEC_LENGTH (atparms);
*************** alias_ctad_tweaks (tree tmpl, tree uguid
*** 31152,31158 ****
  	  if (ci)
  	    {
  	      if (tree outer_targs = outer_template_args (f))
! 		ci = tsubst_constraint_info (ci, outer_targs, complain, in_decl);
  	      ci = tsubst_constraint_info (ci, targs, complain, in_decl);
  	    }
  	  if (ci == error_mark_node)
--- 31163,31170 ----
  	  if (ci)
  	    {
  	      if (tree outer_targs = outer_template_args (f))
! 		ci = tsubst_constraint_info (ci, outer_targs,
! 					     complain & ~tf_partial, in_decl);
  	      ci = tsubst_constraint_info (ci, targs, complain, in_decl);
  	    }
  	  if (ci == error_mark_node)
diff -Nrcpad gcc-15-20260321/gcc/fortran/ChangeLog gcc-15-20260328/gcc/fortran/ChangeLog
*** gcc-15-20260321/gcc/fortran/ChangeLog	Sat Mar 21 22:32:07 2026
--- gcc-15-20260328/gcc/fortran/ChangeLog	Sat Mar 28 22:32:07 2026
***************
*** 1,3 ****
--- 1,27 ----
+ 2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/119273
+ 	* trans-array.cc (expr_contains_impure_fcn): New function.
+ 	(gfc_expr_contains_impure_fcn): New function calling above fcn.
+ 	(array_bound_check_elemental): Add indexse pre-block to se pre.
+ 	Warn if the index expression contains a function not declared
+ 	to be pure.
+ 
+ 2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-16  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/105168
+ 	* trans-expr.cc (gfc_conv_class_to_class): If the argument expr
+ 	is not a class type use the parent tree if that is a class.
+ 	(gfc_conv_procedure_call): If the argument expression is not a
+ 	variable, shift the bounds to give unity lbounds.
+ 	(gfc_trans_arrayfunc_assign): Return NULL_TREE instead of NULL.
+ 
  2026-03-20  Mikael Morin  <morin-mikael@orange.fr>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260321/gcc/fortran/match.cc gcc-15-20260328/gcc/fortran/match.cc
*** gcc-15-20260321/gcc/fortran/match.cc	Sat Mar 21 22:32:07 2026
--- gcc-15-20260328/gcc/fortran/match.cc	Sat Mar 28 22:32:07 2026
*************** gfc_match_select_type (void)
*** 7044,7055 ****
    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");
--- 7044,7060 ----
    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-15-20260321/gcc/fortran/trans-array.cc gcc-15-20260328/gcc/fortran/trans-array.cc
*** gcc-15-20260321/gcc/fortran/trans-array.cc	Sat Mar 21 22:32:07 2026
--- gcc-15-20260328/gcc/fortran/trans-array.cc	Sat Mar 28 22:32:07 2026
*************** trans_array_bound_check (gfc_se * se, gf
*** 3781,3786 ****
--- 3781,3809 ----
  }
  
  
+ /* Helper functions to detect impure functions in an expression.  */
+ 
+ static const char *impure_name = NULL;
+ static bool
+ expr_contains_impure_fcn (gfc_expr *e, gfc_symbol* sym ATTRIBUTE_UNUSED,
+ 	 int* g ATTRIBUTE_UNUSED)
+ {
+   if (e && e->expr_type == EXPR_FUNCTION
+       && !gfc_pure_function (e, &impure_name)
+       && !gfc_implicit_pure_function (e))
+     return true;
+ 
+   return false;
+ }
+ 
+ static bool
+ gfc_expr_contains_impure_fcn (gfc_expr *e)
+ {
+   impure_name = NULL;
+   return gfc_traverse_expr (e, NULL, &expr_contains_impure_fcn, 0);
+ }
+ 
+ 
  /* Generate code for bounds checking for elemental dimensions.  */
  
  static void
*************** array_bound_check_elemental (gfc_se * se
*** 3803,3812 ****
--- 3826,3842 ----
  		{
  		  if (ar->dimen_type[dim] == DIMEN_ELEMENT)
  		    {
+ 		      if (gfc_expr_contains_impure_fcn (ar->start[dim]))
+ 			gfc_warning_now (0, "Bounds checking of the elemental "
+ 					 "index at %L will cause two calls to "
+ 					 "%qs, which is not declared to be "
+ 					 "PURE or is not implicitly pure.",
+ 					 &ar->start[dim]->where, impure_name);
  		      gfc_se indexse;
  		      gfc_init_se (&indexse, NULL);
  		      gfc_conv_expr_type (&indexse, ar->start[dim],
  					  gfc_array_index_type);
+ 		      gfc_add_block_to_block (&se->pre, &indexse.pre);
  		      trans_array_bound_check (se, ss, indexse.expr, dim,
  					       &ar->where,
  					       ar->as->type != AS_ASSUMED_SIZE
diff -Nrcpad gcc-15-20260321/gcc/fortran/trans-expr.cc gcc-15-20260328/gcc/fortran/trans-expr.cc
*** gcc-15-20260321/gcc/fortran/trans-expr.cc	Sat Mar 21 22:32:07 2026
--- gcc-15-20260328/gcc/fortran/trans-expr.cc	Sat Mar 28 22:32:07 2026
*************** gfc_conv_class_to_class (gfc_se *parmse,
*** 1251,1263 ****
    stmtblock_t block;
    bool full_array = false;
  
!   /* Class transformational function results are the data field of a class
!      temporary and so the class expression can be obtained directly.  */
!   if (e->expr_type == EXPR_FUNCTION
!       && e->value.function.isym
!       && e->value.function.isym->transformational
        && TREE_CODE (parmse->expr) == COMPONENT_REF
!       && !GFC_CLASS_TYPE_P (TREE_TYPE (parmse->expr)))
      {
        parmse->expr = TREE_OPERAND (parmse->expr, 0);
        if (!VAR_P (parmse->expr))
--- 1251,1262 ----
    stmtblock_t block;
    bool full_array = false;
  
!   /* If this is the data field of a class temporary, the class expression
!      can be obtained and returned directly.  */
!   if (e->expr_type != EXPR_VARIABLE
        && TREE_CODE (parmse->expr) == COMPONENT_REF
!       && !GFC_CLASS_TYPE_P (TREE_TYPE (parmse->expr))
!       && GFC_CLASS_TYPE_P (TREE_TYPE (TREE_OPERAND (parmse->expr, 0))))
      {
        parmse->expr = TREE_OPERAND (parmse->expr, 0);
        if (!VAR_P (parmse->expr))
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 7605,7610 ****
--- 7604,7619 ----
  	      gfc_init_block (&class_se.pre);
  	      gfc_init_block (&class_se.post);
  
+ 	      if (e->expr_type != EXPR_VARIABLE)
+ 		{
+ 		  int n;
+ 		  /* Set the bounds and offset correctly.  */
+ 		  for (n = 0; n < e->rank; n++)
+ 		    gfc_conv_shift_descriptor_lbound (&class_se.pre,
+ 						      class_se.expr,
+ 						      n, gfc_index_one_node);
+ 		}
+ 
  	      /* The conversion does not repackage the reference to a class
  	         array - _data descriptor.  */
  	      gfc_conv_class_to_class (&class_se, e, fsym->ts, false,
*************** gfc_trans_arrayfunc_assign (gfc_expr * e
*** 11955,11962 ****
    gfc_symbol *sym = expr1->symtree->n.sym;
    bool finalizable =  gfc_may_be_finalized (expr1->ts);
  
    if (arrayfunc_assign_needs_temporary (expr1, expr2))
!     return NULL;
  
    /* The frontend doesn't seem to bother filling in expr->symtree for intrinsic
       functions.  */
--- 11964,11976 ----
    gfc_symbol *sym = expr1->symtree->n.sym;
    bool finalizable =  gfc_may_be_finalized (expr1->ts);
  
+   /* If the symbol is host associated and has not been referenced in its name
+      space, it might be lacking a backend_decl and vtable.  */
+   if (sym->backend_decl == NULL_TREE)
+     return NULL_TREE;
+ 
    if (arrayfunc_assign_needs_temporary (expr1, expr2))
!     return NULL_TREE;
  
    /* The frontend doesn't seem to bother filling in expr->symtree for intrinsic
       functions.  */
*************** gfc_trans_arrayfunc_assign (gfc_expr * e
*** 11966,11972 ****
  	      || (comp && comp->attr.dimension)
  	      || (!comp && gfc_return_by_reference (expr2->value.function.esym)
  		  && expr2->value.function.esym->result->attr.dimension)))
!     return NULL;
  
    gfc_init_se (&se, NULL);
    gfc_start_block (&se.pre);
--- 11980,11986 ----
  	      || (comp && comp->attr.dimension)
  	      || (!comp && gfc_return_by_reference (expr2->value.function.esym)
  		  && expr2->value.function.esym->result->attr.dimension)))
!     return NULL_TREE;
  
    gfc_init_se (&se, NULL);
    gfc_start_block (&se.pre);
diff -Nrcpad gcc-15-20260321/gcc/testsuite/ChangeLog gcc-15-20260328/gcc/testsuite/ChangeLog
*** gcc-15-20260321/gcc/testsuite/ChangeLog	Sat Mar 21 22:32:07 2026
--- gcc-15-20260328/gcc/testsuite/ChangeLog	Sat Mar 28 22:32:08 2026
***************
*** 1,3 ****
--- 1,28 ----
+ 2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/119273
+ 	* gfortran.dg/pr119273.f90: New test.
+ 
+ 2026-03-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-16  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/105168
+ 	* gfortran.dg/pr105168.f90: New test.
+ 
+ 2026-03-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/generic_inst20.ads, gnat.dg/generic_inst20.adb: New test.
+ 	* gnat.dg/generic_inst20-sub.adb: New helper.
+ 
+ 2026-03-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/generic_inst19.adb: New test.
+ 
  2026-03-20  Mikael Morin  <morin-mikael@orange.fr>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260321/gcc/testsuite/g++.dg/cpp0x/static_assert18.C gcc-15-20260328/gcc/testsuite/g++.dg/cpp0x/static_assert18.C
*** gcc-15-20260321/gcc/testsuite/g++.dg/cpp0x/static_assert18.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/g++.dg/cpp0x/static_assert18.C	Sat Mar 28 22:32:09 2026
***************
*** 0 ****
--- 1,28 ----
+ // PR c++/124389
+ // { dg-do compile { target c++11 } }
+ 
+ template <typename T> struct Empty {};
+ 
+ template <typename T>
+ constexpr bool test(T) noexcept { return true; }
+ 
+ template <typename T>
+ struct always_true {
+     static constexpr bool value = true;
+     static_assert(test(Empty<T>{}), "BUG");
+ };
+ 
+ template <typename T>
+ struct AAA {
+     template <typename U, bool = always_true<U>::value>
+     AAA(U) {}
+ };
+ 
+ template <int (*U) (AAA<int>)>
+ void test_function() {
+     auto r = U(AAA<int>(1));
+ }
+ 
+ int main() {
+     return 0;
+ }
diff -Nrcpad gcc-15-20260321/gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C gcc-15-20260328/gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C
*** gcc-15-20260321/gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C	Sat Mar 21 22:32:08 2026
--- gcc-15-20260328/gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C	Sat Mar 28 22:32:09 2026
***************
*** 353,360 ****
  
  #ifndef __cpp_deduction_guides
  #  error "__cpp_deduction_guides"
! #elif __cpp_deduction_guides != 201907
! #  error "__cpp_deduction_guides != 201907"
  #endif
  
  #ifndef __cpp_if_constexpr
--- 353,360 ----
  
  #ifndef __cpp_deduction_guides
  #  error "__cpp_deduction_guides"
! #elif __cpp_deduction_guides != 202207
! #  error "__cpp_deduction_guides != 202207"
  #endif
  
  #ifndef __cpp_if_constexpr
diff -Nrcpad gcc-15-20260321/gcc/testsuite/g++.dg/cpp26/feat-cxx26.C gcc-15-20260328/gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
*** gcc-15-20260321/gcc/testsuite/g++.dg/cpp26/feat-cxx26.C	Sat Mar 21 22:32:08 2026
--- gcc-15-20260328/gcc/testsuite/g++.dg/cpp26/feat-cxx26.C	Sat Mar 28 22:32:09 2026
***************
*** 353,360 ****
  
  #ifndef __cpp_deduction_guides
  #  error "__cpp_deduction_guides"
! #elif __cpp_deduction_guides != 201907
! #  error "__cpp_deduction_guides != 201907"
  #endif
  
  #ifndef __cpp_if_constexpr
--- 353,360 ----
  
  #ifndef __cpp_deduction_guides
  #  error "__cpp_deduction_guides"
! #elif __cpp_deduction_guides != 202207
! #  error "__cpp_deduction_guides != 202207"
  #endif
  
  #ifndef __cpp_if_constexpr
diff -Nrcpad gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias26.C gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias26.C
*** gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias26.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias26.C	Sat Mar 28 22:32:09 2026
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/122621
+ // { dg-do compile { target c++20 } }
+ 
+ template <class, class>
+ concept constructible_from = true;
+ 
+ template <class... ElemTs>
+ struct Tuple {
+     template <class... Ts> requires (... && constructible_from<ElemTs, Ts>)
+     Tuple(Ts &&...) {}
+ };
+ 
+ template <class... Us>
+ using A = Tuple<Tuple<Us...>>;
+ 
+ using type = decltype(A{0});
+ using type = Tuple<Tuple<>>;
diff -Nrcpad gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
*** gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C	Sat Mar 21 22:32:08 2026
--- gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C	Sat Mar 28 22:32:09 2026
***************
*** 1,7 ****
  // { dg-do compile { target c++20 } }
  
  template<typename T>
! concept Fooable = requires(T t) { foo(t); }; // { dg-error "depends on itself" }
  
  template<Fooable T>
  void foo(T t) { }
--- 1,8 ----
  // { dg-do compile { target c++20 } }
  
  template<typename T>
! concept Fooable = requires(T t) { foo(t); };
! // { dg-error "T = test::S]' depends on itself" "" { target *-*-* } .-1 }
  
  template<Fooable T>
  void foo(T t) { }
diff -Nrcpad gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C
*** gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C	Sat Mar 21 22:32:08 2026
--- gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C	Sat Mar 28 22:32:09 2026
***************
*** 3,9 ****
  
  struct A { };
  
! template<typename T> concept pipeable = requires(A a, T t) { a | t; }; // { dg-error "depends on itself" }
  
  template<pipeable T> void operator|(A, T);
  
--- 3,10 ----
  
  struct A { };
  
! template<typename T> concept pipeable = requires(A a, T t) { a | t; };
! // { dg-error "with T = int]' depends on itself" "" { target *-*-* } .-1 }
  
  template<pipeable T> void operator|(A, T);
  
diff -Nrcpad gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C
*** gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C	Sat Mar 28 22:32:09 2026
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/123665
+ // { dg-do compile { target c++20 } }
+ 
+ template<class T, class V = decltype([](auto){ return 42; })>
+ struct A { using type = V; };
+ 
+ template<class T>
+ auto f() {
+   return [](auto) {
+     return typename A<T*>::type{}(true);
+   }(0);
+ }
+ 
+ using type = decltype(f<void>());
+ using type = int;
diff -Nrcpad gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C
*** gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C	Sat Mar 28 22:32:09 2026
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/123665
+ // { dg-do compile { target c++20 } }
+ // A more elaborate version of lambda-targ22.C.
+ 
+ template<class T, class U, class V>
+ struct W { };
+ 
+ template<class T, class U,
+ 	 class V = decltype([](auto x){ return W<T, U, decltype(x)>{}; })>
+ struct A { using type = V; };
+ 
+ template<class T>
+ auto f() {
+   return []<typename U>(U) {
+     return typename A<T*, U&>::type{}(true);
+   }(0);
+ }
+ 
+ using type = decltype(f<void>());
+ using type = W<void*, int&, bool>;
diff -Nrcpad gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C
*** gcc-15-20260321/gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C	Sat Mar 28 22:32:09 2026
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/123408
+ // { dg-do compile { target c++20 } }
+ 
+ template <typename> constexpr int zero = 0;
+ template <auto> using int_alias = int;
+ 
+ template <typename Arg>
+ using inner = int_alias<[](auto) { return 0; }((Arg)0)>;
+ 
+ template <typename Arg>
+ constexpr int outer = [](auto) { return zero<inner<Arg>>; }(0);
+ 
+ using type = decltype(outer<int>);
+ using type = const int;
diff -Nrcpad gcc-15-20260321/gcc/testsuite/gfortran.dg/pr105168.f90 gcc-15-20260328/gcc/testsuite/gfortran.dg/pr105168.f90
*** gcc-15-20260321/gcc/testsuite/gfortran.dg/pr105168.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/gfortran.dg/pr105168.f90	Sat Mar 28 22:32:13 2026
***************
*** 0 ****
--- 1,38 ----
+ ! { dg-do run }
+ ! Test fix for PR105168, in which nterface mapping was failing with CLASS 'x'
+ ! and parentheses around the actual argument.
+ !
+ ! Contributed by Gerhard Steinmetz  <gscfq@t-online.de>
+ !
+ module m
+    type t
+       integer :: a
+    contains
+       final :: final_t
+    end type
+    integer :: cntr = 0
+ contains
+    function f(x, factor) result(z)
+       class(t) :: x(:) ! Worked, with or without parentheses if s/CLASS/TYPE/
+       type(t) :: z(2)
+       integer :: factor
+       z = x            ! Seg fault here
+       z%a = factor * z%a
+    end
+    impure elemental subroutine final_t (arg)
+       type (t), intent(in) :: arg
+       cntr = cntr + 1
+    end subroutine
+ end module
+ program p
+    use m
+    class(t), allocatable :: y(:), z(:)
+    y = [t(2),t(4)]
+    allocate (t :: z(2))
+    z = f((y), 1)          ! Failed even with parentheses removed
+    if (any(z%a /= [2,4])) stop 1
+    z = f(y, 2)            ! Failed but now OK
+    if (any (z%a /= [4,8])) stop 2
+    deallocate (y, z)
+    if (cntr /= 16) stop 3 ! 6 for each assignment and 4 for deallocation
+ end
diff -Nrcpad gcc-15-20260321/gcc/testsuite/gfortran.dg/pr119273.f90 gcc-15-20260328/gcc/testsuite/gfortran.dg/pr119273.f90
*** gcc-15-20260321/gcc/testsuite/gfortran.dg/pr119273.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/gfortran.dg/pr119273.f90	Sat Mar 28 22:32:13 2026
***************
*** 0 ****
--- 1,70 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original -fcheck=bounds" }
+ !
+ ! Test the fix forPR119273, which caused false bounds check errors.
+ !
+ ! Contributed by Jingwei Xing  <xingjingwei666@gmail.com>
+ !
+ module test_module
+     type :: test_type_father
+         integer :: val
+     contains
+         procedure :: test_function3
+     end type test_type_father
+ 
+     type, extends(test_type_father) :: test_type_child
+     contains
+         procedure :: test_function1
+     end type test_type_child
+ 
+     integer :: ii
+ 
+     contains
+     function test_function1(a) result(out)
+         class(test_type_child), intent(in) :: a
+         integer :: out
+         ii = a%val  ! Make this function implicitly impure.
+         out = a%val
+     end function
+     pure function test_function2(a) result(out)
+         type(test_type_child), intent(in) :: a
+         integer :: out
+         out = a%val
+     end function
+     pure function test_function3(a) result(out)
+         class(test_type_father), intent(in) :: a
+         integer :: out
+         out = a%val
+     end function
+ end module
+ 
+ program test
+     use test_module
+     implicit none
+     type(test_type_child) :: a
+     type(test_type_father) :: b
+     class(test_type_child), allocatable :: c
+     integer, target :: temp_int(1,1)
+     integer, pointer :: d(:)
+     a%val = 0
+     associate(temp => temp_int(:,a%test_function1() + 1)) ! { dg-warning "is not implicitly pure" }
+     end associate
+     a%val = 1
+     associate(temp => temp_int(:,test_function2(a)))
+     end associate
+     b%val = 1
+     associate(temp => temp_int(:,b%test_function3()))
+     end associate
+     associate(temp => temp_int(:,test_function3(b)))
+     end associate
+     allocate (c, source = a)
+     associate(temp => temp_int(:,c%test_function1())) ! { dg-warning "is not implicitly pure" }
+     end associate
+ 
+ ! Demonstrate that this bug was not specific to the ASSOCIATE statement but,
+ ! rather to it being a pointer assignment, when the selector is a variable.
+     d => temp_int(:,a%test_function1()) ! { dg-warning "is not implicitly pure" }
+ 
+ end program test
+ ! Test for the missing vptr assignments to the class actual temporaries.
+ ! { dg-final { scan-tree-dump-times "class..._vptr =" 8 "original" } }
diff -Nrcpad gcc-15-20260321/gcc/testsuite/gfortran.dg/pr84245.f90 gcc-15-20260328/gcc/testsuite/gfortran.dg/pr84245.f90
*** gcc-15-20260321/gcc/testsuite/gfortran.dg/pr84245.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/gfortran.dg/pr84245.f90	Sat Mar 28 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-15-20260321/gcc/testsuite/gnat.dg/generic_inst19.adb gcc-15-20260328/gcc/testsuite/gnat.dg/generic_inst19.adb
*** gcc-15-20260321/gcc/testsuite/gnat.dg/generic_inst19.adb	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/gnat.dg/generic_inst19.adb	Sat Mar 28 22:32:14 2026
***************
*** 0 ****
--- 1,42 ----
+ -- { dg-do compile }
+ 
+ with Ada.Containers.Vectors;
+ 
+ procedure Generic_Inst19 is
+ 
+    generic
+       type T is private;
+       type Vector_Index is range <>;
+       --  Index and T_Array need to be placed here or T actual unconstrained
+       with package T_Vectors is new Ada.Containers.Vectors (Vector_Index, T);
+       type Index is range <>;
+       type T_Array is array (Index range <>) of T;
+    function To_Array_Generic (Vec : T_Vectors.Vector) return T_Array;
+ 
+    function To_Array_Generic (Vec : T_Vectors.Vector) return T_Array is
+       Result : T_Array (Index'First .. Index'First + Index (Vec.Length) - 1);
+       I      : Index := Index'First;
+    begin
+       for X of Vec loop
+          Result (I) := X;
+          I := I + 1;
+       end loop;
+       return Result;
+    end To_Array_Generic;
+ 
+    type Probability is new Float range 0.0 .. 1.0;
+ 
+    package Probability_Vectors is new Ada.Containers.Vectors
+       (Index_Type => Positive, Element_Type => Probability);
+    type Probability_Array is array (Positive range <>) of Probability;
+ 
+    function To_Array is new To_Array_Generic (
+       T            => Probability,
+       Vector_Index => Positive,
+       T_Vectors    => Probability_Vectors,
+       Index  => Positive,
+       T_Array      => Probability_Array);
+ 
+ begin
+    null;
+ end;
diff -Nrcpad gcc-15-20260321/gcc/testsuite/gnat.dg/generic_inst20-sub.adb gcc-15-20260328/gcc/testsuite/gnat.dg/generic_inst20-sub.adb
*** gcc-15-20260321/gcc/testsuite/gnat.dg/generic_inst20-sub.adb	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/gnat.dg/generic_inst20-sub.adb	Sat Mar 28 22:32:14 2026
***************
*** 0 ****
--- 1,14 ----
+ -- { dg-excess-errors "cannot generate code" }
+ 
+ separate (Generic_Inst20)
+ 
+ package body Sub is
+    function F return Boolean is
+    begin
+       return True;
+    end F;
+    generic
+    package G is
+    end G;
+    package I is new G;
+ end Sub;
diff -Nrcpad gcc-15-20260321/gcc/testsuite/gnat.dg/generic_inst20.adb gcc-15-20260328/gcc/testsuite/gnat.dg/generic_inst20.adb
*** gcc-15-20260321/gcc/testsuite/gnat.dg/generic_inst20.adb	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/gnat.dg/generic_inst20.adb	Sat Mar 28 22:32:14 2026
***************
*** 0 ****
--- 1,5 ----
+ -- { dg-do compile }
+ 
+ package body Generic_Inst20 is
+    package body Sub is separate;
+ end Generic_Inst20;
diff -Nrcpad gcc-15-20260321/gcc/testsuite/gnat.dg/generic_inst20.ads gcc-15-20260328/gcc/testsuite/gnat.dg/generic_inst20.ads
*** gcc-15-20260321/gcc/testsuite/gnat.dg/generic_inst20.ads	Thu Jan  1 00:00:00 1970
--- gcc-15-20260328/gcc/testsuite/gnat.dg/generic_inst20.ads	Sat Mar 28 22:32:14 2026
***************
*** 0 ****
--- 1,6 ----
+ package Generic_Inst20 is
+    pragma Elaborate_Body;
+    package Sub is
+       function F return Boolean;
+    end Sub;
+ end Generic_Inst20;
diff -Nrcpad gcc-15-20260321/gcc/tree-inline.cc gcc-15-20260328/gcc/tree-inline.cc
*** gcc-15-20260321/gcc/tree-inline.cc	Sat Mar 21 22:32:15 2026
--- gcc-15-20260328/gcc/tree-inline.cc	Sat Mar 28 22:32:14 2026
*************** copy_debug_stmts (copy_body_data *id)
*** 3347,3353 ****
      return;
  
    for (gdebug *stmt : id->debug_stmts)
!     copy_debug_stmt (stmt, id);
  
    id->debug_stmts.release ();
  }
--- 3347,3355 ----
      return;
  
    for (gdebug *stmt : id->debug_stmts)
!     /* But avoid re-processing debug stmts that have been elided.  */
!     if (gimple_bb (stmt))
!       copy_debug_stmt (stmt, id);
  
    id->debug_stmts.release ();
  }
