diff -Nrcpad gcc-16-20260523/LAST_UPDATED gcc-16-20260530/LAST_UPDATED
*** gcc-16-20260523/LAST_UPDATED	Sat May 23 22:32:18 2026
--- gcc-16-20260530/LAST_UPDATED	Sat May 30 22:32:18 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-16 revision c8ea9199ba0a65eb591557632f86a249e3a3f117
--- 1 ----
! Obtained from git: releases/gcc-16 revision 759b60830e3c3ac85a3484be3e94647ead268239
diff -Nrcpad gcc-16-20260523/MD5SUMS gcc-16-20260530/MD5SUMS
*** gcc-16-20260523/MD5SUMS	Sat May 23 22:32:23 2026
--- gcc-16-20260530/MD5SUMS	Sat May 30 22:32:23 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20260523.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20260530.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
*** 28,34 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 5c2b1dc1b036b873a13ce307af5b63e2  LAST_UPDATED
  935427ff8c5edd363349721844f7ba49  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
--- 28,34 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 63a4636e9e9b210f508a34f5f5b66baa  LAST_UPDATED
  935427ff8c5edd363349721844f7ba49  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 530,536 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! e347afce8162bd3756db9e3215a3283e  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 530,536 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 4b675a5c9bdef5a2dfea9cb2e5028529  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 568,574 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 1afe5c0ba72435c56a1a0773aa60a465  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 568,574 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 19a779481c1db9007a38e5d0b0da1b82  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/RE
*** 580,586 ****
  240f413bc297147f87eb799b32d54104  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 0ae35c123881310df727e8d70afe2a81  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 580,586 ----
  240f413bc297147f87eb799b32d54104  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! f279913855779cb4cb1e15d091de048f  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** a82184f30accc8ed33746fffe377a4ed  gcc/ad
*** 628,634 ****
  a5f9ea1ee979426b1e19ed469160cf3e  gcc/ada/alloc.ads
  2ed8264ae6d3e6183c070864af1debcc  gcc/ada/argv-lynxos178-raven-cert.c
  16e8e9e10379bd7278f9d06791ed6efb  gcc/ada/argv.c
! b493ca76414651276373327aca25f7c4  gcc/ada/aspects.adb
  eeb798e81047bb42f573a704eb1077de  gcc/ada/aspects.ads
  6e1b6f3ca6da5c24f2b9c3e6637a1dbb  gcc/ada/atree.adb
  fd46d0d4940b9fd7cf5c96d9a66ed70a  gcc/ada/atree.ads
--- 628,634 ----
  a5f9ea1ee979426b1e19ed469160cf3e  gcc/ada/alloc.ads
  2ed8264ae6d3e6183c070864af1debcc  gcc/ada/argv-lynxos178-raven-cert.c
  16e8e9e10379bd7278f9d06791ed6efb  gcc/ada/argv.c
! 242f0f8e8fab3b3e0a9709998f39d504  gcc/ada/aspects.adb
  eeb798e81047bb42f573a704eb1077de  gcc/ada/aspects.ads
  6e1b6f3ca6da5c24f2b9c3e6637a1dbb  gcc/ada/atree.adb
  fd46d0d4940b9fd7cf5c96d9a66ed70a  gcc/ada/atree.ads
*************** b3a5bb5354c2c4c1961b72fcee81f353  gcc/ad
*** 686,692 ****
  944994f4a64b41fee9f6c266a4bfcadf  gcc/ada/cstand.ads
  d5f5c3f440277272f5cc21f968a43588  gcc/ada/cstreams.c
  1b1d07fd9c1cbe3c9065636585ec2034  gcc/ada/ctrl_c.c
! f6b1d0a04a54bfc7c0d6b1a7001bc763  gcc/ada/debug.adb
  bc28c5c733c954c4dadb6e046d5d77cf  gcc/ada/debug.ads
  91acc2d4bbb0a9ded0450945658cfcc8  gcc/ada/debug_a.adb
  8b28af55ba26dac0275b8a7fc8e0389b  gcc/ada/debug_a.ads
--- 686,692 ----
  944994f4a64b41fee9f6c266a4bfcadf  gcc/ada/cstand.ads
  d5f5c3f440277272f5cc21f968a43588  gcc/ada/cstreams.c
  1b1d07fd9c1cbe3c9065636585ec2034  gcc/ada/ctrl_c.c
! f8d42e9d4dd662634359f8dab475b93a  gcc/ada/debug.adb
  bc28c5c733c954c4dadb6e046d5d77cf  gcc/ada/debug.ads
  91acc2d4bbb0a9ded0450945658cfcc8  gcc/ada/debug_a.adb
  8b28af55ba26dac0275b8a7fc8e0389b  gcc/ada/debug_a.ads
*************** a012e0cb5df366014b5a4988036a509a  gcc/ad
*** 695,707 ****
  7559c05099cde820bf8bebbceabccc04  gcc/ada/doc/gnat_rm.rst
  5bf95a83da0a709f6bdf91751e65e01f  gcc/ada/doc/gnat_rm/about_this_guide.rst
  95f36013115a0d2964f52a340712b135  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! e7ba72bcb5b6e279eac294bfd2d9c998  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  d18255d01b647c97e7cf2cbd3225f90d  gcc/ada/doc/gnat_rm/implementation_advice.rst
  4f7bb8fec58a615cfdd25754812dbe70  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  6a1c79967060865c8310697a857de11b  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
  841d2d7d08c02898708fc688f180e10f  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
  7521a9c7898f9cdc3b74c7df8d21d2c2  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
! 9358d124a08bdf6e1b8f83a0b72d062f  gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
--- 695,707 ----
  7559c05099cde820bf8bebbceabccc04  gcc/ada/doc/gnat_rm.rst
  5bf95a83da0a709f6bdf91751e65e01f  gcc/ada/doc/gnat_rm/about_this_guide.rst
  95f36013115a0d2964f52a340712b135  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 6b211f53a635ef6a704891326ba3b978  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  d18255d01b647c97e7cf2cbd3225f90d  gcc/ada/doc/gnat_rm/implementation_advice.rst
  4f7bb8fec58a615cfdd25754812dbe70  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  6a1c79967060865c8310697a857de11b  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
  841d2d7d08c02898708fc688f180e10f  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
  7521a9c7898f9cdc3b74c7df8d21d2c2  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
! f325ea14b0aae274cec66926227a9f24  gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
*************** de678cadfde8bce5aa2e2f73f408ad76  gcc/ad
*** 715,721 ****
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  505b4be5ad4479a4bd295e927f9e2d14  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 447681f4a0cab6704e2bee5681bd8b39  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2bd1b4bce35f627e35f3316337a622f2  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  56a5718b224a18464cc8f770c1288a14  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  6f289cabdb2ee5e2e1818f135c23020e  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
--- 715,721 ----
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  505b4be5ad4479a4bd295e927f9e2d14  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 9f094e2fa438ee40d46a53adf3b8d467  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2bd1b4bce35f627e35f3316337a622f2  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  56a5718b224a18464cc8f770c1288a14  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  6f289cabdb2ee5e2e1818f135c23020e  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
*************** fabb943ae5026300821049a63f358453  gcc/ad
*** 761,771 ****
  3dc31e56d392ba3da0e312527adcd953  gcc/ada/eval_fat.adb
  3a42a1f58a3aff7741ec916dfc1d9882  gcc/ada/eval_fat.ads
  adb49f37416fce62d5759f9b4c733fe6  gcc/ada/exit.c
! 06d488853d68e0f0a67a4bd755cdb6e4  gcc/ada/exp_aggr.adb
  8d6933ec0ee945c50b4e8c114b1221b6  gcc/ada/exp_aggr.ads
  045a2ef4e4932ea2c0b17910db37af46  gcc/ada/exp_atag.adb
  2a027dfad5944cc346ee7c94c022d302  gcc/ada/exp_atag.ads
! 5d68882641f26f3c6c75a393e2cc283f  gcc/ada/exp_attr.adb
  4b748ed1db282b666860ed488c4ff28d  gcc/ada/exp_attr.ads
  cda4ccedf4fc1e7d7dbe6864ee5bf8ad  gcc/ada/exp_cg.adb
  a188d43ef2eb5780d4b7f98731302640  gcc/ada/exp_cg.ads
--- 761,771 ----
  3dc31e56d392ba3da0e312527adcd953  gcc/ada/eval_fat.adb
  3a42a1f58a3aff7741ec916dfc1d9882  gcc/ada/eval_fat.ads
  adb49f37416fce62d5759f9b4c733fe6  gcc/ada/exit.c
! 3dfa27fbeea249124e1bd384e1ec62af  gcc/ada/exp_aggr.adb
  8d6933ec0ee945c50b4e8c114b1221b6  gcc/ada/exp_aggr.ads
  045a2ef4e4932ea2c0b17910db37af46  gcc/ada/exp_atag.adb
  2a027dfad5944cc346ee7c94c022d302  gcc/ada/exp_atag.ads
! 960fe586ad67141e254fc4a0d3cf2bf3  gcc/ada/exp_attr.adb
  4b748ed1db282b666860ed488c4ff28d  gcc/ada/exp_attr.ads
  cda4ccedf4fc1e7d7dbe6864ee5bf8ad  gcc/ada/exp_cg.adb
  a188d43ef2eb5780d4b7f98731302640  gcc/ada/exp_cg.ads
*************** a84d191dad3158db125ec48c285b9667  gcc/ad
*** 778,794 ****
  371cc0c543b5d2502352758eb7b73e8f  gcc/ada/exp_ch13.ads
  ace7dfdd53834601d964efef9557e0f4  gcc/ada/exp_ch2.adb
  aec86f795b370fca1379a25f37651fdf  gcc/ada/exp_ch2.ads
! bfede432412bc3d7ee70e14cbda137e3  gcc/ada/exp_ch3.adb
  52ca7939bd6b0e1da9e20d902813d109  gcc/ada/exp_ch3.ads
! 33412d9e019d4b8a749c92c7da8ddb5a  gcc/ada/exp_ch4.adb
  2d9cf8b148fdc7a07edde2cf9fbb59f8  gcc/ada/exp_ch4.ads
! 14be4614e917c455830a799b3e214921  gcc/ada/exp_ch5.adb
  962c51f1fad8395553b843179ba06b79  gcc/ada/exp_ch5.ads
! 4cabe50d62190b625d0ed8d83c7d428d  gcc/ada/exp_ch6.adb
  757670a84e9c01219a219c4bc68ea62b  gcc/ada/exp_ch6.ads
  b8cb3b82f2a68b211875181376e0de4b  gcc/ada/exp_ch7.adb
  0328c88aa1134f7af3891cb24a0b27c8  gcc/ada/exp_ch7.ads
! 122a5cde9816de02c7f37bcdf2de229f  gcc/ada/exp_ch8.adb
  9955bf7551ef5f537f9031c59fb73db8  gcc/ada/exp_ch8.ads
  f084400d4a12cabf8267bc395b762fa2  gcc/ada/exp_ch9.adb
  d5bed31d915c80f427741d1175ba335a  gcc/ada/exp_ch9.ads
--- 778,794 ----
  371cc0c543b5d2502352758eb7b73e8f  gcc/ada/exp_ch13.ads
  ace7dfdd53834601d964efef9557e0f4  gcc/ada/exp_ch2.adb
  aec86f795b370fca1379a25f37651fdf  gcc/ada/exp_ch2.ads
! d8a5243affdc193f524c6db3adb03b56  gcc/ada/exp_ch3.adb
  52ca7939bd6b0e1da9e20d902813d109  gcc/ada/exp_ch3.ads
! 12497d505c426b4ae8594019796769b4  gcc/ada/exp_ch4.adb
  2d9cf8b148fdc7a07edde2cf9fbb59f8  gcc/ada/exp_ch4.ads
! d581ce062c9cecbaa3f56a950f8620a3  gcc/ada/exp_ch5.adb
  962c51f1fad8395553b843179ba06b79  gcc/ada/exp_ch5.ads
! 331aa207fe1aab21bcfc71de473764cc  gcc/ada/exp_ch6.adb
  757670a84e9c01219a219c4bc68ea62b  gcc/ada/exp_ch6.ads
  b8cb3b82f2a68b211875181376e0de4b  gcc/ada/exp_ch7.adb
  0328c88aa1134f7af3891cb24a0b27c8  gcc/ada/exp_ch7.ads
! 8801787aa12c6cff916c7659aa60ec45  gcc/ada/exp_ch8.adb
  9955bf7551ef5f537f9031c59fb73db8  gcc/ada/exp_ch8.ads
  f084400d4a12cabf8267bc395b762fa2  gcc/ada/exp_ch9.adb
  d5bed31d915c80f427741d1175ba335a  gcc/ada/exp_ch9.ads
*************** d5bed31d915c80f427741d1175ba335a  gcc/ad
*** 796,808 ****
  8be63e29d5aeaf0a16ff7b4dc746e1a4  gcc/ada/exp_code.ads
  e837e02763d429cb690f4aa38c5c1da2  gcc/ada/exp_dbug.adb
  4aedf059cc4ede0c0c0d01a19e99d07d  gcc/ada/exp_dbug.ads
! 53b442df6e416c67f7f0dfa7a033850e  gcc/ada/exp_disp.adb
  4a4f2db1ce2689b32aa03195644a6fd0  gcc/ada/exp_disp.ads
  4a4b9d7a9f03004c8a15a64b412515aa  gcc/ada/exp_dist.adb
  ce990621220fd6489426c319eb93cec4  gcc/ada/exp_dist.ads
  23f9e2de53a292fd54bac01c5bf3a794  gcc/ada/exp_fixd.adb
  a68a87f80c2a7f799dba65186bf644df  gcc/ada/exp_fixd.ads
! 69449d2ad4a142d9ecb0cfa80cd80ce1  gcc/ada/exp_imgv.adb
  34fc29154c68ffe19f5d9e5cb9f5be59  gcc/ada/exp_imgv.ads
  ee534f378918dac3d346695bf4bcf9a2  gcc/ada/exp_intr.adb
  98fffa8af9ba75158eeab9097a7838a3  gcc/ada/exp_intr.ads
--- 796,808 ----
  8be63e29d5aeaf0a16ff7b4dc746e1a4  gcc/ada/exp_code.ads
  e837e02763d429cb690f4aa38c5c1da2  gcc/ada/exp_dbug.adb
  4aedf059cc4ede0c0c0d01a19e99d07d  gcc/ada/exp_dbug.ads
! 08060d82895d9c888322c2927d8008ca  gcc/ada/exp_disp.adb
  4a4f2db1ce2689b32aa03195644a6fd0  gcc/ada/exp_disp.ads
  4a4b9d7a9f03004c8a15a64b412515aa  gcc/ada/exp_dist.adb
  ce990621220fd6489426c319eb93cec4  gcc/ada/exp_dist.ads
  23f9e2de53a292fd54bac01c5bf3a794  gcc/ada/exp_fixd.adb
  a68a87f80c2a7f799dba65186bf644df  gcc/ada/exp_fixd.ads
! 32bbb097d76f08c3ed350190e00dd089  gcc/ada/exp_imgv.adb
  34fc29154c68ffe19f5d9e5cb9f5be59  gcc/ada/exp_imgv.ads
  ee534f378918dac3d346695bf4bcf9a2  gcc/ada/exp_intr.adb
  98fffa8af9ba75158eeab9097a7838a3  gcc/ada/exp_intr.ads
*************** ee534f378918dac3d346695bf4bcf9a2  gcc/ad
*** 810,817 ****
  4a687a32bfa3449e71b6e5eb050497b1  gcc/ada/exp_pakd.ads
  67c749c20d685df7377ae13924346b73  gcc/ada/exp_prag.adb
  72a4e0a905bb5ed9604683cb4aa8f9dc  gcc/ada/exp_prag.ads
! 3c4cc16c00054e6b71e1305c3a35b2a6  gcc/ada/exp_put_image.adb
! 809ac6dc6426a2989a6eafd2dc0dc837  gcc/ada/exp_put_image.ads
  113ca62ed0736ce6088da621227c3d67  gcc/ada/exp_sel.adb
  8573714354a5f8299d234cb15aec7bee  gcc/ada/exp_sel.ads
  98efb9e91a5f81d72a65db5d6bdd4abf  gcc/ada/exp_smem.adb
--- 810,817 ----
  4a687a32bfa3449e71b6e5eb050497b1  gcc/ada/exp_pakd.ads
  67c749c20d685df7377ae13924346b73  gcc/ada/exp_prag.adb
  72a4e0a905bb5ed9604683cb4aa8f9dc  gcc/ada/exp_prag.ads
! 3f65e52e596c1692509696f8ef338356  gcc/ada/exp_put_image.adb
! 028bfd0d0d27a819302654aaa7ed8786  gcc/ada/exp_put_image.ads
  113ca62ed0736ce6088da621227c3d67  gcc/ada/exp_sel.adb
  8573714354a5f8299d234cb15aec7bee  gcc/ada/exp_sel.ads
  98efb9e91a5f81d72a65db5d6bdd4abf  gcc/ada/exp_smem.adb
*************** abc4adbcfcc5aec49e61dfe787dc8274  gcc/ad
*** 824,831 ****
  3372f4711ba5978adb3c0b71a6836ba0  gcc/ada/exp_tss.ads
  ef2035bfbeb4e058c824980c2f6d7214  gcc/ada/exp_unst.adb
  a787a30ba8699ad9caabf0ddeb2bd425  gcc/ada/exp_unst.ads
! b40cc3f4d2fdc98f9425cd424f7d890c  gcc/ada/exp_util.adb
! fb64e3eab9418e4f42c1e395d64be8ca  gcc/ada/exp_util.ads
  da86db6b7d964bec3beb0995f66c2c49  gcc/ada/expander.adb
  ca321269d17552e01fce3be99a0a3452  gcc/ada/expander.ads
  da666491b0d26eef3aa08ba31f054d9b  gcc/ada/expect.c
--- 824,831 ----
  3372f4711ba5978adb3c0b71a6836ba0  gcc/ada/exp_tss.ads
  ef2035bfbeb4e058c824980c2f6d7214  gcc/ada/exp_unst.adb
  a787a30ba8699ad9caabf0ddeb2bd425  gcc/ada/exp_unst.ads
! 03fc206b907fe7d236a5bf50fdf8e502  gcc/ada/exp_util.adb
! f41958e93fe85586b92929ed89ca5b24  gcc/ada/exp_util.ads
  da86db6b7d964bec3beb0995f66c2c49  gcc/ada/expander.adb
  ca321269d17552e01fce3be99a0a3452  gcc/ada/expander.ads
  da666491b0d26eef3aa08ba31f054d9b  gcc/ada/expect.c
*************** ec10f477ad1d3dba6056061ede6ff919  gcc/ad
*** 864,872 ****
  c10afb784d01db96d3e446e834044dec  gcc/ada/gcc-interface/trans.cc
  a42ca7a70ecb27ca641d7e22801cdc56  gcc/ada/gcc-interface/utils.cc
  5aa7aec67976f00fbfd0e838865ac865  gcc/ada/gcc-interface/utils2.cc
! d5e790917c3bb105f9c562fc40e9bdce  gcc/ada/gen_il-fields.ads
! 5555ee464387437fa4bdf68050ab6962  gcc/ada/gen_il-gen-gen_entities.adb
! 3f142f6080a505c4b3aa2889c4d68af4  gcc/ada/gen_il-gen-gen_nodes.adb
  7091bf4b26ab64fe3d88bd3feb79b94f  gcc/ada/gen_il-gen.adb
  ce980375550bc71a64634141fbbcf330  gcc/ada/gen_il-gen.ads
  69c0994bcc9dc3ff0eb519a710c796f4  gcc/ada/gen_il-internals.adb
--- 864,872 ----
  c10afb784d01db96d3e446e834044dec  gcc/ada/gcc-interface/trans.cc
  a42ca7a70ecb27ca641d7e22801cdc56  gcc/ada/gcc-interface/utils.cc
  5aa7aec67976f00fbfd0e838865ac865  gcc/ada/gcc-interface/utils2.cc
! a16cd448be7ed758165e986a68fe2678  gcc/ada/gen_il-fields.ads
! 52478a5d862abbf16fda5d88b4959880  gcc/ada/gen_il-gen-gen_entities.adb
! ffe5d0127a5168f5277a256d917b6fcd  gcc/ada/gen_il-gen-gen_nodes.adb
  7091bf4b26ab64fe3d88bd3feb79b94f  gcc/ada/gen_il-gen.adb
  ce980375550bc71a64634141fbbcf330  gcc/ada/gen_il-gen.ads
  69c0994bcc9dc3ff0eb519a710c796f4  gcc/ada/gen_il-internals.adb
*************** ad85f63240402108dad631ff5461b181  gcc/ad
*** 888,895 ****
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  635312af629edb6333cf662c55ae7a0b  gcc/ada/gnat_cuda.adb
  a930631c7c5fdabf12e2010079214e38  gcc/ada/gnat_cuda.ads
! cac3c1f4e7aea07828ef9ab3b693e73d  gcc/ada/gnat_rm.texi
! a671ca633499ae987f1b1ed9d1c3e93b  gcc/ada/gnat_ugn.texi
  97a151562fa533cd370413751bd18564  gcc/ada/gnatbind.adb
  cf407dc104ddb2d242f8c79a9b8166ec  gcc/ada/gnatbind.ads
  8a451200e3c6277c33c04b60c1c63fff  gcc/ada/gnatchop.adb
--- 888,895 ----
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  635312af629edb6333cf662c55ae7a0b  gcc/ada/gnat_cuda.adb
  a930631c7c5fdabf12e2010079214e38  gcc/ada/gnat_cuda.ads
! 5c4d0371216fe681b5d62fc02d40ee6c  gcc/ada/gnat_rm.texi
! 79d2d1e418e3c9ef24a64988b30ed468  gcc/ada/gnat_ugn.texi
  97a151562fa533cd370413751bd18564  gcc/ada/gnatbind.adb
  cf407dc104ddb2d242f8c79a9b8166ec  gcc/ada/gnatbind.ads
  8a451200e3c6277c33c04b60c1c63fff  gcc/ada/gnatchop.adb
*************** e990b94c2deda2688532716fbe75bb0e  gcc/ad
*** 923,929 ****
  2fa42d36d02ccd2dd6e280ff1b9e6959  gcc/ada/indepsw-gnu.adb
  eb3b6f429c0b93cc8e9788ea4ac4e8c6  gcc/ada/indepsw.adb
  18250f749f24e01ba1da7cf90a1d60c2  gcc/ada/indepsw.ads
! 57cdf164c35e90e76488988290c08dd4  gcc/ada/init.c
  bc9cb67c7c529d85eae0a62d8155e31e  gcc/ada/initialize.c
  049ac897ccad3e1d7f7b2e41108ceef2  gcc/ada/inline.adb
  09c0c05a4b1ccd65d2cb5612e8b023b1  gcc/ada/inline.ads
--- 923,929 ----
  2fa42d36d02ccd2dd6e280ff1b9e6959  gcc/ada/indepsw-gnu.adb
  eb3b6f429c0b93cc8e9788ea4ac4e8c6  gcc/ada/indepsw.adb
  18250f749f24e01ba1da7cf90a1d60c2  gcc/ada/indepsw.ads
! 71737ea29bcce77b1daa30b63a2683bf  gcc/ada/init.c
  bc9cb67c7c529d85eae0a62d8155e31e  gcc/ada/initialize.c
  049ac897ccad3e1d7f7b2e41108ceef2  gcc/ada/inline.adb
  09c0c05a4b1ccd65d2cb5612e8b023b1  gcc/ada/inline.ads
*************** a43b5e59b7f2578cfad9e53b316da308  gcc/ad
*** 1017,1028 ****
  1293cb60db6508120e58d8d808fc1d39  gcc/ada/libgnarl/s-inmaop__dummy.adb
  ef07cef96a47e675b6dd5d87b0d5d30f  gcc/ada/libgnarl/s-inmaop__hwint.adb
  16742e83e1952925d19b625c0e9b8423  gcc/ada/libgnarl/s-inmaop__posix.adb
! 74d42bad42a9d25f93cff765f42862fc  gcc/ada/libgnarl/s-interr.adb
  7c224202424b916e0ee3f211e7e87be5  gcc/ada/libgnarl/s-interr.ads
  44b3e58bc48f8c624ddb7da9140a2225  gcc/ada/libgnarl/s-interr__dummy.adb
  424b0ef46d0d8b7cc90bd59bbdb4dd45  gcc/ada/libgnarl/s-interr__hwint.adb
  4c67137e1df7d6430a9cb9af8610cd18  gcc/ada/libgnarl/s-interr__sigaction.adb
! 2ec2a2666f00ed09d67c294957a2fdb1  gcc/ada/libgnarl/s-interr__vxworks.adb
  73611963744f5a78642317f1bb6d712f  gcc/ada/libgnarl/s-interr__vxworks.ads
  f76aee35d1eda9f7df9d001cc88b359e  gcc/ada/libgnarl/s-intman.ads
  a3c0b418087792cab0b2d56121e2937d  gcc/ada/libgnarl/s-intman__android.adb
--- 1017,1028 ----
  1293cb60db6508120e58d8d808fc1d39  gcc/ada/libgnarl/s-inmaop__dummy.adb
  ef07cef96a47e675b6dd5d87b0d5d30f  gcc/ada/libgnarl/s-inmaop__hwint.adb
  16742e83e1952925d19b625c0e9b8423  gcc/ada/libgnarl/s-inmaop__posix.adb
! f4b6b152226e9de766a05c8c98a3b5e4  gcc/ada/libgnarl/s-interr.adb
  7c224202424b916e0ee3f211e7e87be5  gcc/ada/libgnarl/s-interr.ads
  44b3e58bc48f8c624ddb7da9140a2225  gcc/ada/libgnarl/s-interr__dummy.adb
  424b0ef46d0d8b7cc90bd59bbdb4dd45  gcc/ada/libgnarl/s-interr__hwint.adb
  4c67137e1df7d6430a9cb9af8610cd18  gcc/ada/libgnarl/s-interr__sigaction.adb
! ab2ae1b04dabcd29b7ca28241b22f13b  gcc/ada/libgnarl/s-interr__vxworks.adb
  73611963744f5a78642317f1bb6d712f  gcc/ada/libgnarl/s-interr__vxworks.ads
  f76aee35d1eda9f7df9d001cc88b359e  gcc/ada/libgnarl/s-intman.ads
  a3c0b418087792cab0b2d56121e2937d  gcc/ada/libgnarl/s-intman__android.adb
*************** a5cfae1886dcbdd942ae5aa10b8914ff  gcc/ad
*** 2843,2854 ****
  bf52dfdb3b0ad7b46acd6b6ec476611c  gcc/ada/output.ads
  82337cdc30606c45b018aa10b40c4e2b  gcc/ada/par-ch10.adb
  69a2e7867057d08861c69638310a6144  gcc/ada/par-ch11.adb
! eb0cb04a54c4829789b4a54cd6449eca  gcc/ada/par-ch12.adb
  9f715bca934e45ee4db7bbd2858d54e1  gcc/ada/par-ch13.adb
  fc57966056b0077a0fadd4887212d6bd  gcc/ada/par-ch2.adb
  da1dbb86ed500fa6e4badb241ef8a926  gcc/ada/par-ch3.adb
! 3d7a9541cc9e49bc7e5aad21b231884e  gcc/ada/par-ch4.adb
! b9ba09d47d66ea5e62e54b25d2fa55c0  gcc/ada/par-ch5.adb
  b7e65797088047c28c917ce1878a68ba  gcc/ada/par-ch6.adb
  7487b885c869951f3e91c38a96428135  gcc/ada/par-ch7.adb
  8088c92c25aa6f8d485fa42b1326be8d  gcc/ada/par-ch8.adb
--- 2843,2854 ----
  bf52dfdb3b0ad7b46acd6b6ec476611c  gcc/ada/output.ads
  82337cdc30606c45b018aa10b40c4e2b  gcc/ada/par-ch10.adb
  69a2e7867057d08861c69638310a6144  gcc/ada/par-ch11.adb
! ba0e112ae1cbefadd145a4e7c06f1642  gcc/ada/par-ch12.adb
  9f715bca934e45ee4db7bbd2858d54e1  gcc/ada/par-ch13.adb
  fc57966056b0077a0fadd4887212d6bd  gcc/ada/par-ch2.adb
  da1dbb86ed500fa6e4badb241ef8a926  gcc/ada/par-ch3.adb
! 823a139fbf38c88a1f78f400fd49ca0d  gcc/ada/par-ch4.adb
! aef5a010a5223fe272ea08bce4ad4cbb  gcc/ada/par-ch5.adb
  b7e65797088047c28c917ce1878a68ba  gcc/ada/par-ch6.adb
  7487b885c869951f3e91c38a96428135  gcc/ada/par-ch7.adb
  8088c92c25aa6f8d485fa42b1326be8d  gcc/ada/par-ch8.adb
*************** b7e65797088047c28c917ce1878a68ba  gcc/ad
*** 2859,2866 ****
  4abaf19deae7557fed7e768a03ef332a  gcc/ada/par-prag.adb
  4f0a80ae4dcac15e0ae11b61ce2a351a  gcc/ada/par-sync.adb
  fd52cb07f6816c9f989d767432353844  gcc/ada/par-tchk.adb
! e73cb687a825aa262ff287fa10d63c6c  gcc/ada/par-util.adb
! 612e12877944fb92fce18a6179c0cb61  gcc/ada/par.adb
  dec03d93846b2cf0f195f599e6ebe085  gcc/ada/par.ads
  397a8c4eaae8d55eb7e4accd4d09745f  gcc/ada/par_sco.adb
  a2fb0d304cec6a62b7a0096915bbacc4  gcc/ada/par_sco.ads
--- 2859,2866 ----
  4abaf19deae7557fed7e768a03ef332a  gcc/ada/par-prag.adb
  4f0a80ae4dcac15e0ae11b61ce2a351a  gcc/ada/par-sync.adb
  fd52cb07f6816c9f989d767432353844  gcc/ada/par-tchk.adb
! 5e69c1f7ea9b79f9aee0eabafc5df492  gcc/ada/par-util.adb
! dd47008af47510af2c70609954d01947  gcc/ada/par.adb
  dec03d93846b2cf0f195f599e6ebe085  gcc/ada/par.ads
  397a8c4eaae8d55eb7e4accd4d09745f  gcc/ada/par_sco.adb
  a2fb0d304cec6a62b7a0096915bbacc4  gcc/ada/par_sco.ads
*************** f2d824e32fdafcf6970c1e1e66ea59f8  gcc/ad
*** 2891,2897 ****
  8ce11053ebe1171460f848ee6f75ea0c  gcc/ada/s-oscons-tmplt.c
  406f1efe8850ae590a95138ba96f5a4b  gcc/ada/s-pack.adb.tmpl
  9ff36d27b4298968fe26c8a47cea6af9  gcc/ada/s-pack.ads.tmpl
! a63ed6cfe4621cd6e6f6b9d24b131b14  gcc/ada/scans.adb
  284d0d60b7f2cbb0b1be4474dedc4e77  gcc/ada/scans.ads
  43ac9be952de8b94c98155863ae2ff32  gcc/ada/scil_ll.adb
  d56309c9945ec31c9444dce0bcfa5831  gcc/ada/scil_ll.ads
--- 2891,2897 ----
  8ce11053ebe1171460f848ee6f75ea0c  gcc/ada/s-oscons-tmplt.c
  406f1efe8850ae590a95138ba96f5a4b  gcc/ada/s-pack.adb.tmpl
  9ff36d27b4298968fe26c8a47cea6af9  gcc/ada/s-pack.ads.tmpl
! 004a918fefab29641f36351c38752c5f  gcc/ada/scans.adb
  284d0d60b7f2cbb0b1be4474dedc4e77  gcc/ada/scans.ads
  43ac9be952de8b94c98155863ae2ff32  gcc/ada/scil_ll.adb
  d56309c9945ec31c9444dce0bcfa5831  gcc/ada/scil_ll.ads
*************** fdcaec81316658a2b692951117ab8bd6  gcc/ad
*** 2905,2913 ****
  5ee6198a5e5ee0a555cdbe65fd9ea6f4  gcc/ada/seh_init.c
  b97a33153fe52398767059622469c244  gcc/ada/sem.adb
  89b33a894fb8d623c05d39f93b53e357  gcc/ada/sem.ads
! d2b7c923d6a9fd2c767ef33609c17c61  gcc/ada/sem_aggr.adb
  d5ddab4fcf440bf2f49a9a190fd12829  gcc/ada/sem_aggr.ads
! f35af60fafb60665171b35d5f6381fcb  gcc/ada/sem_attr.adb
  f5a25d26b815f5d376e2873f3ab69359  gcc/ada/sem_attr.ads
  5a8f21b4d2e896659887ea4fb7fce369  gcc/ada/sem_aux.adb
  416380c1ed0ef199b48f1e73080b5db3  gcc/ada/sem_aux.ads
--- 2905,2913 ----
  5ee6198a5e5ee0a555cdbe65fd9ea6f4  gcc/ada/seh_init.c
  b97a33153fe52398767059622469c244  gcc/ada/sem.adb
  89b33a894fb8d623c05d39f93b53e357  gcc/ada/sem.ads
! 4829571ce4047ba742e576ced875e69e  gcc/ada/sem_aggr.adb
  d5ddab4fcf440bf2f49a9a190fd12829  gcc/ada/sem_aggr.ads
! c71b42cbd6935db122d304274bdb8834  gcc/ada/sem_attr.adb
  f5a25d26b815f5d376e2873f3ab69359  gcc/ada/sem_attr.ads
  5a8f21b4d2e896659887ea4fb7fce369  gcc/ada/sem_aux.adb
  416380c1ed0ef199b48f1e73080b5db3  gcc/ada/sem_aux.ads
*************** e3dc2d270994bba222e70ec02479ac37  gcc/ad
*** 2921,2948 ****
  7efb6a0f371113d8b55b421ee56dd1dd  gcc/ada/sem_ch11.ads
  fa75822e620d43991064e909af7fde66  gcc/ada/sem_ch12.adb
  2622dbf1c1774a89ada3cba34f1da316  gcc/ada/sem_ch12.ads
! d77ca7623d00d99f722ffa0a2c4f1308  gcc/ada/sem_ch13.adb
  2da037307178ba05a1a24b52d1b3115e  gcc/ada/sem_ch13.ads
  260948dd8c7af25b5acaa288032c9327  gcc/ada/sem_ch2.adb
  ea86a0345845800d7aaf07f22bb4bf6c  gcc/ada/sem_ch2.ads
! 2581e282d3a002fe974f151f2bdb68e9  gcc/ada/sem_ch3.adb
  2d8f83bc46638356bc311ccd50015b1f  gcc/ada/sem_ch3.ads
! 672b3db8fa759ee2be5ded5752f2a743  gcc/ada/sem_ch4.adb
  fdd750bd30c3186d912dfed4717a2c0c  gcc/ada/sem_ch4.ads
! 53bfaf0bb212d68185c312cb45d910d3  gcc/ada/sem_ch5.adb
! d3937c73217b5f3ef2540a47e52cbf4a  gcc/ada/sem_ch5.ads
! 5bbd8a73962dff2109bc375d2e1999c0  gcc/ada/sem_ch6.adb
  9ac8c4c57213097618cdb7c0b7b4f47b  gcc/ada/sem_ch6.ads
  6c05670fbd82229849d311d294644670  gcc/ada/sem_ch7.adb
  fb1c349ef07024975dc745e7e7908a34  gcc/ada/sem_ch7.ads
! 381e134a3e123f88cef08be7a83e237e  gcc/ada/sem_ch8.adb
  5bcf24e9f3725dd07ba44097469a5101  gcc/ada/sem_ch8.ads
  0659b247bb1cacdb068574b879a6fd15  gcc/ada/sem_ch9.adb
  11764389473d404a17921f767d1eadd4  gcc/ada/sem_ch9.ads
  f3bd7a2465fe64a8cce43f75b64830f2  gcc/ada/sem_dim.adb
  620c52688fb31336b46194dd14b591c5  gcc/ada/sem_dim.ads
! 71dcf3e0d603cd4b3c4905d1b10e9273  gcc/ada/sem_disp.adb
! c31ecf34a3e44a39023ff6f3ba409e8d  gcc/ada/sem_disp.ads
  339c1ae3fe9b3e447dd4867c7eb2cc64  gcc/ada/sem_dist.adb
  59a3d1317e6d4dd1fdf74f377c86bb9a  gcc/ada/sem_dist.ads
  4cf55d9cc3b53082a92304a590c17c21  gcc/ada/sem_elab.adb
--- 2921,2948 ----
  7efb6a0f371113d8b55b421ee56dd1dd  gcc/ada/sem_ch11.ads
  fa75822e620d43991064e909af7fde66  gcc/ada/sem_ch12.adb
  2622dbf1c1774a89ada3cba34f1da316  gcc/ada/sem_ch12.ads
! 7f74e0afe4aecc2f3165c6b69079e1e8  gcc/ada/sem_ch13.adb
  2da037307178ba05a1a24b52d1b3115e  gcc/ada/sem_ch13.ads
  260948dd8c7af25b5acaa288032c9327  gcc/ada/sem_ch2.adb
  ea86a0345845800d7aaf07f22bb4bf6c  gcc/ada/sem_ch2.ads
! 1933e77c28f8abc608a5f91cce270ddd  gcc/ada/sem_ch3.adb
  2d8f83bc46638356bc311ccd50015b1f  gcc/ada/sem_ch3.ads
! 2c64d9e534a8e17dabfaa5aa45168f65  gcc/ada/sem_ch4.adb
  fdd750bd30c3186d912dfed4717a2c0c  gcc/ada/sem_ch4.ads
! 80b1376b131f9bf3f1d9ec563f54f621  gcc/ada/sem_ch5.adb
! 0851668baacc82a6125a6cdd3254a804  gcc/ada/sem_ch5.ads
! 6dfa67c31f84f5ef64ab52ae59426bea  gcc/ada/sem_ch6.adb
  9ac8c4c57213097618cdb7c0b7b4f47b  gcc/ada/sem_ch6.ads
  6c05670fbd82229849d311d294644670  gcc/ada/sem_ch7.adb
  fb1c349ef07024975dc745e7e7908a34  gcc/ada/sem_ch7.ads
! e01fa0b512e66e7e2317285a43157cb4  gcc/ada/sem_ch8.adb
  5bcf24e9f3725dd07ba44097469a5101  gcc/ada/sem_ch8.ads
  0659b247bb1cacdb068574b879a6fd15  gcc/ada/sem_ch9.adb
  11764389473d404a17921f767d1eadd4  gcc/ada/sem_ch9.ads
  f3bd7a2465fe64a8cce43f75b64830f2  gcc/ada/sem_dim.adb
  620c52688fb31336b46194dd14b591c5  gcc/ada/sem_dim.ads
! 8be67249bda86e16b87f338c81fe1ba4  gcc/ada/sem_disp.adb
! c561e91cdb7fccdd5ca5feb341e3b60e  gcc/ada/sem_disp.ads
  339c1ae3fe9b3e447dd4867c7eb2cc64  gcc/ada/sem_dist.adb
  59a3d1317e6d4dd1fdf74f377c86bb9a  gcc/ada/sem_dist.ads
  4cf55d9cc3b53082a92304a590c17c21  gcc/ada/sem_elab.adb
*************** eb23a07f1fb62ed39d1053619d51487b  gcc/ad
*** 2955,2963 ****
  01d971c16ae04f83f122ff2b4854e30d  gcc/ada/sem_intr.ads
  60c61925626b00c286ee1c92562b17ef  gcc/ada/sem_mech.adb
  39b96f04803db97ae1f7376d30a0cfec  gcc/ada/sem_mech.ads
! 764f62b9f61374685638654b0eed967b  gcc/ada/sem_prag.adb
  61f67b82bf0abfa83eb7e4927498285c  gcc/ada/sem_prag.ads
! 4b68df0d35e789d1c04da20af1daba86  gcc/ada/sem_res.adb
  e3b9f77c37497d7f7824085d3df8fde8  gcc/ada/sem_res.ads
  4e8a9bc2b398560942d0c08f4017fabb  gcc/ada/sem_scil.adb
  64ae38c93be63a67f143484eba77604b  gcc/ada/sem_scil.ads
--- 2955,2963 ----
  01d971c16ae04f83f122ff2b4854e30d  gcc/ada/sem_intr.ads
  60c61925626b00c286ee1c92562b17ef  gcc/ada/sem_mech.adb
  39b96f04803db97ae1f7376d30a0cfec  gcc/ada/sem_mech.ads
! da4fd90984f6f2859c5c232c8a19ecb8  gcc/ada/sem_prag.adb
  61f67b82bf0abfa83eb7e4927498285c  gcc/ada/sem_prag.ads
! 7bf8e111c72f92f71d79289c7dc6ac1f  gcc/ada/sem_res.adb
  e3b9f77c37497d7f7824085d3df8fde8  gcc/ada/sem_res.ads
  4e8a9bc2b398560942d0c08f4017fabb  gcc/ada/sem_scil.adb
  64ae38c93be63a67f143484eba77604b  gcc/ada/sem_scil.ads
*************** e3b9f77c37497d7f7824085d3df8fde8  gcc/ad
*** 2965,2973 ****
  21afb93e10bb9446fcbf7577bbf39c7f  gcc/ada/sem_smem.ads
  1de99683c6514c34448d2bbc7ddb8856  gcc/ada/sem_type.adb
  65653b347d1d3f800e49cd916a551d1c  gcc/ada/sem_type.ads
! 1a9e149f530a431be68085c531487687  gcc/ada/sem_util.adb
! 736dcd26180244a8e8adc2d6c66249a7  gcc/ada/sem_util.ads
! b16d94872ec070685f3ac84b8967f7fe  gcc/ada/sem_warn.adb
  1952fbda97ea4c6506f452eac9934bb4  gcc/ada/sem_warn.ads
  75ee1e8bae201fd70d666856c4dbb8e5  gcc/ada/set_targ.adb
  9be350008098fd37edd51e4c3977c64d  gcc/ada/set_targ.ads
--- 2965,2973 ----
  21afb93e10bb9446fcbf7577bbf39c7f  gcc/ada/sem_smem.ads
  1de99683c6514c34448d2bbc7ddb8856  gcc/ada/sem_type.adb
  65653b347d1d3f800e49cd916a551d1c  gcc/ada/sem_type.ads
! bd2bcaa31ba7c436fbf1c4e8f54dd33b  gcc/ada/sem_util.adb
! adad4a024c716f84aa20017b45528c30  gcc/ada/sem_util.ads
! c868ac4c94dbfe9518c3488598abecbb  gcc/ada/sem_warn.adb
  1952fbda97ea4c6506f452eac9934bb4  gcc/ada/sem_warn.ads
  75ee1e8bae201fd70d666856c4dbb8e5  gcc/ada/set_targ.adb
  9be350008098fd37edd51e4c3977c64d  gcc/ada/set_targ.ads
*************** c354c16b3d545f16b99be6618073100e  gcc/ad
*** 2986,2992 ****
  080aea4da0993c49dfd80c8789fed307  gcc/ada/sinfo-utils.adb
  34ff18d034a08b0c9d5d6d61fc92d189  gcc/ada/sinfo-utils.ads
  1cfe9bd70a04767965df45d859d8e7c1  gcc/ada/sinfo.adb
! 5bbe80071574112f982dc347a600ebf1  gcc/ada/sinfo.ads
  52e8a9630e4050f9cba2ab037d7a2019  gcc/ada/sinput-c.adb
  5f19ebc3c423ec457c4a3c90b841f631  gcc/ada/sinput-c.ads
  0faf319433a1ed69b9efdbcbdb4eac2c  gcc/ada/sinput-d.adb
--- 2986,2992 ----
  080aea4da0993c49dfd80c8789fed307  gcc/ada/sinfo-utils.adb
  34ff18d034a08b0c9d5d6d61fc92d189  gcc/ada/sinfo-utils.ads
  1cfe9bd70a04767965df45d859d8e7c1  gcc/ada/sinfo.adb
! 6e070c2257559180b599976582356ebc  gcc/ada/sinfo.ads
  52e8a9630e4050f9cba2ab037d7a2019  gcc/ada/sinput-c.adb
  5f19ebc3c423ec457c4a3c90b841f631  gcc/ada/sinput-c.ads
  0faf319433a1ed69b9efdbcbdb4eac2c  gcc/ada/sinput-d.adb
*************** af6b93fe92dc2703693dbc958472e99d  gcc/ad
*** 2994,3002 ****
  8e23df7d0b4776ce8943cbe29ad3629e  gcc/ada/sinput-l.adb
  1f835777da26c9f79fbc56b671e06655  gcc/ada/sinput-l.ads
  4c47a09e0165de090d03fa2396d99a7a  gcc/ada/sinput.adb
! 292ddf1cbc2a6ac391dd238019ba4c3a  gcc/ada/sinput.ads
! caeb82ff1021b90e96fabb959a2c0e53  gcc/ada/snames.adb-tmpl
! 7b511a60ffefbd3bca5585ebfd06c4b8  gcc/ada/snames.ads-tmpl
  0eae6e077005b627eacdbc0d53788ac6  gcc/ada/snames.h-tmpl
  96b1e5efcfe4df7fd150f5a977046c58  gcc/ada/socket.c
  2b5db13cfe242efb9e224cb722660071  gcc/ada/spark_xrefs.adb
--- 2994,3002 ----
  8e23df7d0b4776ce8943cbe29ad3629e  gcc/ada/sinput-l.adb
  1f835777da26c9f79fbc56b671e06655  gcc/ada/sinput-l.ads
  4c47a09e0165de090d03fa2396d99a7a  gcc/ada/sinput.adb
! 29e03402590e97abf9061944873aaacf  gcc/ada/sinput.ads
! 83660dce94bca57b58843b48abc86554  gcc/ada/snames.adb-tmpl
! 03781cb8801f2a2b6c59d097d10df081  gcc/ada/snames.ads-tmpl
  0eae6e077005b627eacdbc0d53788ac6  gcc/ada/snames.h-tmpl
  96b1e5efcfe4df7fd150f5a977046c58  gcc/ada/socket.c
  2b5db13cfe242efb9e224cb722660071  gcc/ada/spark_xrefs.adb
*************** ebcfe6e250e511cc835acc1a5b9d9acc  gcc/ad
*** 3024,3030 ****
  604f9cd7c5002a973423169c487b7672  gcc/ada/switch-m.ads
  4c8a0d7e461a01701b735523abd65cca  gcc/ada/switch.adb
  e8253b4b684c1281f31c431c59801850  gcc/ada/switch.ads
! bb58296bf2013bec7983796244353b38  gcc/ada/sysdep.c
  e661511abb592f89242772c88e81c985  gcc/ada/table.adb
  9980f2609e274e492a4fc7bc7e625779  gcc/ada/table.ads
  f01b6d7a338cac8484ebe76a4d10a29a  gcc/ada/targext.c
--- 3024,3030 ----
  604f9cd7c5002a973423169c487b7672  gcc/ada/switch-m.ads
  4c8a0d7e461a01701b735523abd65cca  gcc/ada/switch.adb
  e8253b4b684c1281f31c431c59801850  gcc/ada/switch.ads
! d1442614152ea4fd296f155c7fa55879  gcc/ada/sysdep.c
  e661511abb592f89242772c88e81c985  gcc/ada/table.adb
  9980f2609e274e492a4fc7bc7e625779  gcc/ada/table.ads
  f01b6d7a338cac8484ebe76a4d10a29a  gcc/ada/targext.c
*************** c058178535c874c3d9f517b5db804691  gcc/co
*** 3549,3555 ****
  99262ad964faab9a1090f68a8b3d6d7a  gcc/config/aarch64/aarch64-netbsd.h
  4ac96a19bb5198741503893e13567775  gcc/config/aarch64/aarch64-option-extensions.def
  2cdaca2f6acccb800d5965b66c5168ce  gcc/config/aarch64/aarch64-opts.h
! c7b072f711fa836ea89000f6f5ae25fe  gcc/config/aarch64/aarch64-passes.def
  533b86c66767379e8735428e530b8ede  gcc/config/aarch64/aarch64-protos.h
  7beff4ec013b184132d7c933faa51208  gcc/config/aarch64/aarch64-sched-dispatch.cc
  b824341b8f6fdb8eb1667425adf63db8  gcc/config/aarch64/aarch64-sched-dispatch.h
--- 3549,3555 ----
  99262ad964faab9a1090f68a8b3d6d7a  gcc/config/aarch64/aarch64-netbsd.h
  4ac96a19bb5198741503893e13567775  gcc/config/aarch64/aarch64-option-extensions.def
  2cdaca2f6acccb800d5965b66c5168ce  gcc/config/aarch64/aarch64-opts.h
! c58a041b3d1a2f2c6c49f13e8ad85fdc  gcc/config/aarch64/aarch64-passes.def
  533b86c66767379e8735428e530b8ede  gcc/config/aarch64/aarch64-protos.h
  7beff4ec013b184132d7c933faa51208  gcc/config/aarch64/aarch64-sched-dispatch.cc
  b824341b8f6fdb8eb1667425adf63db8  gcc/config/aarch64/aarch64-sched-dispatch.h
*************** e219596493ffcd798a48b24b22b5e077  gcc/co
*** 3866,3872 ****
  067e03ec8336d08f1291586eb7825adb  gcc/config/avr/avr-c.cc
  7e576974bac73c35660c3df419ddabf4  gcc/config/avr/avr-devices.cc
  6d6cb0cd00b1f0982b71a547d16c599b  gcc/config/avr/avr-dimode.md
! 7b45e2b91b2febab53b9715951211985  gcc/config/avr/avr-fixed.md
  a003e2850cf677560132fd307ecee01f  gcc/config/avr/avr-log.cc
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
--- 3866,3872 ----
  067e03ec8336d08f1291586eb7825adb  gcc/config/avr/avr-c.cc
  7e576974bac73c35660c3df419ddabf4  gcc/config/avr/avr-devices.cc
  6d6cb0cd00b1f0982b71a547d16c599b  gcc/config/avr/avr-dimode.md
! 309d15c699646343debdbf3a50a93a80  gcc/config/avr/avr-fixed.md
  a003e2850cf677560132fd307ecee01f  gcc/config/avr/avr-log.cc
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
*************** c22e895e5b7e6b98c7223b26982a5d20  gcc/co
*** 4422,4428 ****
  7bfce4f9fdee1dc1db1e668b10d9d8e2  gcc/config/i386/x86-tune-sched-bd.cc
  864e537089cc92c5002cefd76ede977a  gcc/config/i386/x86-tune-sched-core.cc
  67c586fe54bcfe3f719ae50164d063ca  gcc/config/i386/x86-tune-sched.cc
! 44ab9a3e41656609dfe65e4830af6015  gcc/config/i386/x86-tune.def
  75b1f0e8f79cfd04f898a4099aff669d  gcc/config/i386/x86gprintrin.h
  e5335d55cec73bd3270862ccac7a02e8  gcc/config/i386/x86intrin.h
  76f88cf5ac857d392ddb81b244c5b9b0  gcc/config/i386/xm-cygwin.h
--- 4422,4428 ----
  7bfce4f9fdee1dc1db1e668b10d9d8e2  gcc/config/i386/x86-tune-sched-bd.cc
  864e537089cc92c5002cefd76ede977a  gcc/config/i386/x86-tune-sched-core.cc
  67c586fe54bcfe3f719ae50164d063ca  gcc/config/i386/x86-tune-sched.cc
! 8db14dcf55267af67b190ebbf523495c  gcc/config/i386/x86-tune.def
  75b1f0e8f79cfd04f898a4099aff669d  gcc/config/i386/x86gprintrin.h
  e5335d55cec73bd3270862ccac7a02e8  gcc/config/i386/x86intrin.h
  76f88cf5ac857d392ddb81b244c5b9b0  gcc/config/i386/xm-cygwin.h
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5644,5650 ****
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  c10700723a41c720aada0096f369147e  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 152b4b0e58586d5165e69b314ad19690  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5644,5650 ----
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  c10700723a41c720aada0096f369147e  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 1bf2473cf498e253ca3b6cc29cbf044e  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** b98d31c57aa038618db60991b17e0d35  gcc/cp
*** 5734,5740 ****
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
  e597ab171ad27c93ec4d074abe445c67  gcc/cp/parser.cc
  7973a34c47e3d3c580832655a3a5c3c2  gcc/cp/parser.h
! f7e5a9493a576642cb60d912bde8cddc  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
  27b0f8e95aa4e38c0a2947cfd9838b7d  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
--- 5734,5740 ----
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
  e597ab171ad27c93ec4d074abe445c67  gcc/cp/parser.cc
  7973a34c47e3d3c580832655a3a5c3c2  gcc/cp/parser.h
! d582944d53aa3df999e8d938bc4171fe  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
  27b0f8e95aa4e38c0a2947cfd9838b7d  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
*************** ed044462caa5bbab93e33fd297bc5d7c  gcc/cp
*** 5744,5750 ****
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
  2f56cf596fc930fe29fe26279116d012  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! 1e689d5f7a1facc6ce4b51aaa96636aa  gcc/cp/typeck.cc
  40eb09924b1139e6f7994869420c0c98  gcc/cp/typeck2.cc
  12d19e5abc1e436004b8885cde4765f0  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
--- 5744,5750 ----
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
  2f56cf596fc930fe29fe26279116d012  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! df4ddf4dc6c7bba71dd087265ece4ff7  gcc/cp/typeck.cc
  40eb09924b1139e6f7994869420c0c98  gcc/cp/typeck2.cc
  12d19e5abc1e436004b8885cde4765f0  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
*************** f80b38c70a85f9aeae9688b937b028ba  gcc/fi
*** 6269,6275 ****
  50b999b375e3a5a95a002f592e6d4514  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  a0df3d274ac009d203209a191738cec6  gcc/fold-mem-offsets.cc
! 3b6950571e35c98cc504e5c34ee92574  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6269,6275 ----
  50b999b375e3a5a95a002f592e6d4514  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  a0df3d274ac009d203209a191738cec6  gcc/fold-mem-offsets.cc
! 522d4c261e7ff5cff728ab2609c8d4ea  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** a0c40b654df0b5c5213047d26e48e97a  gcc/fo
*** 6362,6368 ****
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
  0d5cf4117521dba2aea9c8fd7ac67888  gcc/fortran/trans-const.h
! 7e1db648698cdafbef4aaf15e5132da7  gcc/fortran/trans-decl.cc
  057e5908d5b9f19a601be2fd5a06273a  gcc/fortran/trans-expr.cc
  1e9019ec9c08335a5b10db9869e2534c  gcc/fortran/trans-intrinsic.cc
  269d2b121570a82898b133a3274071a7  gcc/fortran/trans-io.cc
--- 6362,6368 ----
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
  0d5cf4117521dba2aea9c8fd7ac67888  gcc/fortran/trans-const.h
! 05201347b651067bb9008d360acffc39  gcc/fortran/trans-decl.cc
  057e5908d5b9f19a601be2fd5a06273a  gcc/fortran/trans-expr.cc
  1e9019ec9c08335a5b10db9869e2534c  gcc/fortran/trans-intrinsic.cc
  269d2b121570a82898b133a3274071a7  gcc/fortran/trans-io.cc
*************** f24751f278bee1ac8dc861467d9f96a3  gcc/ta
*** 8724,8730 ****
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 00d5e8dce10e77f5f04b67c8a67a2546  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8724,8730 ----
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 0d6fc801f01836e1f48c9a4c4376e764  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** bcc6c29c87ee411683aa56afca6aea50  gcc/te
*** 35980,35985 ****
--- 35980,35986 ----
  704a289cc183c9c58d161a065dc540b8  gcc/testsuite/g++.dg/other/array5.C
  db68b7a03fb0ede3fec05340bda061e1  gcc/testsuite/g++.dg/other/array6.C
  06234a6c8c1c5a78689f7b10df173a6e  gcc/testsuite/g++.dg/other/array7.C
+ d114dbef8703f9b6a139991f4981e0b6  gcc/testsuite/g++.dg/other/array8.C
  327666cc7728d2edf1a48530ef433c9f  gcc/testsuite/g++.dg/other/assign1.C
  e152b39260fef4a571113f5182edeea0  gcc/testsuite/g++.dg/other/avx2-pr85572-1.C
  dc1cf6dc500d953cbe68a0048105430f  gcc/testsuite/g++.dg/other/big-struct.C
*************** c43e40fe08389dac58e1fabc0937b315  gcc/te
*** 37482,37487 ****
--- 37483,37489 ----
  a3ca02798bae6834626899e3f48626d9  gcc/testsuite/g++.dg/reflect/bases_of3.C
  f31771b6d142554bef46d22e7ebe37ed  gcc/testsuite/g++.dg/reflect/bases_of4.C
  8d37e56fd9c7ad7b03647b9d62cfd01e  gcc/testsuite/g++.dg/reflect/bases_of5.C
+ 3f782c96873e944c8cec5519fe0f53d7  gcc/testsuite/g++.dg/reflect/bases_of6.C
  817512416d8343f0871b4548743aabf7  gcc/testsuite/g++.dg/reflect/bit_cast.C
  118a467750da473b2ad68973e520b6c9  gcc/testsuite/g++.dg/reflect/bit_size_of1.C
  cdfee9c92cd1c39030b9538abaa0bbc0  gcc/testsuite/g++.dg/reflect/bitfield1.C
*************** de81b2d2951773077a5d5e6d9db8a8e4  gcc/te
*** 65028,65033 ****
--- 65030,65036 ----
  ab985bcbd18463ddcc0cb59b8a091e7d  gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c
  71eb14b3ae5faf81c5226dc766d48edd  gcc/testsuite/gcc.dg/tree-ssa/pr122976.c
  fa32f3c662bc31e5bbf4daa360b9c87f  gcc/testsuite/gcc.dg/tree-ssa/pr123372.c
+ d87a1ad6187c06f07e6ee3b7c6352e9e  gcc/testsuite/gcc.dg/tree-ssa/pr124151.c
  0054e44a9d7f98f16363e68bc8142e0f  gcc/testsuite/gcc.dg/tree-ssa/pr124746-1.c
  fff67bd84df25cc9f3265a2fd89436d9  gcc/testsuite/gcc.dg/tree-ssa/pr125259.c
  78e6c5fe63f7305009c8a79840fe20dc  gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
*************** c0921723f41125298bfcb2f99d6e1a7e  gcc/te
*** 71262,71267 ****
--- 71265,71271 ----
  47b39e9eb26f2b282f0147230216746d  gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-5.c
  bb109097afac3e13d316d2b02cb19eb1  gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-6.c
  5fcabd9028a5065372e7966d013aa9c3  gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-7.c
+ 52c124febfc97ef3ec932af9d542cccf  gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c
  18b4be822d23c74967c07303bd28f766  gcc/testsuite/gcc.target/aarch64/narrow_high-intrinsics.c
  c62a8a637de4eb00aef16c6f2aa34f7e  gcc/testsuite/gcc.target/aarch64/narrow_high_combine.c
  3e63ffed4a3fdf8f59d1d0a5a648365c  gcc/testsuite/gcc.target/aarch64/narrow_zero_high_half.c
*************** f0df0c8f4daf66789854622391d700cf  gcc/te
*** 83208,83213 ****
--- 83212,83226 ----
  335e928612eeba541ace98419cfa1588  gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c
  63785ceba6e301ca68abd46c75c8f6a8  gcc/testsuite/gcc.target/avr/torture/pr120423-2.c
  d0438290469e79373f6dd3933d324608  gcc/testsuite/gcc.target/avr/torture/pr122187.c
+ 29f4c964db7ef564a3a000cb063b157c  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c
+ 67193b81ec722633cd4a96c262f212b7  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c
+ 74bee38deb2c7a93221837e40bbfadc7  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c
+ cfa6dc119f8aecd5a863526026a0b850  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c
+ ebbf958a9ec613b0e83f39734d21b008  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c
+ 61f30bb6c17362860da7175576769d9c  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c
+ b5f3dac0a4aa3e456482d4b3162d64b6  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c
+ f5a1361523de0e3faf7dfdd815bbaedf  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c
+ 33205c0601ab01f0a0bb4fcfdc9bd796  gcc/testsuite/gcc.target/avr/torture/pr125409.h
  42a74f28c740c9bd42dab79171f49a39  gcc/testsuite/gcc.target/avr/torture/pr39633.c
  8fb17af722ee890b7fa08b5610cdb80e  gcc/testsuite/gcc.target/avr/torture/pr41885.c
  70b849f57ecf42299230b99b7734dd2d  gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
*************** d6fbab5adc927361e8f7c4b8f3e420d5  gcc/te
*** 112839,112844 ****
--- 112852,112858 ----
  bd6eb17303abbc4e9007d3120de885aa  gcc/testsuite/gfortran.dg/block_end_error_1.f90
  467e3192431dc9f382e940356a5e9e31  gcc/testsuite/gfortran.dg/block_name_1.f90
  eba8a97b0e3415431e3a1eaebb576a73  gcc/testsuite/gfortran.dg/block_name_2.f90
+ 9998799d35b9a9320b7c704ca9929c36  gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90
  d9e1d07ea9cf0a2f95002225bdeea245  gcc/testsuite/gfortran.dg/blockdata_1.f90
  7be718b97b1a8caee5588bdd25d68acf  gcc/testsuite/gfortran.dg/blockdata_10.f90
  7dd308b3ba190467e90bfb36452b2778  gcc/testsuite/gfortran.dg/blockdata_11.f90
*************** c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tr
*** 130993,130999 ****
  1ad5e1ab19c4386e24d5679133ee5502  gcc/tree-profile.cc
  f6e775dc713dd010d4533cdab4dc044f  gcc/tree-scalar-evolution.cc
  0ac41331ad8cbe754ee005d5ef9aff94  gcc/tree-scalar-evolution.h
! 6386c2ac578a3794d245342b702f721e  gcc/tree-sra.cc
  3c8e89a03a1e2e77a99e5b05bb2976ae  gcc/tree-sra.h
  39f64c2e1c6ae742ac610f096aa9e013  gcc/tree-ssa-address.cc
  2cc8f7ab186c793b91875224ed16edc6  gcc/tree-ssa-address.h
--- 131007,131013 ----
  1ad5e1ab19c4386e24d5679133ee5502  gcc/tree-profile.cc
  f6e775dc713dd010d4533cdab4dc044f  gcc/tree-scalar-evolution.cc
  0ac41331ad8cbe754ee005d5ef9aff94  gcc/tree-scalar-evolution.h
! ce9274119122c3cd5ea7c58552f62d21  gcc/tree-sra.cc
  3c8e89a03a1e2e77a99e5b05bb2976ae  gcc/tree-sra.h
  39f64c2e1c6ae742ac610f096aa9e013  gcc/tree-ssa-address.cc
  2cc8f7ab186c793b91875224ed16edc6  gcc/tree-ssa-address.h
*************** a73d560a3ba317c5ad0a7919d87b4b6d  libssp
*** 145848,145854 ****
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 3d657e54955c682ae6f1d336beb7de3a  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 145862,145868 ----
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! f519f1cdc6e815671f8a7680406880a5  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** ea0d67f29f1a73f1ccdade0115646a1c  libstd
*** 147297,147303 ****
  6042ceb95043702de02a8354f2507317  libstdc++-v3/include/std/mutex
  98a3e25011c5fb2383b3824b1c349d43  libstdc++-v3/include/std/numbers
  6a44514a47e24df75405dc1d397afc69  libstdc++-v3/include/std/numeric
! 4c6572052a559e3e5457692a1d0088fe  libstdc++-v3/include/std/optional
  bcf1c0b79e2efd9cd34763d368f40966  libstdc++-v3/include/std/ostream
  e24e6fab84ab94b060b3c31ebc39b264  libstdc++-v3/include/std/print
  879fbfbd4d520dc45943e6e1c095a2e7  libstdc++-v3/include/std/queue
--- 147311,147317 ----
  6042ceb95043702de02a8354f2507317  libstdc++-v3/include/std/mutex
  98a3e25011c5fb2383b3824b1c349d43  libstdc++-v3/include/std/numbers
  6a44514a47e24df75405dc1d397afc69  libstdc++-v3/include/std/numeric
! cb706beeda8a5831cae48dc9595d456c  libstdc++-v3/include/std/optional
  bcf1c0b79e2efd9cd34763d368f40966  libstdc++-v3/include/std/ostream
  e24e6fab84ab94b060b3c31ebc39b264  libstdc++-v3/include/std/print
  879fbfbd4d520dc45943e6e1c095a2e7  libstdc++-v3/include/std/queue
diff -Nrcpad gcc-16-20260523/gcc/ChangeLog gcc-16-20260530/gcc/ChangeLog
*** gcc-16-20260523/gcc/ChangeLog	Sat May 23 22:32:04 2026
--- gcc-16-20260530/gcc/ChangeLog	Sat May 30 22:32:04 2026
***************
*** 1,3 ****
--- 1,46 ----
+ 2026-05-28  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-05-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/124151
+ 	* tree-sra.cc (build_user_friendly_ref_for_offset): Added parameters
+ 	CUR_SIZE and EXP_SIZE.  Added code passing the correct CUR_SIZE and
+ 	checking it against EXP_SIZE.  Removed unused code for the case when
+ 	EXP_TYPE was NULL_TREE.
+ 	(create_artificial_child_access): Adjusted the call to
+ 	build_user_friendly_ref_for_offset.
+ 	(propagate_subaccesses_from_rhs): Likewise.
+ 	(propagate_subaccesses_from_rhs): Removed a check that the size of
+ 	lchild is a multiple of BITS_PER_UNIT.
+ 	(propagate_subaccesses_from_lhs): Likewise.
+ 
+ 2026-05-27  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2026-05-27  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Disable
+ 	for m_DIAMONDRAPIDS.
+ 	(X86_TUNE_USE_GATHER_4PARTS): Likewise.
+ 
+ 2026-05-26  Soumya AR  <soumyaa@nvidia.com>
+ 
+ 	Backported from master:
+ 	2026-05-08  Soumya AR  <soumyaa@nvidia.com>
+ 
+ 	PR target/124895
+ 	* config/aarch64/aarch64-passes.def (pass_narrow_gp_writes): Move pass
+ 	before pass_free_cfg.
+ 
+ 2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125409
+ 	* config/avr/avr-fixed.md (FIXED_A, FIXED_B): Add PSI to iterators.
+ 
  2026-05-22  Zhou Qiankang  <wszqkzqk@qq.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260523/gcc/DATESTAMP gcc-16-20260530/gcc/DATESTAMP
*** gcc-16-20260523/gcc/DATESTAMP	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/DATESTAMP	Sat May 30 22:32:04 2026
***************
*** 1 ****
! 20260523
--- 1 ----
! 20260530
diff -Nrcpad gcc-16-20260523/gcc/ada/ChangeLog gcc-16-20260530/gcc/ada/ChangeLog
*** gcc-16-20260523/gcc/ada/ChangeLog	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/ChangeLog	Sat May 30 22:32:04 2026
***************
*** 1,3 ****
--- 1,336 ----
+ 2026-05-29  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sysdep.c (getc_immediate_common): Read character as unsigned
+ 	value.
+ 
+ 2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Quantified_Expression): If there is a filter,
+ 	then suppress the warning.
+ 
+ 2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Quantified_Expression): Suppress warning for
+ 	trivial conditions.
+ 
+ 2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Statically_Names_Object) <N_Selected_Component>:
+ 	Return False if the selector is neither component nor discriminant.
+ 
+ 2026-05-29  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Record_Type): Record type derivations
+ 	inherit Is_Unchecked_Union and Has_Unchecked_Union flags.
+ 	(Inherit_Component): Add discriminals to the associations list.
+ 	* exp_ch3.adb (Build_Record_Init_Proc): Derivations of Unchecked_Union
+ 	types don't need an initialization procedure; they reuse the init proc
+ 	of their parent type.
+ 
+ 2026-05-29  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
+ 	markup.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Quantified_Expression): Suppress warning for
+ 	variables with junk names.
+ 
+ 2026-05-28  Sebastian Poeplau  <poeplau@adacore.com>
+ 
+ 	* init.c (__gnat_alternate_stack): add alignment attribute.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Also rewrite a choice list
+ 	with a single choice as an iterator specification when the choice's
+ 	type has the GNAT Iterable aspect specified.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Analyze the choice before
+ 	testing whether it is the name of a subtype with a predicate.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch13.adb (Resolve_Aspect_Aggregate.Resolve_Operation): Add
+ 	missing guard for the presence of Entity on the node.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst
+ 	(Generalized Finalization): Document the new restriction.
+ 	* sem_ch13.adb (Resolve_Finalizable_Argument): Adjust wording of
+ 	error message.
+ 	(Resolve_Finalization_Procedure.Is_Finalizable_Primitive): Require
+ 	the procedure to be a primitive operation.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Manually set the
+ 	Has_Controlling_Result flag on the wrappers.
+ 	* sem_disp.ads (Override_Dispatching_Operation): Move to...
+ 	* sem_disp.adb (Override_Dispatching_Operation): ...here.
+ 	(Find_Dispatching_Type): Return the (controlling) result type for a
+ 	controlling function wrapper.
+ 
+ 2026-05-28  Vadim Godunko  <godunko@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_of_ada_2022_features.rst: Fix casing.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Eq): Do not expand an array comparison
+ 	for validity checking purposes when the component type is covered
+ 	by the suppression of validity checks.
+ 
+ 2026-05-28  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch6.adb (Install_Entity): If the entity to be installed is
+ 	already installed, assert that an error has already been flagged
+ 	and then return without introducing a cycle in the entity's
+ 	Homonyms list.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Renamed_Entity): Protect call to First_Formal.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Constrained>: If the
+ 	prefix is a non-In formal parameter of an unchecked union type, give
+ 	a warning and insert a raise statement for Program_Error.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.ads (Is_Distributable_Declaration): New predicate.
+ 	* exp_util.adb (Is_Distributable_Declaration): New predicate coming
+ 	from Expand_N_Case_Expression and Expand_N_If_Expression.  Return
+ 	False for variables of an unconstrained definite nonlimited subtype.
+ 	* exp_ch4.adb (Expand_N_Case_Expression): Replace calls to local
+ 	Is_Optimizable_Declaration by calls to Is_Distributable_Declaration.
+ 	(Expand_N_If_Expression): Likewise.
+ 	* exp_ch6.adb (Expand_Ctrl_Function_Call): Likewise.
+ 
+ 2026-05-28  Marc Poulhiès  <poulhies@adacore.com>
+ 	    Eric Botcazou  <botcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Find_Type_Of_Object): Adjust freezing of the base
+ 	type of a discriminated type.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* gen_il-fields.ads (Scope_Link): New field.
+ 	* gen_il-gen-gen_nodes.adb (N_Expression_With_Actions): Added Scope_Link.
+ 	* sinfo.ads (N_Expression_With_Actions): Add field Scope_Link.
+ 	* sem_ch4.adb (Analyze_Expression_With_Actions): Set field Scope_Link
+ 	* sem_ch5.ads (Has_Sec_Stack_Call): Declaration moved to the package spec.
+ 	* sem_ch5.adb (Has_Sec_Stack_Call): ditto.
+ 	* sem_res.adb (Resolve_Declare_Expression): Push/Pop internally created
+ 	scope to provide proper visibility of the declare_items.
+ 
+ 2026-05-28  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_prag.adb (Check_References): Don't call Class_Wide_Type if the
+ 	subprogram is a non-primitive procedure as the dispatching type may be
+ 	empty.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Qualified_Expression): For a class-wide type,
+ 	check for an exact match modulo the Non_Limited_View attribute.
+ 
+ 2026-05-28  Steve Baird  <baird@adacore.com>
+ 
+ 	* aspects.adb (Has_Aspect): In the call to Find_Aspect, pass in
+ 	True for the Or_Rep_Item parameter instead of letting it default
+ 	to False.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_util.adb (Remove_Side_Effects): Propagate actuals in
+ 	recursion calls, unless this is a known side-effect free
+ 	attribute whose expressions are also side-effect free.
+ 
+ 2026-05-28  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-interr__vxworks.adb (Unprotected_Exchange_Handler): Fix
+ 	exception message.
+ 
+ 2026-05-28  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-interr.adb (Interrupt_Manager, Server_Task): Fix
+ 	comments.
+ 
+ 2026-05-28  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-interr.adb (User_Handler): Improve comment.
+ 	(Unprotected_Exchange_Handler): Fix message string.
+ 
+ 2026-05-28  Steve Baird  <baird@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst: Correct example
+ 	to avoid using a not-yet-implemented form of deep delta aggregate.
+ 	* exp_aggr.adb (Make_Delta_Choice_LHS): Call Core_Extensions_Allowed
+ 	instead of All_Extensions_Allowed.
+ 	* par-ch4.adb (P_Simple_Expression): Likewise.
+ 	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): Likewise.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-28  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* par.adb (P_Expression_If_OK): Add declare expression to spec comment.
+ 	* par-ch4.adb (P_Expression_If_OK): Add declare expression to comments.
+ 	* par-ch12.adb (P_Formal_Subprogram_Declaration): Call
+ 	P_Expression_If_OK rather than P_Expression.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_One_Aspect): For Unsigned_Base_Range aspect,
+ 	skip generating its corresponding pragma when the aspect is set
+ 	to False.
+ 	* sem_ch3.adb (Analyze_Full_Type_Declaration): Fix initialization
+ 	of local variable Is_Unsigned_Base_Range_Type_Decl to handle
+ 	Unsigned_Base_Range aspect set to False.
+ 
+ 2026-05-28  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-interr.adb (Unprotected_Exchange_Handler): Fix
+ 	exception message.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* aspects.adb (Get_Aspect_Id): Enable aspect Unsigned_Base_Range
+ 	* debug.adb (Debug_Flag_Dot_U): Leave free this switch
+ 	* par-ch4.adb (Scan_Apostrophe): Enable attribute Unsigned_Base_Range
+ 	* sem_prag.adb (Analyze_Pragma): Enable pragma Unsigned_Base_Range
+ 	* doc/gnat_rm/gnat_language_extensions.rst: Document unsigned base range.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Prefix_Is_Formal_Parameter): Rename into...
+ 	(Prefix_Is_Formal_Parameter_Of_EQ): ...this.  Return True only if
+ 	the formal parameter is that of an equality function built for an
+ 	unchecked union type.
+ 	(Has_Inferable_Discriminants): Adjust to above renaming.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_put_image.ads (Image_Should_Call_Put_Image): Rename into...
+ 	(Image_Must_Call_Put_Image): ...this.
+ 	* exp_put_image.adb (Image_Should_Call_Put_Image): Rename into...
+ 	(Image_Must_Call_Put_Image): ...this.
+ 	* exp_imgv.adb (Expand_Image_Attribute): Adjust to above renaming.
+ 	(Expand_Wide_Image_Attribute): Likewise.
+ 	(Expand_Wide_Wide_Image_Attribute): Likewise.
+ 	* sem_attr.adb (Eval_Attribute): Likewise.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_attr.adb: Add with and use clauses for Exp_Put_Image.
+ 	(Eval_Attribute.Fold_Compile_Time_Known_Enumeration_Image): New
+ 	procedure factored out from....
+ 	(Eval_Attribute): ...here.  Attempt to fold 'Img and 'Image for all
+ 	compile-time known values of enumeration, but not character, types,
+ 	provided that Put_Image need not be called, by invoking the nested
+ 	Fold_Compile_Time_Known_Enumeration_Image procedure on the value.
+ 
+ 2026-05-28  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_util.adb: Fix RM references.
+ 	* sem_util.ads: Likewise.
+ 	* sem_warn.adb: Likewise.
+ 
+ 2026-05-28  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* par-ch12.adb (P_Formal_Subprogram_Declaration): Pass True for
+ 	the Is_Core_Extension parameter on call to Error_Msg_GNAT_Extension.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gen_il-gen-gen_entities.adb (E_Subprogram_Type): Add the missing
+ 	Scope_Depth_Value field.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_disp.adb (Check_Controlling_Formals): Formals of a type
+ 	specifying aspect First_Controlling_Parameter are not candidate
+ 	controlling parameters when they are not the first formal of
+ 	the dispatching primitive.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Handle internally
+ 	generated initialization invoking a C++ constructor.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Ctrl_Function_Call): Bail out for the name
+ 	of an object renaming declaration at library level, if the call
+ 	does not return on the secondary stack.
+ 	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Rewrite the
+ 	renaming as a regular object declaration if it is declared at
+ 	library level and the name is a controlled function call whose
+ 	result is not returned on the secondary stack.
+ 	* exp_util.adb (Rewrite_Object_Declaration_As_Renaming): Minor fix.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Record subtypes
+ 	inherit the CPP_Class attribute; required for instantiations.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Remove_Init_Call.Find_Init_Call_In_List): Check that
+ 	the first actual denotes the expected variable modulo qualification
+ 	and conversion.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Report an error if the
+ 	return statement of a function with foreign convention has a call
+ 	to a C++ constructor.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Handle initialization
+ 	expression calling a C++ constructor in an extended return statement
+ 	of a subprogram with Ada convention.
+ 
+ 2026-05-28  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* exp_disp.adb (Expand_Dispatching_Call): Remove suppression of checks
+ 	during analysis of expanded dispatching calls.
+ 
+ 2026-05-28  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst: Add that finally is a
+ 	non-reserved keyword.
+ 	* par-ch5.adb (P_Sequence_Of_Statements): handle "finally" syntax
+ 	extension.
+ 	* snames.ads-tmpl: Remove the concept of GNAT extension reserved
+ 	word.
+ 	* snames.adb-tmpl (Is_Keyword_Name): Likewise.
+ 	* scans.adb (Initialize_Ada_Keywords): Likewise.
+ 	* par-util.adb (Check_Future_Keyword): Likewise.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-28  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* exp_ch6.adb (Build_Helper_Call): Refactor code to handle both static and
+ 	dynamic precondition calls in the same way.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Minor comment fixes.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sinput.ads: Small tweak to head comment.
+ 
  2026-05-20  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260523/gcc/ada/aspects.adb gcc-16-20260530/gcc/ada/aspects.adb
*** gcc-16-20260523/gcc/ada/aspects.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/aspects.adb	Sat May 30 22:32:04 2026
***************
*** 24,30 ****
  ------------------------------------------------------------------------------
  
  with Atree;          use Atree;
- with Debug;          use Debug;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
  with Nlists;         use Nlists;
--- 24,29 ----
*************** package body Aspects is
*** 279,292 ****
  
     function Get_Aspect_Id (Name : Name_Id) return Aspect_Id is
     begin
-       --  Aspect Unsigned_Base_Range temporarily disabled
- 
-       if Name = Name_Unsigned_Base_Range
-         and then not Debug_Flag_Dot_U
-       then
-          return No_Aspect;
-       end if;
- 
        return Aspect_Id_Hash_Table.Get (Name);
     end Get_Aspect_Id;
  
--- 278,283 ----
*************** package body Aspects is
*** 306,312 ****
        Class_Present : Boolean := False) return Boolean
     is
     begin
!       return Present (Find_Aspect (Id, A, Class_Present => Class_Present));
     end Has_Aspect;
  
     function Has_Aspects (N : Node_Id) return Boolean
--- 297,305 ----
        Class_Present : Boolean := False) return Boolean
     is
     begin
!       return Present
!               (Find_Aspect
!                 (Id, A, Class_Present => Class_Present, Or_Rep_Item => True));
     end Has_Aspect;
  
     function Has_Aspects (N : Node_Id) return Boolean
diff -Nrcpad gcc-16-20260523/gcc/ada/debug.adb gcc-16-20260530/gcc/ada/debug.adb
*** gcc-16-20260523/gcc/ada/debug.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/debug.adb	Sat May 30 22:32:04 2026
*************** package body Debug is
*** 105,111 ****
     --  d.r  Disable reordering of components in record types
     --  d.s  Strict secondary stack management
     --  d.t  Disable static allocation of library level dispatch tables
!    --  d.u  Enable Unsigned_Base_Range aspect language extension
     --  d.v  Enforce SPARK elaboration rules in SPARK code
     --  d.w  Do not check for infinite loops
     --  d.x  No exception handlers
--- 105,111 ----
     --  d.r  Disable reordering of components in record types
     --  d.s  Strict secondary stack management
     --  d.t  Disable static allocation of library level dispatch tables
!    --  d.u
     --  d.v  Enforce SPARK elaboration rules in SPARK code
     --  d.w  Do not check for infinite loops
     --  d.x  No exception handlers
*************** package body Debug is
*** 800,807 ****
     --       previous dynamic construction of tables. It is there as a possible
     --       work around if we run into trouble with the new implementation.
  
!    --  d.u  Enable the support for Unsigned_Base_Range aspect, attribute, and
!    --       pragma.
  
     --  d.v  This flag enforces the elaboration rules defined in the SPARK
     --       Reference Manual, chapter 7.7, to all SPARK code within a unit. As
--- 800,806 ----
     --       previous dynamic construction of tables. It is there as a possible
     --       work around if we run into trouble with the new implementation.
  
!    --  d.u
  
     --  d.v  This flag enforces the elaboration rules defined in the SPARK
     --       Reference Manual, chapter 7.7, to all SPARK code within a unit. As
diff -Nrcpad gcc-16-20260523/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst gcc-16-20260530/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
*** gcc-16-20260523/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sat May 30 22:32:04 2026
*************** Examples
*** 272,280 ****
        S : Segment := (1 .. 2 => (0, 0));
        T : Triangle := (1 .. 3 => (1 .. 2 => (0, 0)));
     begin
!       S := (S with delta (1).X | (2).Y => 12, (1).Y => 15);
  
!       pragma Assert (S (1).X = 12);
        pragma Assert (S (2).Y = 12);
        pragma Assert (S (1).Y = 15);
  
--- 272,280 ----
        S : Segment := (1 .. 2 => (0, 0));
        T : Triangle := (1 .. 3 => (1 .. 2 => (0, 0)));
     begin
!       S := (S with delta (1).X => 11, (2).Y => 12, (1).Y => 15);
  
!       pragma Assert (S (1).X = 11);
        pragma Assert (S (2).Y = 12);
        pragma Assert (S (1).Y = 15);
  
*************** Restricting the position of controlling
*** 584,589 ****
--- 584,613 ----
  
  * The result of a function is never a controlling result.
  
+ ``Unsigned_Base_Range`` aspect
+ ------------------------------
+ 
+ A new pragma/aspect, ``Unsigned_Base_Range``, is introduced to explicitly
+ enforce the use of an unsigned base type for signed integer types.
+ RM-3.5.4(9) mandates a symmetric base range for signed integer types. This
+ requirement often requires the use of larger data types for arithmetic
+ operations, potentially introducing undesirable run-time overhead and
+ performance penalties, particularly in embedded systems. For instance,
+ on a 64-bit architecture, a 64-bit multiplication can be performed with
+ a single hardware instruction, whereas a 128-bit multiplication requires
+ multiple instructions and intermediate steps.
+ 
+ Here is an example of this feature:
+ 
+ .. code-block:: ada
+ 
+   type Uns_64 is range 0 .. 2 ** 64 - 1
+     with Size => 64,
+          Unsigned_Base_Range => True;
+ 
+ It ensures that arithmetic operations of type ``Uns_64`` are carried
+ out using 64 bits.
+ 
  Generalized Finalization
  ------------------------
  
*************** Here is the archetypal example:
*** 611,618 ****
      procedure Finalize   (Obj : in out T);
      procedure Initialize (Obj : in out T);
  
! The three procedures have the same profile, with a single ``in out`` parameter,
! and also have the same dynamic semantics as for controlled types:
  
   - ``Initialize`` is called when an object of type ``T`` is declared without
     initialization expression.
--- 635,643 ----
      procedure Finalize   (Obj : in out T);
      procedure Initialize (Obj : in out T);
  
! The three procedures must be primitive operations of ``T`` and have a single
! ``in out`` parameter. They need not be all specified by the aspect. If they
! are specified, they have the same dynamic semantics as for controlled types:
  
   - ``Initialize`` is called when an object of type ``T`` is declared without
     initialization expression.
*************** another sequence of statements is comple
*** 1746,1751 ****
--- 1771,1779 ----
  
  This feature is similar to the one with the same name in other languages such as Java.
  
+ Note that ``finally`` is a keyword but it is not a reserved word. This is a
+ configuration that does not exist in standard Ada.
+ 
  Syntax
  ^^^^^^
  
diff -Nrcpad gcc-16-20260523/gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst gcc-16-20260530/gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst
*** gcc-16-20260523/gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst	Sat May 30 22:32:04 2026
*************** http://www.ada-auth.org/AI12-SUMMARY.HTM
*** 356,362 ****
  
    .. code::
  
!     Array (1 .. 10) of Integer :=
        (for I in 1 .. 10 => I ** 2);
      type Matrix is
      array
--- 356,362 ----
  
    .. code::
  
!     array (1 .. 10) of Integer :=
        (for I in 1 .. 10 => I ** 2);
      type Matrix is
      array
diff -Nrcpad gcc-16-20260523/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-16-20260530/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-16-20260523/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sat May 30 22:32:04 2026
*************** correctly, the two variables
*** 7345,7353 ****
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual ``argc`` and ``argv`` values passed to the
! main program. With no *n* present, ``gnatbind``
  generates the C main program to automatically set these variables.
! If the *n* switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  ``Ada.Command_Line`` will not be available, and any attempt to use
  them will raise ``Constraint_Error``. If command line access is
--- 7345,7353 ----
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual ``argc`` and ``argv`` values passed to the
! main program. With no :switch:`-n` present, ``gnatbind``
  generates the C main program to automatically set these variables.
! If the :switch:`-n` switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  ``Ada.Command_Line`` will not be available, and any attempt to use
  them will raise ``Constraint_Error``. If command line access is
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_aggr.adb gcc-16-20260530/gcc/ada/exp_aggr.adb
*** gcc-16-20260523/gcc/ada/exp_aggr.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_aggr.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Aggr is
*** 7848,7854 ****
  
              else
                 --  a deep delta aggregate choice
!                pragma Assert (All_Extensions_Allowed);
  
                 declare
                    --  recursively get name for prefix
--- 7848,7854 ----
  
              else
                 --  a deep delta aggregate choice
!                pragma Assert (Core_Extensions_Allowed);
  
                 declare
                    --  recursively get name for prefix
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_attr.adb gcc-16-20260530/gcc/ada/exp_attr.adb
*** gcc-16-20260523/gcc/ada/exp_attr.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_attr.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Attr is
*** 3553,3558 ****
--- 3553,3577 ----
                New_Occurrence_Of
                  (Extra_Constrained (Formal_Ent), Loc));
  
+          --  Extra formals are not created for Unchecked_Union parameters
+ 
+          elsif Present (Formal_Ent)
+            and then Ekind (Formal_Ent) /= E_In_Parameter
+            and then Is_Unchecked_Union (Base_Type (Etype (Formal_Ent)))
+          then
+             if Comes_From_Source (N) then
+                Error_Msg_N
+                  ("constraints cannot be determined for Unchecked_Union??", N);
+                Error_Msg_N
+                  ("\Program_Error will be raised for ''Constrained??", N);
+             end if;
+ 
+             Insert_Action (N,
+               Make_Raise_Program_Error (Loc,
+                 Reason => PE_Unchecked_Union_Restriction));
+ 
+             Rewrite (N, New_Occurrence_Of (Boolean_Literals (False), Loc));
+ 
           --  If the prefix is an access to object, the attribute applies to
           --  the designated object, so rewrite with an explicit dereference.
  
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_ch3.adb gcc-16-20260530/gcc/ada/exp_ch3.adb
*** gcc-16-20260523/gcc/ada/exp_ch3.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_ch3.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Ch3 is
*** 4865,4877 ****
  
        --  Derived types that have no type extension can use the initialization
        --  procedure of their parent and do not need a procedure of their own.
        --  This is only correct if there are no representation clauses for the
        --  type or its parent, and if the parent has in fact been frozen so
        --  that its initialization procedure exists.
  
        if Is_Derived_Type (Rec_Type)
          and then not Is_Tagged_Type (Rec_Type)
!         and then not Is_Unchecked_Union (Rec_Type)
          and then not Has_New_Non_Standard_Rep (Rec_Type)
          and then not Parent_Subtype_Renaming_Discrims
          and then Present (Base_Init_Proc (Etype (Rec_Type)))
--- 4865,4879 ----
  
        --  Derived types that have no type extension can use the initialization
        --  procedure of their parent and do not need a procedure of their own.
+       --  Same for derivations of unchecked_union types.
        --  This is only correct if there are no representation clauses for the
        --  type or its parent, and if the parent has in fact been frozen so
        --  that its initialization procedure exists.
  
        if Is_Derived_Type (Rec_Type)
          and then not Is_Tagged_Type (Rec_Type)
!         and then Is_Unchecked_Union (Rec_Type)
!                    = Is_Unchecked_Union (Etype (Rec_Type))
          and then not Has_New_Non_Standard_Rep (Rec_Type)
          and then not Parent_Subtype_Renaming_Discrims
          and then Present (Base_Init_Proc (Etype (Rec_Type)))
*************** package body Exp_Ch3 is
*** 8491,8496 ****
--- 8493,8536 ----
              --  class that has no virtual methods is an untagged limited
              --  record type.
  
+             --  a) C++ constructor call placed in a return statement. The
+             --     BIP_Object_Access param of the enclosing function has
+             --     the pointer to the object; convert it to the type of the
+             --     first formal of the called C++ constructor.
+ 
+             elsif Is_CPP_Constructor_Call (Expr)
+               and then Is_Return_Object (Def_Id)
+             then
+                declare
+                   Encl_Func   : constant Entity_Id :=
+                                   Return_Applies_To (Scope (Def_Id));
+                   BIP_Object  : constant Node_Id :=
+                                   Build_In_Place_Formal (Encl_Func,
+                                     BIP_Object_Access);
+                   Id_Ctor     : constant Entity_Id := Entity (Name (Expr));
+                   Id_Ref      : constant Node_Id :=
+                                   Unchecked_Convert_To (Etype (Id_Ctor),
+                                     Make_Explicit_Dereference (Loc,
+                                       New_Occurrence_Of (BIP_Object, Loc)));
+                   BIP_Obj_Ref : constant Node_Id :=
+                                   Make_Explicit_Dereference (Loc,
+                                     New_Occurrence_Of (BIP_Object, Loc));
+ 
+                begin
+                   Insert_List_Before_And_Analyze (N,
+                     Build_Initialization_Call (N, Id_Ref, Typ,
+                       Constructor_Ref => Expr));
+ 
+                   --  Generate:
+                   --    obj : T := renames BIP_Object_Access.all;
+ 
+                   Analyze (BIP_Obj_Ref);
+                   Rewrite_Object_Declaration_As_Renaming (N, BIP_Obj_Ref);
+                   return;
+                end;
+ 
+             --  b) C++ constructor call not placed in a return statement
+ 
              elsif Is_CPP_Constructor_Call (Expr) then
                 declare
                    Id_Ref : constant Node_Id := New_Occurrence_Of (Def_Id, Loc);
*************** package body Exp_Ch3 is
*** 9313,9319 ****
           end if;
  
        --  If this is the return object of a function returning on the secondary
!       --  stack, convert the declaration to a renaming of the dereference of ah
        --  allocator for the secondary stack.
  
        --    Result : T [:= <expression>];
--- 9353,9359 ----
           end if;
  
        --  If this is the return object of a function returning on the secondary
!       --  stack, convert the declaration to a renaming of the dereference of an
        --  allocator for the secondary stack.
  
        --    Result : T [:= <expression>];
*************** package body Exp_Ch3 is
*** 9404,9410 ****
           end;
  
        --  If this is the return object of a function returning a by-reference
!       --  type, convert the declaration to a renaming of the dereference of ah
        --  allocator for the return stack.
  
        --    Result : T [:= <expression>];
--- 9444,9450 ----
           end;
  
        --  If this is the return object of a function returning a by-reference
!       --  type, convert the declaration to a renaming of the dereference of an
        --  allocator for the return stack.
  
        --    Result : T [:= <expression>];
*************** package body Exp_Ch3 is
*** 9477,9486 ****
           end;
        end if;
  
!       --  Final transformation - turn the object declaration into a renaming
!       --  if appropriate. If this is the completion of a deferred constant
!       --  declaration, then this transformation generates what would be
!       --  illegal code if written by hand, but that's OK.
  
        if Rewrite_As_Renaming then
           Rewrite_Object_Declaration_As_Renaming (N, Expr_Q);
--- 9517,9526 ----
           end;
        end if;
  
!       --  Final transformation: turn the object declaration into a renaming if
!       --  needed. If this is the completion of a deferred constant declaration,
!       --  this transformation generates what would be illegal code if written
!       --  by hand, but that's OK.
  
        if Rewrite_As_Renaming then
           Rewrite_Object_Declaration_As_Renaming (N, Expr_Q);
*************** package body Exp_Ch3 is
*** 11683,11688 ****
--- 11723,11729 ----
              Func_Id := Defining_Unit_Name (Specification (Func_Decl));
  
              Mutate_Ekind (Func_Id, E_Function);
+             Set_Has_Controlling_Result (Func_Id);
              Set_Is_Wrapper (Func_Id);
  
              --  Corresponding_Spec will be set again to the same value during
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_ch4.adb gcc-16-20260530/gcc/ada/exp_ch4.adb
*** gcc-16-20260523/gcc/ada/exp_ch4.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_ch4.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Ch4 is
*** 5162,5170 ****
        --  Return True if we can copy objects of this type when expanding a case
        --  expression.
  
-       function Is_Optimizable_Declaration (N : Node_Id) return Boolean;
-       --  Return True if N is an object declaration that can be optimized
- 
        ------------------
        -- Is_Copy_Type --
        ------------------
--- 5162,5167 ----
*************** package body Exp_Ch4 is
*** 5174,5193 ****
           return Is_Elementary_Type (Underlying_Type (Typ));
        end Is_Copy_Type;
  
-       --------------------------------
-       -- Is_Optimizable_Declaration --
-       --------------------------------
- 
-       function Is_Optimizable_Declaration (N : Node_Id) return Boolean is
-       begin
-          return Nkind (N) = N_Object_Declaration
-            and then not (Is_Entity_Name (Object_Definition (N))
-                           and then Is_Class_Wide_Type
-                                      (Entity (Object_Definition (N))))
-            and then not Is_Return_Object (Defining_Identifier (N))
-            and then not Is_Copy_Type (Typ);
-       end Is_Optimizable_Declaration;
- 
        --  Local variables
  
        Acts       : List_Id;
--- 5171,5176 ----
*************** package body Exp_Ch4 is
*** 5265,5271 ****
                             Unqualified_Unconditional_Parent (N);
           begin
              if Nkind (Uncond_Par) = N_Simple_Return_Statement
!               or else Is_Optimizable_Declaration (Uncond_Par)
                or else (Parent_Is_Regular_Aggregate (Uncond_Par)
                          and then not Is_Copy_Type (Typ))
              then
--- 5248,5255 ----
                             Unqualified_Unconditional_Parent (N);
           begin
              if Nkind (Uncond_Par) = N_Simple_Return_Statement
!               or else (Is_Distributable_Declaration (Uncond_Par)
!                         and then not Is_Copy_Type (Typ))
                or else (Parent_Is_Regular_Aggregate (Uncond_Par)
                          and then not Is_Copy_Type (Typ))
              then
*************** package body Exp_Ch4 is
*** 5286,5292 ****
           elsif Nkind (Par) = N_Simple_Return_Statement then
              Optimize_Return_Stmt := True;
  
!          elsif Is_Optimizable_Declaration (Par) then
              Optimize_Object_Decl := True;
  
           else
--- 5270,5276 ----
           elsif Nkind (Par) = N_Simple_Return_Statement then
              Optimize_Return_Stmt := True;
  
!          elsif Is_Distributable_Declaration (Par) then
              Optimize_Object_Decl := True;
  
           else
*************** package body Exp_Ch4 is
*** 5762,5770 ****
        --  Return True if we can copy objects of this type when expanding an if
        --  expression.
  
-       function Is_Optimizable_Declaration (N : Node_Id) return Boolean;
-       --  Return True if N is an object declaration that can be optimized
- 
        function OK_For_Single_Subtype (T1, T2 : Entity_Id) return Boolean;
        --  Return true if it is acceptable to use a single subtype for two
        --  dependent expressions of subtype T1 and T2 respectively, which are
--- 5746,5751 ----
*************** package body Exp_Ch4 is
*** 5782,5801 ****
             and then not Is_By_Reference_Type (Utyp);
        end Is_Copy_Type;
  
-       --------------------------------
-       -- Is_Optimizable_Declaration --
-       --------------------------------
- 
-       function Is_Optimizable_Declaration (N : Node_Id) return Boolean is
-       begin
-          return Nkind (N) = N_Object_Declaration
-            and then not (Is_Entity_Name (Object_Definition (N))
-                           and then Is_Class_Wide_Type
-                                      (Entity (Object_Definition (N))))
-            and then not Is_Return_Object (Defining_Identifier (N))
-            and then not Is_Copy_Type (Typ);
-       end Is_Optimizable_Declaration;
- 
        ---------------------------
        -- OK_For_Single_Subtype --
        ---------------------------
--- 5763,5768 ----
*************** package body Exp_Ch4 is
*** 5885,5891 ****
                             Unqualified_Unconditional_Parent (N);
           begin
              if Nkind (Uncond_Par) = N_Simple_Return_Statement
!               or else Is_Optimizable_Declaration (Uncond_Par)
                or else (Parent_Is_Regular_Aggregate (Uncond_Par)
                          and then not Is_Copy_Type (Typ))
              then
--- 5852,5859 ----
                             Unqualified_Unconditional_Parent (N);
           begin
              if Nkind (Uncond_Par) = N_Simple_Return_Statement
!               or else (Is_Distributable_Declaration (Uncond_Par)
!                         and then not Is_Copy_Type (Typ))
                or else (Parent_Is_Regular_Aggregate (Uncond_Par)
                          and then not Is_Copy_Type (Typ))
              then
*************** package body Exp_Ch4 is
*** 5906,5912 ****
           elsif Nkind (Par) = N_Simple_Return_Statement then
              Optimize_Return_Stmt := True;
  
!          elsif Is_Optimizable_Declaration (Par) then
              Optimize_Object_Decl := True;
  
           else
--- 5874,5880 ----
           elsif Nkind (Par) = N_Simple_Return_Statement then
              Optimize_Return_Stmt := True;
  
!          elsif Is_Distributable_Declaration (Par) then
              Optimize_Object_Decl := True;
  
           else
*************** package body Exp_Ch4 is
*** 8610,8615 ****
--- 8578,8585 ----
  
           if Validity_Check_Operands
             and then not Is_Known_Valid (Component_Type (Typl))
+            and then not
+              Is_Check_Suppressed (Component_Type (Typl), Validity_Check)
           then
              declare
                 Save_Force_Validity_Checks : constant Boolean :=
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_ch5.adb gcc-16-20260530/gcc/ada/exp_ch5.adb
*** gcc-16-20260523/gcc/ada/exp_ch5.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_ch5.adb	Sat May 30 22:32:04 2026
*************** with Einfo.Entities; use Einfo.Entities;
*** 32,37 ****
--- 32,38 ----
  with Einfo.Utils;    use Einfo.Utils;
  with Elists;         use Elists;
  with Exp_Aggr;       use Exp_Aggr;
+ with Exp_Ch3;        use Exp_Ch3;
  with Exp_Ch6;        use Exp_Ch6;
  with Exp_Ch7;        use Exp_Ch7;
  with Exp_Ch11;       use Exp_Ch11;
*************** package body Exp_Ch5 is
*** 2412,2417 ****
--- 2413,2438 ----
        if Componentwise_Assignment (N) then
           Expand_Assign_Record (N);
           return;
+ 
+       --  Another special case: internally generated initialization invoking
+       --  a C++ constructor. This case corresponds with the initialization
+       --  of an aggregate component.
+ 
+       elsif not Comes_From_Source (N)
+         and then (No_Ctrl_Actions (N) or else No_Finalize_Actions (N))
+         and then Is_CPP_Constructor_Call (Rhs)
+       then
+          declare
+             Expr   : constant Node_Id := Relocate_Node (Rhs);
+             Id_Ref : constant Node_Id := Relocate_Node (Lhs);
+ 
+          begin
+             Insert_List_Before_And_Analyze (N,
+               Build_Initialization_Call (N, Id_Ref, Typ,
+                 Constructor_Ref => Expr));
+             Rewrite (N, Make_Null_Statement (Loc));
+             return;
+          end;
        end if;
  
        --  Defend against invalid subscripts on left side if we are in standard
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_ch6.adb gcc-16-20260530/gcc/ada/exp_ch6.adb
*** gcc-16-20260523/gcc/ada/exp_ch6.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_ch6.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Ch6 is
*** 5781,5793 ****
  
        --  Note that object declarations are also distributed into conditional
        --  expressions, but we may be invoked before this distribution is done.
-       --  However that's not the case for the declarations of return objects,
-       --  see the twin Is_Optimizable_Declaration predicates that are present
-       --  in Expand_N_Case_Expression and Expand_N_If_Expression of Exp_Ch4.
  
!       elsif Nkind (Uncond_Par) = N_Object_Declaration
!         and then not Is_Return_Object (Defining_Identifier (Uncond_Par))
!       then
           return;
        end if;
  
--- 5781,5788 ----
  
        --  Note that object declarations are also distributed into conditional
        --  expressions, but we may be invoked before this distribution is done.
  
!       elsif Is_Distributable_Declaration  (Uncond_Par) then
           return;
        end if;
  
*************** package body Exp_Ch6 is
*** 5824,5829 ****
--- 5819,5836 ----
           return;
        end if;
  
+       --  Do not expand the name of an object renaming declaration at library
+       --  level if the call does not return on the secondary stack, since the
+       --  renaming will eventually be turned into a regular object declaration
+       --  in Expand_N_Object_Renaming_Declaration.
+ 
+       if Nkind (Par) = N_Object_Renaming_Declaration
+         and then not Use_Sec_Stack
+         and then Is_Library_Level_Entity (Defining_Identifier (Par))
+       then
+          return;
+       end if;
+ 
        --  Resolution is now finished, make sure we don't start analysis again
        --  because of the duplication.
  
*************** package body Exp_Ch6 is
*** 8295,8313 ****
     procedure Install_Class_Preconditions_Check (Call_Node : Node_Id) is
        Loc : constant Source_Ptr := Sloc (Call_Node);
  
-       function Build_Dynamic_Check_Helper_Call return Node_Id;
-       --  Build call to the helper runtime function of the nearest ancestor
-       --  of the target subprogram that dynamically evaluates the merged
-       --  or-else preconditions.
- 
        function Build_Error_Message (Subp_Id : Entity_Id) return Node_Id;
        --  Build message associated with the class-wide precondition of Subp_Id
        --  indicating the call that caused it.
  
!       function Build_Static_Check_Helper_Call return Node_Id;
        --  Build call to the helper runtime function of the nearest ancestor
!       --  of the target subprogram that dynamically evaluates the merged
!       --  or-else preconditions.
  
        function Class_Preconditions_Subprogram
          (Spec_Id : Entity_Id;
--- 8302,8315 ----
     procedure Install_Class_Preconditions_Check (Call_Node : Node_Id) is
        Loc : constant Source_Ptr := Sloc (Call_Node);
  
        function Build_Error_Message (Subp_Id : Entity_Id) return Node_Id;
        --  Build message associated with the class-wide precondition of Subp_Id
        --  indicating the call that caused it.
  
!       function Build_Helper_Call (Dynamic : Boolean) return Node_Id;
        --  Build call to the helper runtime function of the nearest ancestor
!       --  of the target subprogram that statically or dynamically (depending on
!       --  the Dynamic flag) evaluates the merged or-else preconditions.
  
        function Class_Preconditions_Subprogram
          (Spec_Id : Entity_Id;
*************** package body Exp_Ch6 is
*** 8320,8358 ****
        --  preconditions; return Empty when not available (which means that no
        --  preconditions check is required).
  
-       -------------------------------------
-       -- Build_Dynamic_Check_Helper_Call --
-       -------------------------------------
- 
-       function Build_Dynamic_Check_Helper_Call return Node_Id is
-          Spec_Id   : constant Entity_Id := Entity (Name (Call_Node));
-          CW_Subp   : constant Entity_Id :=
-                        Class_Preconditions_Subprogram (Spec_Id,
-                          Dynamic => True);
-          Helper_Id : constant Entity_Id :=
-                        Dynamic_Call_Helper (CW_Subp);
-          Actuals   : constant List_Id := New_List;
-          A         : Node_Id   := First_Actual (Call_Node);
- 
-       begin
-          while Present (A) loop
- 
-             --  Ensure that the evaluation of the actuals will not produce
-             --  side effects.
- 
-             Remove_Side_Effects (A);
- 
-             Append_To (Actuals, New_Copy_Tree (A));
- 
-             Next_Actual (A);
-          end loop;
- 
-          return
-            Make_Function_Call (Loc,
-              Name => New_Occurrence_Of (Helper_Id, Loc),
-              Parameter_Associations => Actuals);
-       end Build_Dynamic_Check_Helper_Call;
- 
        -------------------------
        -- Build_Error_Message --
        -------------------------
--- 8322,8327 ----
*************** package body Exp_Ch6 is
*** 8434,8444 ****
           return Make_String_Literal (Loc, Name_Buffer (1 .. Name_Len));
        end Build_Error_Message;
  
!       ------------------------------------
!       -- Build_Static_Check_Helper_Call --
!       ------------------------------------
  
!       function Build_Static_Check_Helper_Call return Node_Id is
           Actuals   : constant List_Id := New_List;
           A         : Node_Id;
           Helper_Id : Entity_Id;
--- 8403,8413 ----
           return Make_String_Literal (Loc, Name_Buffer (1 .. Name_Len));
        end Build_Error_Message;
  
!       -----------------------
!       -- Build_Helper_Call --
!       -----------------------
  
!       function Build_Helper_Call (Dynamic : Boolean) return Node_Id is
           Actuals   : constant List_Id := New_List;
           A         : Node_Id;
           Helper_Id : Entity_Id;
*************** package body Exp_Ch6 is
*** 8456,8466 ****
           --  Common case
  
           else
!             CW_Subp := Class_Preconditions_Subprogram (Spec_Id,
!                          Dynamic => False);
           end if;
  
!          Helper_Id := Static_Call_Helper (CW_Subp);
  
           F := First_Formal (Helper_Id);
           A := First_Actual (Call_Node);
--- 8425,8438 ----
           --  Common case
  
           else
!             CW_Subp := Class_Preconditions_Subprogram (Spec_Id, Dynamic);
           end if;
  
!          if Dynamic then
!             Helper_Id := Dynamic_Call_Helper (CW_Subp);
!          else
!             Helper_Id := Static_Call_Helper (CW_Subp);
!          end if;
  
           F := First_Formal (Helper_Id);
           A := First_Actual (Call_Node);
*************** package body Exp_Ch6 is
*** 8489,8495 ****
             Make_Function_Call (Loc,
               Name => New_Occurrence_Of (Helper_Id, Loc),
               Parameter_Associations => Actuals);
!       end Build_Static_Check_Helper_Call;
  
        ------------------------------------
        -- Class_Preconditions_Subprogram --
--- 8461,8467 ----
             Make_Function_Call (Loc,
               Name => New_Occurrence_Of (Helper_Id, Loc),
               Parameter_Associations => Actuals);
!       end Build_Helper_Call;
  
        ------------------------------------
        -- Class_Preconditions_Subprogram --
*************** package body Exp_Ch6 is
*** 8632,8642 ****
  
        --  Build and install the check
  
!       if Dynamic_Check then
!          Cond := Build_Dynamic_Check_Helper_Call;
!       else
!          Cond := Build_Static_Check_Helper_Call;
!       end if;
  
        if Exception_Locations_Suppressed then
           Fail :=
--- 8604,8610 ----
  
        --  Build and install the check
  
!       Cond := Build_Helper_Call (Dynamic_Check);
  
        if Exception_Locations_Suppressed then
           Fail :=
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_ch8.adb gcc-16-20260530/gcc/ada/exp_ch8.adb
*** gcc-16-20260523/gcc/ada/exp_ch8.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_ch8.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Ch8 is
*** 160,168 ****
  
        --  Local variables
  
        Decl : Node_Id;
-       Nam  : constant Node_Id   := Name (N);
-       T    : constant Entity_Id := Etype (Defining_Identifier (N));
  
     --  Start of processing for Expand_N_Object_Renaming_Declaration
  
--- 160,170 ----
  
        --  Local variables
  
+       Def_Id : constant Entity_Id := Defining_Identifier (N);
+       Nam    : constant Node_Id   := Name (N);
+       T      : constant Entity_Id := Etype (Def_Id);
+ 
        Decl : Node_Id;
  
     --  Start of processing for Expand_N_Object_Renaming_Declaration
  
*************** package body Exp_Ch8 is
*** 171,177 ****
  
        if Evaluation_Required (Nam) then
           Evaluate_Name (Nam);
!          Set_Is_Renaming_Of_Object (Defining_Identifier (N));
        end if;
  
        --  Deal with construction of subtype in class-wide case
--- 173,179 ----
  
        if Evaluation_Required (Nam) then
           Evaluate_Name (Nam);
!          Set_Is_Renaming_Of_Object (Def_Id);
        end if;
  
        --  Deal with construction of subtype in class-wide case
*************** package body Exp_Ch8 is
*** 179,185 ****
        if Is_Class_Wide_Type (T) then
           Expand_Subtype_From_Expr (N, T, Subtype_Mark (N), Name (N));
           Find_Type (Subtype_Mark (N));
!          Set_Etype (Defining_Identifier (N), Entity (Subtype_Mark (N)));
  
           --  Freeze the class-wide subtype here to ensure that the subtype
           --  and equivalent type are frozen before the renaming.
--- 181,187 ----
        if Is_Class_Wide_Type (T) then
           Expand_Subtype_From_Expr (N, T, Subtype_Mark (N), Name (N));
           Find_Type (Subtype_Mark (N));
!          Set_Etype (Def_Id, Entity (Subtype_Mark (N)));
  
           --  Freeze the class-wide subtype here to ensure that the subtype
           --  and equivalent type are frozen before the renaming.
*************** package body Exp_Ch8 is
*** 200,205 ****
--- 202,238 ----
  
        elsif Present (Unqual_BIP_Iface_Function_Call (Nam)) then
           Make_Build_In_Place_Iface_Call_In_Anonymous_Context (Nam);
+ 
+       --  The renaming of a controlled function call declared at library level
+       --  must be turned into a regular object declaration if the result is not
+       --  returned on the secondary stack because, otherwise, the finalization
+       --  machinery of the library level would have the address of a temporary
+       --  created on the stack of the elaboration routine to hold the result.
+ 
+       elsif Nkind (Nam) = N_Function_Call
+         and then Is_Controlled (T)
+         and then not Needs_Secondary_Stack (T)
+         and then Is_Library_Level_Entity (Def_Id)
+       then
+          Rewrite (N,
+            Make_Object_Declaration (Sloc (N),
+              Defining_Identifier => Def_Id,
+              Constant_Present    => True,
+              Object_Definition   => New_Occurrence_Of (T, Sloc (N)),
+              Expression          => Nam));
+ 
+          --  We do not analyze this object declaration, because all its
+          --  components have already been analyzed, and if we were to go
+          --  ahead and analyze it, we would in effect be trying to generate
+          --  another declaration of Def_Id, which won't do.
+ 
+          Set_Analyzed (N);
+ 
+          --  Therefore we need to set the Has_Completion flag manually
+ 
+          Set_Has_Completion (Def_Id);
+ 
+          return;
        end if;
  
        --  Create renaming entry for debug information. Mark the entity as
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_disp.adb gcc-16-20260530/gcc/ada/exp_disp.adb
*** gcc-16-20260523/gcc/ada/exp_disp.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_disp.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Disp is
*** 1203,1212 ****
           Set_SCIL_Node (SCIL_Related_Node, SCIL_Node);
        end if;
  
!       --  Suppress all checks during the analysis of the expanded code to avoid
!       --  the generation of spurious warnings under ZFP run-time.
! 
!       Analyze_And_Resolve (Call_Node, Call_Typ, Suppress => All_Checks);
  
        Set_Is_Expanded_Dispatching_Call (Call_Node);
     end Expand_Dispatching_Call;
--- 1203,1209 ----
           Set_SCIL_Node (SCIL_Related_Node, SCIL_Node);
        end if;
  
!       Analyze_And_Resolve (Call_Node, Call_Typ);
  
        Set_Is_Expanded_Dispatching_Call (Call_Node);
     end Expand_Dispatching_Call;
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_imgv.adb gcc-16-20260530/gcc/ada/exp_imgv.adb
*** gcc-16-20260523/gcc/ada/exp_imgv.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_imgv.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Imgv is
*** 1047,1056 ****
           return;
        end if;
  
!       --  If Image should be transformed using Put_Image, then do so. See
!       --  Exp_Put_Image for details.
  
!       if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_String, Suppress => All_Checks);
--- 1047,1055 ----
           return;
        end if;
  
!       --  If Image must be turned into Put_Image, then do so
  
!       if Exp_Put_Image.Image_Must_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_String, Suppress => All_Checks);
*************** package body Exp_Imgv is
*** 1860,1869 ****
           return;
        end if;
  
!       --  If Image should be transformed using Put_Image, then do so. See
!       --  Exp_Put_Image for details.
  
!       if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_Wide_String, Suppress => All_Checks);
--- 1859,1867 ----
           return;
        end if;
  
!       --  If Image must be turned into Put_Image, then do so
  
!       if Exp_Put_Image.Image_Must_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_Wide_String, Suppress => All_Checks);
*************** package body Exp_Imgv is
*** 1970,1979 ****
           return;
        end if;
  
!       --  If Image should be transformed using Put_Image, then do so. See
!       --  Exp_Put_Image for details.
  
!       if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve
--- 1968,1976 ----
           return;
        end if;
  
!       --  If Image must be turned into Put_Image, then do so
  
!       if Exp_Put_Image.Image_Must_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_put_image.adb gcc-16-20260530/gcc/ada/exp_put_image.adb
*** gcc-16-20260523/gcc/ada/exp_put_image.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_put_image.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Put_Image is
*** 1240,1250 ****
        return Make_Defining_Identifier (Loc, Sname);
     end Make_Put_Image_Name;
  
!    ---------------------------------
!    -- Image_Should_Call_Put_Image --
!    ---------------------------------
  
!    function Image_Should_Call_Put_Image (N : Node_Id) return Boolean is
     begin
        if Ada_Version < Ada_2022 then
           return False;
--- 1240,1250 ----
        return Make_Defining_Identifier (Loc, Sname);
     end Make_Put_Image_Name;
  
!    -------------------------------
!    -- Image_Must_Call_Put_Image --
!    -------------------------------
  
!    function Image_Must_Call_Put_Image (N : Node_Id) return Boolean is
     begin
        if Ada_Version < Ada_2022 then
           return False;
*************** package body Exp_Put_Image is
*** 1282,1288 ****
  
           return False;
        end;
!    end Image_Should_Call_Put_Image;
  
     ----------------------
     -- Build_Image_Call --
--- 1282,1288 ----
  
           return False;
        end;
!    end Image_Must_Call_Put_Image;
  
     ----------------------
     -- Build_Image_Call --
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_put_image.ads gcc-16-20260530/gcc/ada/exp_put_image.ads
*** gcc-16-20260523/gcc/ada/exp_put_image.ads	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_put_image.ads	Sat May 30 22:32:04 2026
*************** package Exp_Put_Image is
*** 82,90 ****
     function Build_Unknown_Put_Image_Call (N : Node_Id) return Node_Id;
     --  Build a call to Put_Image_Unknown
  
!    function Image_Should_Call_Put_Image (N : Node_Id) return Boolean;
!    --  True if T'Image should call T'Put_Image. N is the attribute_reference
!    --  T'Image.
  
     function Build_Image_Call (N : Node_Id) return Node_Id;
     --  N is a call to T'[[Wide_]Wide_]Image, and this translates it into the
--- 82,90 ----
     function Build_Unknown_Put_Image_Call (N : Node_Id) return Node_Id;
     --  Build a call to Put_Image_Unknown
  
!    function Image_Must_Call_Put_Image (N : Node_Id) return Boolean;
!    --  True if T'Image must be implemented by a call to T'Put_Image. N is the
!    --  attribute reference to T'Image.
  
     function Build_Image_Call (N : Node_Id) return Node_Id;
     --  N is a call to T'[[Wide_]Wide_]Image, and this translates it into the
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_util.adb gcc-16-20260530/gcc/ada/exp_util.adb
*** gcc-16-20260523/gcc/ada/exp_util.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_util.adb	Sat May 30 22:32:04 2026
*************** package body Exp_Util is
*** 8955,8960 ****
--- 8955,8997 ----
          and then Expansion_Delayed (Unqual_N);
     end Is_Delayed_Conditional_Expression;
  
+    --------------------------------
+    -- Is_Distributable_Declaration --
+    --------------------------------
+ 
+    function Is_Distributable_Declaration (N : Node_Id) return Boolean is
+       Obj_Def : Node_Id;
+ 
+    begin
+       --  First limitation: distribution is not implemented for return objects
+ 
+       if Nkind (N) /= N_Object_Declaration
+         or else Is_Return_Object (Defining_Identifier (N))
+       then
+          return False;
+       end if;
+ 
+       Obj_Def := Object_Definition (N);
+ 
+       --  Second limitation: distribution is not implemented for CW types
+ 
+       if Is_Entity_Name (Obj_Def)
+         and then Is_Class_Wide_Type (Entity (Obj_Def))
+       then
+          return False;
+       end if;
+ 
+       --  The declaration of a variable of an unconstrained definite nonlimited
+       --  subtype cannot be distributed because the variable is mutable and the
+       --  expansion of 'Constrained must statically return False for it.
+ 
+       return Constant_Present (N)
+         or else not Is_Entity_Name (Obj_Def)
+         or else Is_Constrained (Entity (Obj_Def))
+         or else not Is_Definite_Subtype (Entity (Obj_Def))
+         or else Is_Inherently_Limited_Type (Entity (Obj_Def));
+    end Is_Distributable_Declaration;
+ 
     --------------------------------------------------
     -- Is_Expanded_Class_Wide_Interface_Object_Decl --
     --------------------------------------------------
*************** package body Exp_Util is
*** 12415,12421 ****
                and then Is_Entity_Name (Name (Init_Call))
                and then Entity (Name (Init_Call)) = Init_Proc
              then
!                return Init_Call;
              end if;
  
              Next (Init_Call);
--- 12452,12466 ----
                and then Is_Entity_Name (Name (Init_Call))
                and then Entity (Name (Init_Call)) = Init_Proc
              then
!                declare
!                   Act : constant Node_Id :=
!                     Unqual_Conv (First (Parameter_Associations (Init_Call)));
! 
!                begin
!                   if Is_Entity_Name (Act) and then Entity (Act) = Var then
!                      return Init_Call;
!                   end if;
!                end;
              end if;
  
              Next (Init_Call);
*************** package body Exp_Util is
*** 12745,12751 ****
                     or else Nkind (Prefix (Exp)) /= N_Aggregate)
          and then not Is_Name_Reference (Prefix (Exp))
        then
!          Remove_Side_Effects (Prefix (Exp), Name_Req, Variable_Ref);
           goto Leave;
  
        --  If this is an elementary or a small not-by-reference record type, and
--- 12790,12805 ----
                     or else Nkind (Prefix (Exp)) /= N_Aggregate)
          and then not Is_Name_Reference (Prefix (Exp))
        then
!          Remove_Side_Effects
!            (Exp                => Prefix (Exp),
!             Name_Req           => Name_Req,
!             Renaming_Req       => Renaming_Req,
!             Variable_Ref       => False,
!             Related_Id         => Related_Id,
!             Is_Low_Bound       => False,
!             Is_High_Bound      => False,
!             Discr_Number       => 0,
!             Check_Side_Effects => Check_Side_Effects);
           goto Leave;
  
        --  If this is an elementary or a small not-by-reference record type, and
*************** package body Exp_Util is
*** 12847,12853 ****
        elsif Nkind (Exp) = N_Unchecked_Type_Conversion
          and then Nkind (Expression (Exp)) = N_Explicit_Dereference
        then
!          Remove_Side_Effects (Expression (Exp), Name_Req, Variable_Ref);
           goto Leave;
  
        --  If this is a type conversion, leave the type conversion and remove
--- 12901,12916 ----
        elsif Nkind (Exp) = N_Unchecked_Type_Conversion
          and then Nkind (Expression (Exp)) = N_Explicit_Dereference
        then
!          Remove_Side_Effects
!            (Exp                => Expression (Exp),
!             Name_Req           => Name_Req,
!             Renaming_Req       => Renaming_Req,
!             Variable_Ref       => Variable_Ref,
!             Related_Id         => Related_Id,
!             Is_Low_Bound       => Is_Low_Bound,
!             Is_High_Bound      => Is_High_Bound,
!             Discr_Number       => Discr_Number,
!             Check_Side_Effects => Check_Side_Effects);
           goto Leave;
  
        --  If this is a type conversion, leave the type conversion and remove
*************** package body Exp_Util is
*** 12860,12866 ****
        elsif Nkind (Exp) = N_Type_Conversion
          and then Etype (Expression (Exp)) /= Universal_Integer
        then
!          Remove_Side_Effects (Expression (Exp), Name_Req, Variable_Ref);
           goto Leave;
  
        --  If this is an unchecked conversion that Gigi can't handle, make
--- 12923,12938 ----
        elsif Nkind (Exp) = N_Type_Conversion
          and then Etype (Expression (Exp)) /= Universal_Integer
        then
!          Remove_Side_Effects
!            (Exp                => Expression (Exp),
!             Name_Req           => Name_Req,
!             Renaming_Req       => Renaming_Req,
!             Variable_Ref       => Variable_Ref,
!             Related_Id         => Related_Id,
!             Is_Low_Bound       => Is_Low_Bound,
!             Is_High_Bound      => Is_High_Bound,
!             Discr_Number       => Discr_Number,
!             Check_Side_Effects => Check_Side_Effects);
           goto Leave;
  
        --  If this is an unchecked conversion that Gigi can't handle, make
*************** package body Exp_Util is
*** 12941,12947 ****
          and then Nkind (Prefix (Exp)) = N_Function_Call
          and then Is_Array_Type (Und_Typ)
        then
!          Remove_Side_Effects (Prefix (Exp), Name_Req, Variable_Ref);
           goto Leave;
  
        --  Otherwise we generate a reference to the expression
--- 13013,13028 ----
          and then Nkind (Prefix (Exp)) = N_Function_Call
          and then Is_Array_Type (Und_Typ)
        then
!          Remove_Side_Effects
!            (Exp                => Prefix (Exp),
!             Name_Req           => Name_Req,
!             Renaming_Req       => Renaming_Req,
!             Variable_Ref       => Variable_Ref,
!             Related_Id         => Related_Id,
!             Is_Low_Bound       => Is_Low_Bound,
!             Is_High_Bound      => Is_High_Bound,
!             Discr_Number       => Discr_Number,
!             Check_Side_Effects => Check_Side_Effects);
           goto Leave;
  
        --  Otherwise we generate a reference to the expression
*************** package body Exp_Util is
*** 13808,13814 ****
        --  We do not analyze this renaming declaration, because all its
        --  components have already been analyzed, and if we were to go
        --  ahead and analyze it, we would in effect be trying to generate
!       --  another declaration of X, which won't do.
  
        Set_Renamed_Object (Def_Id, Nam);
        Set_Analyzed (N);
--- 13889,13895 ----
        --  We do not analyze this renaming declaration, because all its
        --  components have already been analyzed, and if we were to go
        --  ahead and analyze it, we would in effect be trying to generate
!       --  another declaration of Def_Id, which won't do.
  
        Set_Renamed_Object (Def_Id, Nam);
        Set_Analyzed (N);
diff -Nrcpad gcc-16-20260523/gcc/ada/exp_util.ads gcc-16-20260530/gcc/ada/exp_util.ads
*** gcc-16-20260523/gcc/ada/exp_util.ads	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/exp_util.ads	Sat May 30 22:32:04 2026
*************** package Exp_Util is
*** 830,835 ****
--- 830,842 ----
     --  Return True if N is a type conversion, or a dereference thereof, or a
     --  reference to a formal parameter.
  
+    function Is_Distributable_Declaration (N : Node_Id) return Boolean;
+    --  Return True if N is an object declaration that can be distributed into
+    --  the dependent expressions of a conditional expression, given that the
+    --  conditional expression is the initialization expression of N. Such a
+    --  distribution avoids a copy operation and is required for limited types
+    --  and, more generally, desirable for all by-reference types.
+ 
     function Is_Expanded_Class_Wide_Interface_Object_Decl
        (N : Node_Id) return Boolean;
     --  Determine if N is the expanded code for a class-wide interface type
diff -Nrcpad gcc-16-20260523/gcc/ada/gen_il-fields.ads gcc-16-20260530/gcc/ada/gen_il-fields.ads
*** gcc-16-20260523/gcc/ada/gen_il-fields.ads	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/gen_il-fields.ads	Sat May 30 22:32:04 2026
*************** package Gen_IL.Fields is
*** 384,389 ****
--- 384,390 ----
        SCIL_Tag_Value,
        SCIL_Target_Prim,
        Scope,
+       Scope_Link,
        Select_Alternatives,
        Selector_Name,
        Selector_Names,
diff -Nrcpad gcc-16-20260523/gcc/ada/gen_il-gen-gen_entities.adb gcc-16-20260530/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-16-20260523/gcc/ada/gen_il-gen-gen_entities.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/gen_il-gen-gen_entities.adb	Sat May 30 22:32:04 2026
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 942,948 ****
          Sm (Extra_Accessibility_Of_Result, Node_Id),
          Sm (Extra_Formals, Node_Id),
          Sm (Extra_Formals_Known, Flag),
!         Sm (Needs_No_Actuals, Flag)));
  
     Ab (Overloadable_Kind, Entity_Kind,
         (Sm (Renamed_Or_Alias, Node_Id),
--- 942,949 ----
          Sm (Extra_Accessibility_Of_Result, Node_Id),
          Sm (Extra_Formals, Node_Id),
          Sm (Extra_Formals_Known, Flag),
!         Sm (Needs_No_Actuals, Flag),
!         Sm (Scope_Depth_Value, Unat)));
  
     Ab (Overloadable_Kind, Entity_Kind,
         (Sm (Renamed_Or_Alias, Node_Id),
diff -Nrcpad gcc-16-20260523/gcc/ada/gen_il-gen-gen_nodes.adb gcc-16-20260530/gcc/ada/gen_il-gen-gen_nodes.adb
*** gcc-16-20260523/gcc/ada/gen_il-gen-gen_nodes.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/gen_il-gen-gen_nodes.adb	Sat May 30 22:32:04 2026
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 364,370 ****
  
     Cc (N_Expression_With_Actions, N_Subexpr,
         (Sy (Actions, List_Id, Default_No_List),
!         Sy (Expression, Node_Id, Default_Empty)));
  
     Cc (N_External_Initializer, N_Subexpr,
         (Sy (File_Index, Source_File_Index)));
--- 364,371 ----
  
     Cc (N_Expression_With_Actions, N_Subexpr,
         (Sy (Actions, List_Id, Default_No_List),
!         Sy (Expression, Node_Id, Default_Empty),
!         Sm (Scope_Link, Node_Id)));
  
     Cc (N_External_Initializer, N_Subexpr,
         (Sy (File_Index, Source_File_Index)));
diff -Nrcpad gcc-16-20260523/gcc/ada/gnat_rm.texi gcc-16-20260530/gcc/ada/gnat_rm.texi
*** gcc-16-20260523/gcc/ada/gnat_rm.texi	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/gnat_rm.texi	Sat May 30 22:32:04 2026
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT Reference Manual , Jan 09, 2026
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT Reference Manual , May 19, 2026
  
  AdaCore
  
*************** Curated Extensions
*** 912,917 ****
--- 912,918 ----
  * Constrained attribute for generic objects:: 
  * Static aspect on intrinsic functions:: 
  * First Controlling Parameter:: 
+ * Unsigned_Base_Range aspect:: 
  * Generalized Finalization:: 
  
  Deep delta Aggregates
*************** prefix) yields a static Boolean value th
*** 11300,11312 ****
  @geindex Finalization_Size
  
  The prefix of attribute @code{Finalization_Size} must be an object or
! a non-class-wide type. This attribute returns the size of any hidden data
  reserved by the compiler to handle finalization-related actions. The type of
  the attribute is `universal_integer'.
  
  @code{Finalization_Size} yields a value of zero for a type with no controlled
  parts, an object whose type has no controlled parts, or an object of a
  class-wide type whose tag denotes a type with no controlled parts.
  
  Note that only heap-allocated objects contain finalization data.
  
--- 11301,11315 ----
  @geindex Finalization_Size
  
  The prefix of attribute @code{Finalization_Size} must be an object or
! a type. This attribute returns the size of any hidden data
  reserved by the compiler to handle finalization-related actions. The type of
  the attribute is `universal_integer'.
  
  @code{Finalization_Size} yields a value of zero for a type with no controlled
  parts, an object whose type has no controlled parts, or an object of a
  class-wide type whose tag denotes a type with no controlled parts.
+ For a class-wide type, @code{Finalization_Size} yields a non-zero value except
+ if a No_Finalization restriction is in effect, in which case it yields zero.
  
  Note that only heap-allocated objects contain finalization data.
  
*************** Ada issue AI12-061 introduces a new cons
*** 27788,27794 ****
  component associations to be parameterized by a loop variable, for example:
  
  @example
! Array (1 .. 10) of Integer :=
    (for I in 1 .. 10 => I ** 2);
  type Matrix is
  array
--- 27791,27797 ----
  component associations to be parameterized by a loop variable, for example:
  
  @example
! array (1 .. 10) of Integer :=
    (for I in 1 .. 10 => I ** 2);
  type Matrix is
  array
*************** RM references: 3.03 (23.2/3) 8.05.01 (4.
*** 30625,30631 ****
  
  @itemize *
  
! @item
  `AI12-0402 Master of a function call with elementary result type (2026-01-07)'
  
  This AI restricts the rule that makes the master of a function call, which
--- 30628,30634 ----
  
  @itemize *
  
! @item 
  `AI12-0402 Master of a function call with elementary result type (2026-01-07)'
  
  This AI restricts the rule that makes the master of a function call, which
*************** Features activated via @code{-gnatX} or
*** 30811,30816 ****
--- 30814,30820 ----
  * Constrained attribute for generic objects:: 
  * Static aspect on intrinsic functions:: 
  * First Controlling Parameter:: 
+ * Unsigned_Base_Range aspect:: 
  * Generalized Finalization:: 
  
  @end menu
*************** declare
*** 31087,31095 ****
     S : Segment := (1 .. 2 => (0, 0));
     T : Triangle := (1 .. 3 => (1 .. 2 => (0, 0)));
  begin
!    S := (S with delta (1).X | (2).Y => 12, (1).Y => 15);
  
!    pragma Assert (S (1).X = 12);
     pragma Assert (S (2).Y = 12);
     pragma Assert (S (1).Y = 15);
  
--- 31091,31099 ----
     S : Segment := (1 .. 2 => (0, 0));
     T : Triangle := (1 .. 3 => (1 .. 2 => (0, 0)));
  begin
!    S := (S with delta (1).X => 11, (2).Y => 12, (1).Y => 15);
  
!    pragma Assert (S (1).X = 11);
     pragma Assert (S (2).Y = 12);
     pragma Assert (S (1).Y = 15);
  
*************** The Ada 202x @code{Static} aspect can be
*** 31414,31420 ****
  and the compiler will evaluate some of these intrinsics statically, in
  particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
! @node First Controlling Parameter,Generalized Finalization,Static aspect on intrinsic functions,Curated Extensions
  @anchor{gnat_rm/gnat_language_extensions first-controlling-parameter}@anchor{45d}
  @subsection First Controlling Parameter
  
--- 31418,31424 ----
  and the compiler will evaluate some of these intrinsics statically, in
  particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
! @node First Controlling Parameter,Unsigned_Base_Range aspect,Static aspect on intrinsic functions,Curated Extensions
  @anchor{gnat_rm/gnat_language_extensions first-controlling-parameter}@anchor{45d}
  @subsection First Controlling Parameter
  
*************** overriding a primitive or creating new o
*** 31514,31521 ****
  The result of a function is never a controlling result.
  @end itemize
  
! @node Generalized Finalization,,First Controlling Parameter,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions generalized-finalization}@anchor{45e}
  @subsection Generalized Finalization
  
  
--- 31518,31551 ----
  The result of a function is never a controlling result.
  @end itemize
  
! @node Unsigned_Base_Range aspect,Generalized Finalization,First Controlling Parameter,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions unsigned-base-range-aspect}@anchor{45e}
! @subsection @code{Unsigned_Base_Range} aspect
! 
! 
! A new pragma/aspect, @code{Unsigned_Base_Range}, is introduced to explicitly
! enforce the use of an unsigned base type for signed integer types.
! RM-3.5.4(9) mandates a symmetric base range for signed integer types. This
! requirement often requires the use of larger data types for arithmetic
! operations, potentially introducing undesirable run-time overhead and
! performance penalties, particularly in embedded systems. For instance,
! on a 64-bit architecture, a 64-bit multiplication can be performed with
! a single hardware instruction, whereas a 128-bit multiplication requires
! multiple instructions and intermediate steps.
! 
! Here is an example of this feature:
! 
! @example
! type Uns_64 is range 0 .. 2 ** 64 - 1
!   with Size => 64,
!        Unsigned_Base_Range => True;
! @end example
! 
! It ensures that arithmetic operations of type @code{Uns_64} are carried
! out using 64 bits.
! 
! @node Generalized Finalization,,Unsigned_Base_Range aspect,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions generalized-finalization}@anchor{45f}
  @subsection Generalized Finalization
  
  
*************** procedure Finalize   (Obj : in out T);
*** 31543,31550 ****
  procedure Initialize (Obj : in out T);
  @end example
  
! The three procedures have the same profile, with a single @code{in out} parameter,
! and also have the same dynamic semantics as for controlled types:
  
  @quotation
  
--- 31573,31581 ----
  procedure Initialize (Obj : in out T);
  @end example
  
! The three procedures must be primitive operations of @code{T} and have a single
! @code{in out} parameter. They need not be all specified by the aspect. If they
! are specified, they have the same dynamic semantics as for controlled types:
  
  @quotation
  
*************** in this case.
*** 31586,31592 ****
  
  @item 
  The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{45f,,No_Raise aspect} specified for them. In particular, the
  compiler has permission to enforce none of the guarantees specified by the
  RM 7.6.1 (14/1) and subsequent subclauses.
  @end itemize
--- 31617,31623 ----
  
  @item 
  The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{460,,No_Raise aspect} specified for them. In particular, the
  compiler has permission to enforce none of the guarantees specified by the
  RM 7.6.1 (14/1) and subsequent subclauses.
  @end itemize
*************** end P;
*** 31647,31653 ****
  @end menu
  
  @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{460}
  @subsubsection Finalizable tagged types
  
  
--- 31678,31684 ----
  @end menu
  
  @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{461}
  @subsubsection Finalizable tagged types
  
  
*************** dispatching whenever it makes sense, i.e
*** 31657,31663 ****
  class-wide type and the class includes at least one finalizable tagged type.
  
  @node Composite types,Interoperability with controlled types,Finalizable tagged types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions composite-types}@anchor{461}
  @subsubsection Composite types
  
  
--- 31688,31694 ----
  class-wide type and the class includes at least one finalizable tagged type.
  
  @node Composite types,Interoperability with controlled types,Finalizable tagged types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions composite-types}@anchor{462}
  @subsubsection Composite types
  
  
*************** in order to call the primitives of their
*** 31667,31673 ****
  the same as for controlled components of composite types.
  
  @node Interoperability with controlled types,,Composite types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions interoperability-with-controlled-types}@anchor{462}
  @subsubsection Interoperability with controlled types
  
  
--- 31698,31704 ----
  the same as for controlled components of composite types.
  
  @node Interoperability with controlled types,,Composite types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions interoperability-with-controlled-types}@anchor{463}
  @subsubsection Interoperability with controlled types
  
  
*************** versa, but the stricter dynamic semantic
*** 31677,31683 ****
  types, is applied in this case.
  
  @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6c}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{463}
  @section Experimental Language Extensions
  
  
--- 31708,31714 ----
  types, is applied in this case.
  
  @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6c}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{464}
  @section Experimental Language Extensions
  
  
*************** Features activated via @code{-gnatX0} or
*** 31703,31709 ****
  @end menu
  
  @node Conditional when constructs,Implicit With,,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{464}
  @subsection Conditional when constructs
  
  
--- 31734,31740 ----
  @end menu
  
  @node Conditional when constructs,Implicit With,,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{465}
  @subsection Conditional when constructs
  
  
*************** end;
*** 31772,31778 ****
  @end example
  
  @node Implicit With,Storage Model,Conditional when constructs,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions implicit-with}@anchor{465}
  @subsection Implicit With
  
  
--- 31803,31809 ----
  @end example
  
  @node Implicit With,Storage Model,Conditional when constructs,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions implicit-with}@anchor{466}
  @subsection Implicit With
  
  
*************** end;
*** 31789,31795 ****
  @end example
  
  @node Storage Model,Attribute Super,Implicit With,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{466}
  @subsection Storage Model
  
  
--- 31820,31826 ----
  @end example
  
  @node Storage Model,Attribute Super,Implicit With,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{467}
  @subsection Storage Model
  
  
*************** memory models, in particular to support
*** 31806,31812 ****
  @end menu
  
  @node Aspect Storage_Model_Type,Aspect Designated_Storage_Model,,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-storage-model-type}@anchor{467}
  @subsubsection Aspect Storage_Model_Type
  
  
--- 31837,31843 ----
  @end menu
  
  @node Aspect Storage_Model_Type,Aspect Designated_Storage_Model,,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-storage-model-type}@anchor{468}
  @subsubsection Aspect Storage_Model_Type
  
  
*************** end CUDA_Memory;
*** 31940,31946 ****
  @end example
  
  @node Aspect Designated_Storage_Model,Legacy Storage Pools,Aspect Storage_Model_Type,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-designated-storage-model}@anchor{468}
  @subsubsection Aspect Designated_Storage_Model
  
  
--- 31971,31977 ----
  @end example
  
  @node Aspect Designated_Storage_Model,Legacy Storage Pools,Aspect Storage_Model_Type,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-designated-storage-model}@anchor{469}
  @subsubsection Aspect Designated_Storage_Model
  
  
*************** begin
*** 32018,32024 ****
  @end example
  
  @node Legacy Storage Pools,,Aspect Designated_Storage_Model,Storage Model
! @anchor{gnat_rm/gnat_language_extensions legacy-storage-pools}@anchor{469}
  @subsubsection Legacy Storage Pools
  
  
--- 32049,32055 ----
  @end example
  
  @node Legacy Storage Pools,,Aspect Designated_Storage_Model,Storage Model
! @anchor{gnat_rm/gnat_language_extensions legacy-storage-pools}@anchor{46a}
  @subsubsection Legacy Storage Pools
  
  
*************** type Acc is access Integer_Array with St
*** 32069,32075 ****
  can still be accepted as a shortcut for the new syntax.
  
  @node Attribute Super,Simpler Accessibility Model,Storage Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{46a}
  @subsection Attribute Super
  
  
--- 32100,32106 ----
  can still be accepted as a shortcut for the new syntax.
  
  @node Attribute Super,Simpler Accessibility Model,Storage Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{46b}
  @subsection Attribute Super
  
  
*************** end;
*** 32104,32110 ****
  @end example
  
  @node Simpler Accessibility Model,Case pattern matching,Attribute Super,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{46b}
  @subsection Simpler Accessibility Model
  
  
--- 32135,32141 ----
  @end example
  
  @node Simpler Accessibility Model,Case pattern matching,Attribute Super,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{46c}
  @subsection Simpler Accessibility Model
  
  
*************** All of the refined rules are compatible
*** 32135,32141 ****
  @end menu
  
  @node Stand-alone objects,Subprogram parameters,,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions stand-alone-objects}@anchor{46c}
  @subsubsection Stand-alone objects
  
  
--- 32166,32172 ----
  @end menu
  
  @node Stand-alone objects,Subprogram parameters,,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions stand-alone-objects}@anchor{46d}
  @subsubsection Stand-alone objects
  
  
*************** of the RM 4.6 rule “The accessibility
*** 32183,32189 ****
  statically deeper than that of the target type …”.
  
  @node Subprogram parameters,Function results,Stand-alone objects,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions subprogram-parameters}@anchor{46d}
  @subsubsection Subprogram parameters
  
  
--- 32214,32220 ----
  statically deeper than that of the target type …”.
  
  @node Subprogram parameters,Function results,Stand-alone objects,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions subprogram-parameters}@anchor{46e}
  @subsubsection Subprogram parameters
  
  
*************** end;
*** 32276,32282 ****
  @end example
  
  @node Function results,,Subprogram parameters,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions function-results}@anchor{46e}
  @subsubsection Function results
  
  
--- 32307,32313 ----
  @end example
  
  @node Function results,,Subprogram parameters,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions function-results}@anchor{46f}
  @subsubsection Function results
  
  
*************** end;
*** 32404,32410 ****
  @end example
  
  @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler Accessibility Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{46f}
  @subsection Case pattern matching
  
  
--- 32435,32441 ----
  @end example
  
  @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler Accessibility Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{470}
  @subsection Case pattern matching
  
  
*************** message generated in such cases is usual
*** 32534,32540 ****
  case statement with composite selector type”.
  
  @node Mutably Tagged Types with Size’Class Aspect,No_Raise aspect,Case pattern matching,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{470}
  @subsection Mutably Tagged Types with Size’Class Aspect
  
  
--- 32565,32571 ----
  case statement with composite selector type”.
  
  @node Mutably Tagged Types with Size’Class Aspect,No_Raise aspect,Case pattern matching,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{471}
  @subsection Mutably Tagged Types with Size’Class Aspect
  
  
*************** parameter exists (that is, before leavin
*** 32705,32711 ****
  This is analogous to the RM 6.4.1(18) rule about discriminated parameters.
  
  @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Mutably Tagged Types with Size’Class Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions id3}@anchor{471}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{45f}
  @subsection No_Raise aspect
  
  
--- 32736,32742 ----
  This is analogous to the RM 6.4.1(18) rule about discriminated parameters.
  
  @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Mutably Tagged Types with Size’Class Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions id3}@anchor{472}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{460}
  @subsection No_Raise aspect
  
  
*************** be raised during the execution of the su
*** 32715,32721 ****
  this execution and @code{Program_Error} is propagated to the caller.
  
  @node Inference of Dependent Types in Generic Instantiations,External_Initialization Aspect,No_Raise aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations}@anchor{472}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
--- 32746,32752 ----
  this execution and @code{Program_Error} is propagated to the caller.
  
  @node Inference of Dependent Types in Generic Instantiations,External_Initialization Aspect,No_Raise aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations}@anchor{473}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
*************** package Int_Array_Operations is new Arra
*** 32792,32798 ****
  @end example
  
  @node External_Initialization Aspect,Finally construct,Inference of Dependent Types in Generic Instantiations,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions external-initialization-aspect}@anchor{473}
  @subsection External_Initialization Aspect
  
  
--- 32823,32829 ----
  @end example
  
  @node External_Initialization Aspect,Finally construct,Inference of Dependent Types in Generic Instantiations,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions external-initialization-aspect}@anchor{474}
  @subsection External_Initialization Aspect
  
  
*************** The maximum size of loaded files is limi
*** 32833,32839 ****
  @end cartouche
  
  @node Finally construct,Continue statement,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{474}
  @subsection Finally construct
  
  
--- 32864,32870 ----
  @end cartouche
  
  @node Finally construct,Continue statement,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{475}
  @subsection Finally construct
  
  
*************** another sequence of statements is comple
*** 32842,32847 ****
--- 32873,32881 ----
  
  This feature is similar to the one with the same name in other languages such as Java.
  
+ Note that @code{finally} is a keyword but it is not a reserved word. This is a
+ configuration that does not exist in standard Ada.
+ 
  @menu
  * Syntax: Syntax<2>. 
  * Legality Rules: Legality Rules<2>. 
*************** This feature is similar to the one with
*** 32850,32856 ****
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{475}
  @subsubsection Syntax
  
  
--- 32884,32890 ----
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{476}
  @subsubsection Syntax
  
  
*************** handled_sequence_of_statements ::=
*** 32865,32871 ****
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{476}
  @subsubsection Legality Rules
  
  
--- 32899,32905 ----
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{477}
  @subsubsection Legality Rules
  
  
*************** to be transferred outside the finally pa
*** 32875,32881 ****
  Goto & exit where the target is outside of the finally’s @code{sequence_of_statements} are forbidden
  
  @node Dynamic Semantics<2>,,Legality Rules<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id6}@anchor{477}
  @subsubsection Dynamic Semantics
  
  
--- 32909,32915 ----
  Goto & exit where the target is outside of the finally’s @code{sequence_of_statements} are forbidden
  
  @node Dynamic Semantics<2>,,Legality Rules<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id6}@anchor{478}
  @subsubsection Dynamic Semantics
  
  
*************** execution, that is the finally block mus
*** 32890,32896 ****
  aborted, or if the control is transferred out of the block.
  
  @node Continue statement,Destructors,Finally construct,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions continue-statement}@anchor{478}
  @subsection Continue statement
  
  
--- 32924,32930 ----
  aborted, or if the control is transferred out of the block.
  
  @node Continue statement,Destructors,Finally construct,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions continue-statement}@anchor{479}
  @subsection Continue statement
  
  
*************** Note that @code{continue} is a keyword b
*** 32908,32914 ****
  configuration that does not exist in standard Ada.
  
  @node Destructors,Structural Generic Instantiation,Continue statement,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions destructors}@anchor{479}
  @subsection Destructors
  
  
--- 32942,32948 ----
  configuration that does not exist in standard Ada.
  
  @node Destructors,Structural Generic Instantiation,Continue statement,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions destructors}@anchor{47a}
  @subsection Destructors
  
  
*************** When an object of type @code{T2} is fina
*** 32962,32968 ****
  @code{T2'Destructor}, and then a call to @code{T1'Destructor} on the object.
  
  @node Structural Generic Instantiation,,Destructors,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions structural-generic-instantiation}@anchor{47a}
  @subsection Structural Generic Instantiation
  
  
--- 32996,33002 ----
  @code{T2'Destructor}, and then a call to @code{T1'Destructor} on the object.
  
  @node Structural Generic Instantiation,,Destructors,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions structural-generic-instantiation}@anchor{47b}
  @subsection Structural Generic Instantiation
  
  
*************** where a name is accepted by the language
*** 32988,32994 ****
  @end menu
  
  @node Syntax<3>,Legality Rules<3>,,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id7}@anchor{47b}
  @subsubsection Syntax
  
  
--- 33022,33028 ----
  @end menu
  
  @node Syntax<3>,Legality Rules<3>,,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id7}@anchor{47c}
  @subsubsection Syntax
  
  
*************** structural_generic_instance_name ::= nam
*** 33000,33006 ****
  @end example
  
  @node Legality Rules<3>,Static Semantics,Syntax<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id8}@anchor{47c}
  @subsubsection Legality Rules
  
  
--- 33034,33040 ----
  @end example
  
  @node Legality Rules<3>,Static Semantics,Syntax<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id8}@anchor{47d}
  @subsubsection Legality Rules
  
  
*************** generic subprogram may be present in a s
*** 33026,33032 ****
  whole-partition optimization is performed (e.g., via LTO).
  
  @node Static Semantics,,Legality Rules<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions static-semantics}@anchor{47d}
  @subsubsection Static Semantics
  
  
--- 33060,33066 ----
  whole-partition optimization is performed (e.g., via LTO).
  
  @node Static Semantics,,Legality Rules<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions static-semantics}@anchor{47e}
  @subsubsection Static Semantics
  
  
*************** actual parameters. This instance is uniq
*** 33036,33042 ****
  generic subprogram instantiation is automatically demoted to a local
  instantiation as described under Legality Rules.
  
- 
  Example:
  
  @example
--- 33070,33075 ----
*************** package Q is
*** 33073,33083 ****
  end Q;
  @end example
  
! The reason is that @code{Ada.Containers.Vectors}, @code{Positive} and @code{Q.T}
! being library-level entities, the structural instance @code{Ada.Containers.Vectors(Positive,T)} is a library unit with a dependence
  on @code{Q} and, therefore, cannot be referenced from within @code{Q}. This
! restriction applies to structural instantiations of generic packages. The simple
! way out is to declare a traditional instantiation in this case:
  
  @example
  with Ada.Containers.Vectors;
--- 33106,33116 ----
  end Q;
  @end example
  
! The reason is that @code{Ada.Containers.Vectors}, @code{Positive} and @code{Q.T} being
! library-level entities, the structural instance @code{Ada.Containers.Vectors(Positive,T)} is a library unit with a dependence
  on @code{Q} and, therefore, cannot be referenced from within @code{Q}. This
! restriction applies to structural instantiations of generic packages. The
! simple way out is to declare a traditional instantiation in this case:
  
  @example
  with Ada.Containers.Vectors;
*************** package body Q is
*** 33133,33143 ****
  end Q;
  @end example
  
! is legal: since @code{T} and @code{T_Access} are local entities of @code{Q},
! the structural instantiation of @code{Ada.Unchecked_Deallocation} is demoted
! to a local instantiation rather than producing an error. Note that the
! uniqueness guarantee no longer holds in this case and several instances of
! the generic subprogram may be present in a single partition.
  
  The first example can be rewritten in a less verbose manner:
  
--- 33166,33176 ----
  end Q;
  @end example
  
! is legal: since @code{T} and @code{T_Access} are local entities of @code{Q}, the
! structural instantiation of @code{Ada.Unchecked_Deallocation} is demoted to a
! local instantiation rather than producing an error. Note that the uniqueness
! guarantee no longer holds in this case and several instances of the generic
! subprogram may be present in a single partition.
  
  The first example can be rewritten in a less verbose manner:
  
*************** end;
*** 33171,33177 ****
  @end example
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{47e}@anchor{gnat_rm/security_hardening_features id1}@anchor{47f}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
--- 33204,33210 ----
  @end example
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{47f}@anchor{gnat_rm/security_hardening_features id1}@anchor{480}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
*************** These features are supported only by the
*** 33195,33201 ****
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{480}
  @section Register Scrubbing
  
  
--- 33228,33234 ----
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{481}
  @section Register Scrubbing
  
  
*************** programming languages, see @cite{Using t
*** 33231,33237 ****
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{481}
  @section Stack Scrubbing
  
  
--- 33264,33270 ----
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{482}
  @section Stack Scrubbing
  
  
*************** Bar_Callable_Ptr.
*** 33375,33381 ****
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{482}
  @section Hardened Conditionals
  
  
--- 33408,33414 ----
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{483}
  @section Hardened Conditionals
  
  
*************** be used with other programming languages
*** 33465,33471 ****
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{483}
  @section Hardened Booleans
  
  
--- 33498,33504 ----
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{484}
  @section Hardened Booleans
  
  
*************** and more details on that attribute, see
*** 33526,33532 ****
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{484}
  @section Control Flow Redundancy
  
  
--- 33559,33565 ----
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{485}
  @section Control Flow Redundancy
  
  
*************** see @cite{Using the GNU Compiler Collect
*** 33694,33700 ****
  can be used with other programming languages supported by GCC.
  
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{485}@anchor{gnat_rm/obsolescent_features id1}@anchor{486}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
--- 33727,33733 ----
  can be used with other programming languages supported by GCC.
  
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{486}@anchor{gnat_rm/obsolescent_features id1}@anchor{487}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
*************** historical compatibility purposes.
*** 33714,33720 ****
  @end menu
  
  @node PolyORB,pragma No_Run_Time,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{487}@anchor{gnat_rm/obsolescent_features polyorb}@anchor{272}
  @section PolyORB
  
  
--- 33747,33753 ----
  @end menu
  
  @node PolyORB,pragma No_Run_Time,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{488}@anchor{gnat_rm/obsolescent_features polyorb}@anchor{272}
  @section PolyORB
  
  
*************** release 28. After this release, there wi
*** 33723,33729 ****
  product. Contact AdaCore support to get recommendations for replacements.
  
  @node pragma No_Run_Time,pragma Ravenscar,PolyORB,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{488}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{489}
  @section pragma No_Run_Time
  
  
--- 33756,33762 ----
  product. Contact AdaCore support to get recommendations for replacements.
  
  @node pragma No_Run_Time,pragma Ravenscar,PolyORB,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{489}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{48a}
  @section pragma No_Run_Time
  
  
*************** preferred usage is to use an appropriate
*** 33736,33742 ****
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{48a}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{48b}
  @section pragma Ravenscar
  
  
--- 33769,33775 ----
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{48b}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{48c}
  @section pragma Ravenscar
  
  
*************** The pragma @code{Ravenscar} has exactly
*** 33745,33751 ****
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{48c}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{48d}
  @section pragma Restricted_Run_Time
  
  
--- 33778,33784 ----
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{48d}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{48e}
  @section pragma Restricted_Run_Time
  
  
*************** preferred since the Ada 2005 pragma @cod
*** 33755,33761 ****
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id6}@anchor{48e}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{48f}
  @section pragma Task_Info
  
  
--- 33788,33794 ----
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id6}@anchor{48f}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{490}
  @section pragma Task_Info
  
  
*************** in the spec of package System.Task_Info
*** 33781,33787 ****
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{490}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{491}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
--- 33814,33820 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{491}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{492}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
*************** to support the @code{Task_Info} pragma.
*** 33791,33797 ****
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{492}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{493}
  @chapter Compatibility and Porting Guide
  
  
--- 33824,33830 ----
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{493}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{494}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 33813,33819 ****
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{494}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{495}
  @section Writing Portable Fixed-Point Declarations
  
  
--- 33846,33852 ----
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{495}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{496}
  @section Writing Portable Fixed-Point Declarations
  
  
*************** If you follow this scheme you will be gu
*** 33935,33941 ****
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{496}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{497}
  @section Compatibility with Ada 83
  
  
--- 33968,33974 ----
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{497}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{498}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 33963,33969 ****
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{498}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{499}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
--- 33996,34002 ----
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{499}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{49a}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** the fix is usually simply to add the @co
*** 34063,34069 ****
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{49a}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{49b}
  @subsection More deterministic semantics
  
  
--- 34096,34102 ----
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{49b}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{49c}
  @subsection More deterministic semantics
  
  
*************** which open select branches are executed.
*** 34091,34097 ****
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{49c}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{49d}
  @subsection Changed semantics
  
  
--- 34124,34130 ----
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{49d}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{49e}
  @subsection Changed semantics
  
  
*************** covers only the restricted range.
*** 34133,34139 ****
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{49e}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{49f}
  @subsection Other language compatibility issues
  
  
--- 34166,34172 ----
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{49f}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{4a0}
  @subsection Other language compatibility issues
  
  
*************** include @code{pragma Interface} and the
*** 34166,34172 ****
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{4a0}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{4a1}
  @section Compatibility between Ada 95 and Ada 2005
  
  
--- 34199,34205 ----
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{4a1}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{4a2}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** can declare a function returning a value
*** 34238,34244 ****
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{4a2}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{4a3}
  @section Implementation-dependent characteristics
  
  
--- 34271,34277 ----
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{4a3}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{4a4}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 34261,34267 ****
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{4a4}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{4a5}
  @subsection Implementation-defined pragmas
  
  
--- 34294,34300 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{4a5}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{4a6}
  @subsection Implementation-defined pragmas
  
  
*************** avoiding compiler rejection of units tha
*** 34283,34289 ****
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{4a6}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{4a7}
  @subsection Implementation-defined attributes
  
  
--- 34316,34322 ----
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{4a7}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{4a8}
  @subsection Implementation-defined attributes
  
  
*************** Ada 83, GNAT supplies the attributes @co
*** 34297,34303 ****
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{4a8}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{4a9}
  @subsection Libraries
  
  
--- 34330,34336 ----
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{4a9}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{4aa}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 34326,34332 ****
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{4aa}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{4ab}
  @subsection Elaboration order
  
  
--- 34359,34365 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{4ab}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{4ac}
  @subsection Elaboration order
  
  
*************** pragmas either globally (as an effect of
*** 34362,34368 ****
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{4ac}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4ad}
  @subsection Target-specific aspects
  
  
--- 34395,34401 ----
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{4ad}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4ae}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 34375,34384 ****
  Ada 2005, Ada 2012, and Ada 2022) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{4ae,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{4af}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4b0}
  @section Compatibility with Other Ada Systems
  
  
--- 34408,34417 ----
  Ada 2005, Ada 2012, and Ada 2022) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{4af,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{4b0}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4b1}
  @section Compatibility with Other Ada Systems
  
  
*************** far beyond this minimal set, as describe
*** 34421,34427 ****
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{4b1}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4ae}
  @section Representation Clauses
  
  
--- 34454,34460 ----
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{4b2}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4af}
  @section Representation Clauses
  
  
*************** with thin pointers.
*** 34514,34520 ****
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{4b2}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4b3}
  @section Compatibility with HP Ada 83
  
  
--- 34547,34553 ----
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{4b3}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4b4}
  @section Compatibility with HP Ada 83
  
  
*************** extension of package System.
*** 34544,34550 ****
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4b4}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4b5}
  @chapter GNU Free Documentation License
  
  
--- 34577,34583 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4b5}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4b6}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-16-20260523/gcc/ada/gnat_ugn.texi gcc-16-20260530/gcc/ada/gnat_ugn.texi
*** gcc-16-20260523/gcc/ada/gnat_ugn.texi	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/gnat_ugn.texi	Sat May 30 22:32:04 2026
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Jan 09, 2026
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , May 19, 2026
  
  AdaCore
  
*************** char **gnat_argv;
*** 16826,16834 ****
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual @code{argc} and @code{argv} values passed to the
! main program. With no `n' present, @code{gnatbind}
  generates the C main program to automatically set these variables.
! If the `n' switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  @code{Ada.Command_Line} will not be available, and any attempt to use
  them will raise @code{Constraint_Error}. If command line access is
--- 16826,16834 ----
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual @code{argc} and @code{argv} values passed to the
! main program. With no @code{-n} present, @code{gnatbind}
  generates the C main program to automatically set these variables.
! If the @code{-n} switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  @code{Ada.Command_Line} will not be available, and any attempt to use
  them will raise @code{Constraint_Error}. If command line access is
diff -Nrcpad gcc-16-20260523/gcc/ada/init.c gcc-16-20260530/gcc/ada/init.c
*** gcc-16-20260523/gcc/ada/init.c	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/init.c	Sat May 30 22:32:04 2026
*************** __gnat_error_handler (int sig, siginfo_t
*** 594,601 ****
  
  #ifndef __ia64__
  #define HAVE_GNAT_ALTERNATE_STACK 1
! /* This must be in keeping with System.OS_Interface.Alternate_Stack_Size.  */
! char __gnat_alternate_stack[32 * 1024];
  #endif
  
  #ifdef __XENO__
--- 594,603 ----
  
  #ifndef __ia64__
  #define HAVE_GNAT_ALTERNATE_STACK 1
! /* Address sanitizer requires the alternate stack to be 8-byte aligned,
!    regardless of any extra alignment added by the operating system.  The size
!    must be in keeping with System.OS_Interface.Alternate_Stack_Size.  */
! char __gnat_alternate_stack[32 * 1024] __attribute__ ((aligned (8)));
  #endif
  
  #ifdef __XENO__
diff -Nrcpad gcc-16-20260523/gcc/ada/libgnarl/s-interr.adb gcc-16-20260530/gcc/ada/libgnarl/s-interr.adb
*** gcc-16-20260523/gcc/ada/libgnarl/s-interr.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/libgnarl/s-interr.adb	Sat May 30 22:32:04 2026
*************** package body System.Interrupts is
*** 156,165 ****
     User_Handler : array (Interrupt_ID'Range) of Handler_Assoc :=
                      [others => (null, Static => False)];
     pragma Volatile_Components (User_Handler);
!    --  Holds the protected procedure handler (if any) and its Static
!    --  information for each interrupt. A handler is a Static one if it is
!    --  specified through the pragma Attach_Handler. Attach_Handler. Otherwise,
!    --  not static)
  
     User_Entry : array (Interrupt_ID'Range) of Entry_Assoc :=
                    [others => (T => Null_Task, E => Null_Task_Entry)];
--- 156,165 ----
     User_Handler : array (Interrupt_ID'Range) of Handler_Assoc :=
                      [others => (null, Static => False)];
     pragma Volatile_Components (User_Handler);
!    --  Holds the protected procedure handler (if any) and whether it is Static
!    --  for each interrupt. A handler is a Static one if and only if it is
!    --  specified through the Attach_Handler aspect (or the obsolescent
!    --  Attach_Handler pragma).
  
     User_Entry : array (Interrupt_ID'Range) of Entry_Assoc :=
                    [others => (T => Null_Task, E => Null_Task_Entry)];
*************** package body System.Interrupts is
*** 861,881 ****
           --  We don't check anything if Restoration is True, since we may be
           --  detaching a static handler to restore a dynamic one.
  
!          if not Restoration and then not Static
! 
              --  Tries to overwrite a static Interrupt Handler with a dynamic
              --  Handler
  
!            and then (User_Handler (Interrupt).Static
! 
!                        --  The new handler is not specified as an
!                        --  Interrupt Handler by a pragma.
! 
!                        or else not Is_Registered (New_Handler))
!          then
!             raise Program_Error with
!               "trying to overwrite a static Interrupt Handler with a " &
!               "dynamic handler";
           end if;
  
           --  The interrupt should no longer be ignored if
--- 861,882 ----
           --  We don't check anything if Restoration is True, since we may be
           --  detaching a static handler to restore a dynamic one.
  
!          if not Restoration and then not Static then
              --  Tries to overwrite a static Interrupt Handler with a dynamic
              --  Handler
+             if User_Handler (Interrupt).Static then
+                raise Program_Error
+                  with
+                    "trying to overwrite a static Interrupt Handler with a "
+                    & "dynamic handler";
+             end if;
  
!             --  The new handler is not specified as an interrupt handler by an
!             --  aspect (see the second sentence of RM C.3.2 (17/3)).
!             if not Is_Registered (New_Handler) then
!                raise Program_Error
!                  with "trying to attach procedure without Interrupt_Handler";
!             end if;
           end if;
  
           --  The interrupt should no longer be ignored if
*************** package body System.Interrupts is
*** 952,960 ****
           end;
        end Initialize;
  
!       --  Note: All tasks in RTS will have all the Reserve Interrupts being
!       --  masked (except the Interrupt_Manager) and Keep_Unmasked unmasked
!       --  when created.
  
        --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
        --  We mask the Interrupt in this particular task so that "sigwait" is
--- 953,960 ----
           end;
        end Initialize;
  
!       --  Note: All tasks in RTS will have all the Keep_Unmasked interrupts
!       --  unmasked when created.
  
        --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
        --  We mask the Interrupt in this particular task so that "sigwait" is
*************** package body System.Interrupts is
*** 1239,1247 ****
  
        IMOP.Install_Default_Action (IMNG.Interrupt_ID (Interrupt));
  
!       --  Note: All tasks in RTS will have all the Reserve Interrupts being
!       --  masked (except the Interrupt_Manager) and Keep_Unmasked unmasked when
!       --  created.
  
        --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
        --  We mask the Interrupt in this particular task so that "sigwait" is
--- 1239,1246 ----
  
        IMOP.Install_Default_Action (IMNG.Interrupt_ID (Interrupt));
  
!       --  Note: All tasks in RTS will have all the Keep_Unmasked interrupts
!       --  unmasked when created.
  
        --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
        --  We mask the Interrupt in this particular task so that "sigwait" is
diff -Nrcpad gcc-16-20260523/gcc/ada/libgnarl/s-interr__vxworks.adb gcc-16-20260530/gcc/ada/libgnarl/s-interr__vxworks.adb
*** gcc-16-20260523/gcc/ada/libgnarl/s-interr__vxworks.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/libgnarl/s-interr__vxworks.adb	Sat May 30 22:32:04 2026
*************** package body System.Interrupts is
*** 866,885 ****
           --  We don't check anything if Restoration is True, since we may be
           --  detaching a static handler to restore a dynamic one.
  
!          if not Restoration and then not Static
!            and then (User_Handler (Interrupt).Static
! 
              --  Trying to overwrite a static Interrupt Handler with a dynamic
              --  Handler
  
!             --  The new handler is not specified as an Interrupt Handler by a
!             --  pragma.
! 
!            or else not Is_Registered (New_Handler))
!          then
!             raise Program_Error with
!                "trying to overwrite a static interrupt handler with a "
!                & "dynamic handler";
           end if;
  
           --  Save the old handler
--- 866,887 ----
           --  We don't check anything if Restoration is True, since we may be
           --  detaching a static handler to restore a dynamic one.
  
!          if not Restoration and then not Static then
              --  Trying to overwrite a static Interrupt Handler with a dynamic
              --  Handler
+             if User_Handler (Interrupt).Static then
+                raise Program_Error
+                  with
+                    "trying to overwrite a static Interrupt Handler with a "
+                    & "dynamic handler";
+             end if;
  
!             --  The new handler is not specified as an interrupt handler by an
!             --  aspect (see the second sentence of RM C.3.2 (17/3)).
!             if not Is_Registered (New_Handler) then
!                raise Program_Error
!                  with "trying to attach procedure without Interrupt_Handler";
!             end if;
           end if;
  
           --  Save the old handler
diff -Nrcpad gcc-16-20260523/gcc/ada/par-ch12.adb gcc-16-20260530/gcc/ada/par-ch12.adb
*** gcc-16-20260523/gcc/ada/par-ch12.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/par-ch12.adb	Sat May 30 22:32:05 2026
*************** package body Ch12 is
*** 1207,1218 ****
  
           elsif Token = Tok_Left_Paren then
              Error_Msg_GNAT_Extension
!               ("expression default for formal subprograms", Token_Ptr);
  
              if Nkind (Spec_Node) = N_Function_Specification then
                 Scan;  --  past "("
  
!                Set_Expression (Def_Node, P_Expression);
  
                 if Token /= Tok_Right_Paren then
                    Error_Msg_SC ("missing "")"" at end of expression default");
--- 1207,1219 ----
  
           elsif Token = Tok_Left_Paren then
              Error_Msg_GNAT_Extension
!               ("expression default for formal subprograms", Token_Ptr,
!                Is_Core_Extension => True);
  
              if Nkind (Spec_Node) = N_Function_Specification then
                 Scan;  --  past "("
  
!                Set_Expression (Def_Node, P_Expression_If_OK);
  
                 if Token /= Tok_Right_Paren then
                    Error_Msg_SC ("missing "")"" at end of expression default");
diff -Nrcpad gcc-16-20260523/gcc/ada/par-ch4.adb gcc-16-20260530/gcc/ada/par-ch4.adb
*** gcc-16-20260523/gcc/ada/par-ch4.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/par-ch4.adb	Sat May 30 22:32:05 2026
*************** package body Ch4 is
*** 482,493 ****
           elsif Token = Tok_Identifier then
              Attr_Name := Token_Name;
  
!             --  Attribute Unsigned_Base_Range temporarily disabled
! 
!             if not Is_Attribute_Name (Attr_Name)
!               or else (Attr_Name = Name_Unsigned_Base_Range
!                          and then not Debug_Flag_Dot_U)
!             then
                 if Apostrophe_Should_Be_Semicolon then
                    Expr_Form := EF_Name;
                    return Name_Node;
--- 482,488 ----
           elsif Token = Tok_Identifier then
              Attr_Name := Token_Name;
  
!             if not Is_Attribute_Name (Attr_Name) then
                 if Apostrophe_Should_Be_Semicolon then
                    Expr_Form := EF_Name;
                    return Name_Node;
*************** package body Ch4 is
*** 2140,2158 ****
     end P_Expression;
  
     --  This function is identical to the normal P_Expression, except that it
!    --  also permits the appearance of a case, conditional, or quantified
     --  expression if the call immediately follows a left paren, and followed
     --  by a right parenthesis. These forms are allowed if these conditions
     --  are not met, but an error message will be issued.
  
     function P_Expression_If_OK return Node_Id is
     begin
!       --  Case of conditional, case or quantified expression
  
        if Token in Tok_Case | Tok_If | Tok_For | Tok_Declare then
           return P_Unparen_Cond_Expr_Etc;
  
!       --  Normal case, not case/conditional/quantified expression
  
        else
           return P_Expression;
--- 2135,2153 ----
     end P_Expression;
  
     --  This function is identical to the normal P_Expression, except that it
!    --  also permits the appearance of a conditional, quantified, or declare
     --  expression if the call immediately follows a left paren, and followed
     --  by a right parenthesis. These forms are allowed if these conditions
     --  are not met, but an error message will be issued.
  
     function P_Expression_If_OK return Node_Id is
     begin
!       --  Case of conditional, quantified, or declare expression
  
        if Token in Tok_Case | Tok_If | Tok_For | Tok_Declare then
           return P_Unparen_Cond_Expr_Etc;
  
!       --  Normal case: not a conditional, quantified, or declare expression
  
        else
           return P_Expression;
*************** package body Ch4 is
*** 2660,2666 ****
           end;
        end if;
  
!       --  If all extensions are enabled and we have a deep delta aggregate
        --  whose type is an array type with an element type that is a
        --  record type, then we can encounter legal things like
        --    with delta (Some_Index_Expression).Some_Component
--- 2655,2661 ----
           end;
        end if;
  
!       --  If core extensions are enabled and we have a deep delta aggregate
        --  whose type is an array type with an element type that is a
        --  record type, then we can encounter legal things like
        --    with delta (Some_Index_Expression).Some_Component
*************** package body Ch4 is
*** 2673,2679 ****
          and then Prev_Token = Tok_Right_Paren
          and then Serious_Errors_Detected = 0
          and then Inside_Delta_Aggregate
!         and then All_Extensions_Allowed
        then
           if Token = Tok_Dot then
              Node2 := New_Node (N_Selected_Component, Token_Ptr);
--- 2668,2674 ----
          and then Prev_Token = Tok_Right_Paren
          and then Serious_Errors_Detected = 0
          and then Inside_Delta_Aggregate
!         and then Core_Extensions_Allowed
        then
           if Token = Tok_Dot then
              Node2 := New_Node (N_Selected_Component, Token_Ptr);
diff -Nrcpad gcc-16-20260523/gcc/ada/par-ch5.adb gcc-16-20260530/gcc/ada/par-ch5.adb
*** gcc-16-20260523/gcc/ada/par-ch5.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/par-ch5.adb	Sat May 30 22:32:05 2026
*************** package body Ch5 is
*** 720,730 ****
                          Statement_Required := False;
                       end if;
  
!                   --  If junk after identifier, check if identifier is an
!                   --  instance of an incorrectly spelled keyword. If so, we
!                   --  do nothing. The Bad_Spelling_Of will have reset Token
!                   --  to the appropriate keyword, so the next time round the
!                   --  loop we will process the modified token.
                    --
                    --  Note that we check for ELSIF before ELSE here, because
                    --  we don't want to identify a misspelling of ELSE as ELSIF,
--- 720,740 ----
                          Statement_Required := False;
                       end if;
  
!                   --  If junk after identifier, check if identifier is one of:
!                   --
!                   --  - An instance of an incorrectly spelled keyword.
!                   --  - One of the non-reserved keywords introduced by GNAT
!                   --    syntax extensions (currently, "finally" is the only
!                   --    such keyword that can occur here).
!                   --
!                   --  In the incorrect spelling case, we do nothing.
!                   --  Bad_Spelling_Of will have reset Token to the appropriate
!                   --  keyword, so the next time round the loop we will process
!                   --  the modified token.
!                   --
!                   --  In the non-reserved keyword case, we replace the
!                   --  identifier token with a token for the appropriate
!                   --  keyword.
                    --
                    --  Note that we check for ELSIF before ELSE here, because
                    --  we don't want to identify a misspelling of ELSE as ELSIF,
*************** package body Ch5 is
*** 758,765 ****
                         or else Bad_Spelling_Of (Tok_While)
                       then
                          null;
  
!                      --  If not a bad spelling, then we really have junk
  
                       else
                          Scan; -- past identifier again
--- 768,781 ----
                         or else Bad_Spelling_Of (Tok_While)
                       then
                          null;
+                      elsif Token_Name = Name_Finally then
+                         Error_Msg_GNAT_Extension
+                           ("the finally construct", Token_Ptr);
+                         Token := Tok_Finally;
+                         exit;
  
!                      --  If not a bad spelling or non-reserved keyword, then we
!                      --  really have junk.
  
                       else
                          Scan; -- past identifier again
diff -Nrcpad gcc-16-20260523/gcc/ada/par-util.adb gcc-16-20260530/gcc/ada/par-util.adb
*** gcc-16-20260523/gcc/ada/par-util.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/par-util.adb	Sat May 30 22:32:05 2026
*************** package body Util is
*** 230,243 ****
           end if;
        end if;
  
-       if Ada_Version < Ada_With_All_Extensions then
-          if Token_Name in GNAT_Extensions_Reserved_Words then
-             Error_Msg_N
-               ("& is a reserved word with all extensions enabled?",
-                Token_Node);
-          end if;
-       end if;
- 
        --  Note: we deliberately do not emit these warnings when operating in
        --  Ada 83 mode because in that case we assume the user is building
        --  legacy code anyway and is not interested in updating Ada versions.
--- 230,235 ----
diff -Nrcpad gcc-16-20260523/gcc/ada/par.adb gcc-16-20260530/gcc/ada/par.adb
*** gcc-16-20260523/gcc/ada/par.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/par.adb	Sat May 30 22:32:05 2026
*************** function Par (Configuration_Pragmas : Bo
*** 839,848 ****
  
        function P_Expression_If_OK return Node_Id;
        --  Scans out an expression allowing an unparenthesized case expression,
!       --  if expression, or quantified expression to appear without enclosing
!       --  parentheses. However, if such an expression is not preceded by a left
!       --  paren, and followed by a right paren, an error message will be output
!       --  noting that parenthesization is required.
  
        function P_Expression_No_Right_Paren return Node_Id;
        --  Scans out an expression in contexts where the expression cannot be
--- 839,848 ----
  
        function P_Expression_If_OK return Node_Id;
        --  Scans out an expression allowing an unparenthesized case expression,
!       --  if expression, quantified expression, or declare expression to appear
!       --  without enclosing parentheses. However, if such an expression is not
!       --  preceded by a left paren, and followed by a right paren, an error
!       --  message will be output noting that parenthesization is required.
  
        function P_Expression_No_Right_Paren return Node_Id;
        --  Scans out an expression in contexts where the expression cannot be
diff -Nrcpad gcc-16-20260523/gcc/ada/scans.adb gcc-16-20260530/gcc/ada/scans.adb
*** gcc-16-20260523/gcc/ada/scans.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/scans.adb	Sat May 30 22:32:05 2026
*************** package body Scans is
*** 134,142 ****
        --  Ada 2012 reserved words
  
        Set_Reserved (Name_Some, Tok_Some);
- 
-       --  GNAT extensions reserved words
-       Set_Reserved (Name_Finally, Tok_Finally);
     end Initialize_Ada_Keywords;
  
     ------------------
--- 134,139 ----
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_aggr.adb gcc-16-20260530/gcc/ada/sem_aggr.adb
*** gcc-16-20260523/gcc/ada/sem_aggr.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_aggr.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Aggr is
*** 2581,2587 ****
                          Analyze (Choice);
  
                          if Is_Object_Reference (Choice)
!                           and then Is_Iterator (Etype (Choice))
                          then
                             Set_Iterator_Specification
                               (Assoc,
--- 2581,2590 ----
                          Analyze (Choice);
  
                          if Is_Object_Reference (Choice)
!                           and then (Is_Iterator (Etype (Choice))
!                                      or else
!                                        Has_Aspect
!                                          (Etype (Choice), Aspect_Iterable))
                          then
                             Set_Iterator_Specification
                               (Assoc,
*************** package body Sem_Aggr is
*** 2700,2716 ****
                         ("(Ada 83) illegal context for OTHERS choice", N);
                    end if;
  
!                elsif Is_Entity_Name (Choice) then
                    Analyze (Choice);
  
!                   declare
!                      E      : constant Entity_Id := Entity (Choice);
!                      New_Cs : List_Id;
!                      P      : Node_Id;
!                      C      : Node_Id;
  
!                   begin
!                      if Is_Type (E) and then Has_Predicates (E) then
                          Freeze_Before (N, E);
  
                          if Has_Dynamic_Predicate_Aspect (E)
--- 2703,2723 ----
                         ("(Ada 83) illegal context for OTHERS choice", N);
                    end if;
  
!                else
                    Analyze (Choice);
  
!                   if Is_Entity_Name (Choice)
!                     and then Is_Type (Entity (Choice))
!                     and then Has_Predicates (Entity (Choice))
!                   then
!                      declare
!                         E : constant Entity_Id := Entity (Choice);
  
!                         C : Node_Id;
!                         L : List_Id;
!                         P : Node_Id;
! 
!                      begin
                          Freeze_Before (N, E);
  
                          if Has_Dynamic_Predicate_Aspect (E)
*************** package body Sem_Aggr is
*** 2734,2752 ****
                          if Present (Static_Discrete_Predicate (E)) then
                             Delete_Choice := True;
  
!                            New_Cs := New_List;
                             P := First (Static_Discrete_Predicate (E));
                             while Present (P) loop
                                C := New_Copy (P);
                                Set_Sloc (C, Sloc (Choice));
!                               Append_To (New_Cs, C);
                                Next (P);
                             end loop;
  
!                            Insert_List_After (Choice, New_Cs);
                          end if;
!                      end if;
!                   end;
                 end if;
  
                 Nb_Choices := Nb_Choices + 1;
--- 2741,2759 ----
                          if Present (Static_Discrete_Predicate (E)) then
                             Delete_Choice := True;
  
!                            L := New_List;
                             P := First (Static_Discrete_Predicate (E));
                             while Present (P) loop
                                C := New_Copy (P);
                                Set_Sloc (C, Sloc (Choice));
!                               Append_To (L, C);
                                Next (P);
                             end loop;
  
!                            Insert_List_After (Choice, L);
                          end if;
!                      end;
!                   end if;
                 end if;
  
                 Nb_Choices := Nb_Choices + 1;
*************** package body Sem_Aggr is
*** 2873,2880 ****
  
                    --  Test for subtype mark without constraint
  
!                   elsif Is_Entity_Name (Choice) and then
!                     Is_Type (Entity (Choice))
                    then
                       if Base_Type (Entity (Choice)) /= Index_Base then
                          Error_Msg_N
--- 2880,2887 ----
  
                    --  Test for subtype mark without constraint
  
!                   elsif Is_Entity_Name (Choice)
!                     and then Is_Type (Entity (Choice))
                    then
                       if Base_Type (Entity (Choice)) /= Index_Base then
                          Error_Msg_N
*************** package body Sem_Aggr is
*** 4520,4526 ****
              Choice := First (Choice_List (Assoc));
              while Present (Choice) loop
                 if Is_Deep_Choice (Choice, Typ) then
!                   pragma Assert (All_Extensions_Allowed);
                    Deep_Choice_Seen := True;
  
                    --  a deep delta aggregate
--- 4527,4533 ----
              Choice := First (Choice_List (Assoc));
              while Present (Choice) loop
                 if Is_Deep_Choice (Choice, Typ) then
!                   pragma Assert (Core_Extensions_Allowed);
                    Deep_Choice_Seen := True;
  
                    --  a deep delta aggregate
*************** package body Sem_Aggr is
*** 4796,4802 ****
              Deep_Choice := Nkind (Choice) /= N_Identifier;
              if Deep_Choice then
                 Error_Msg_GNAT_Extension
!                  ("deep delta aggregate", Sloc (Choice));
              end if;
  
              Comp_Type := Get_Component_Type
--- 4803,4810 ----
              Deep_Choice := Nkind (Choice) /= N_Identifier;
              if Deep_Choice then
                 Error_Msg_GNAT_Extension
!                  ("deep delta aggregate", Sloc (Choice),
!                   Is_Core_Extension => True);
              end if;
  
              Comp_Type := Get_Component_Type
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_attr.adb gcc-16-20260530/gcc/ada/sem_attr.adb
*** gcc-16-20260523/gcc/ada/sem_attr.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_attr.adb	Sat May 30 22:32:05 2026
*************** with Elists;         use Elists;
*** 37,42 ****
--- 37,43 ----
  with Errout;         use Errout;
  with Eval_Fat;
  with Exp_Dist;       use Exp_Dist;
+ with Exp_Put_Image;  use Exp_Put_Image;
  with Exp_Util;       use Exp_Util;
  with Expander;       use Expander;
  with Freeze;         use Freeze;
*************** package body Sem_Attr is
*** 8096,8101 ****
--- 8097,8106 ----
        function Mantissa return Uint;
        --  Returns the Mantissa value for the prefix type
  
+       procedure Fold_Compile_Time_Known_Enumeration_Image (Expr : Node_Id);
+       --  Folds 'Image of a compile-time known enumeration value into a string
+       --  literal whose contents depend on whether names are available.
+ 
        procedure Set_Bounds;
        --  Used for First, Last and Length attributes applied to an array or
        --  array subtype. Sets the variables Lo_Bound and Hi_Bound to the low
*************** package body Sem_Attr is
*** 8193,8198 ****
--- 8198,8234 ----
             Compile_Time_Known_Value (Type_High_Bound (Typ));
        end Compile_Time_Known_Bounds;
  
+       -----------------------------------------------
+       -- Fold_Compile_Time_Known_Enumeration_Image --
+       -----------------------------------------------
+ 
+       procedure Fold_Compile_Time_Known_Enumeration_Image (Expr : Node_Id) is
+          Lit : constant Entity_Id := Expr_Value_E (Expr);
+          Typ : constant Entity_Id := First_Subtype (Etype (Expr));
+ 
+       begin
+          pragma Assert (Ekind (Lit) = E_Enumeration_Literal);
+ 
+          Start_String;
+ 
+          --  If Discard_Names is in effect for the type, either specifically
+          --  or globally, then we emit the numeric representation of the 'Pos
+          --  attribute of the enumeration literal with a leading space.
+ 
+          if Discard_Names (Typ) or else Global_Discard_Names then
+             UI_Image (Enumeration_Pos (Lit), Decimal);
+             Store_String_Char  (' ');
+             Store_String_Chars (UI_Image_Buffer (1 .. UI_Image_Length));
+          else
+             Get_Unqualified_Decoded_Name_String (Chars (Lit));
+             Set_Casing (All_Upper_Case);
+             Store_String_Chars (Name_Buffer (1 .. Name_Len));
+          end if;
+ 
+          Rewrite (N, Make_String_Literal (Loc, Strval => End_String));
+          Analyze_And_Resolve (N, Standard_String);
+       end Fold_Compile_Time_Known_Enumeration_Image;
+ 
        ----------------
        -- Fore_Value --
        ----------------
*************** package body Sem_Attr is
*** 8478,8520 ****
  
        --  Attribute 'Img applied to a static enumeration value is static, and
        --  we will do the folding right here (things get confused if we let this
!       --  case go through the normal circuitry).
  
!       if Id = Attribute_Img
!         and then Is_Entity_Name (P)
!         and then Is_Enumeration_Type (Etype (Entity (P)))
!         and then Is_OK_Static_Expression (P)
        then
!          declare
!             Lit : constant Entity_Id := Expr_Value_E (P);
!             Typ : constant Entity_Id := Etype (Entity (P));
!             Str : String_Id;
! 
!          begin
!             Start_String;
! 
!             --  If Discard_Names is in effect for the type, then we emit the
!             --  numeric representation of the prefix literal 'Pos attribute,
!             --  prefixed with a single space.
! 
!             if Discard_Names (Typ) then
!                UI_Image (Enumeration_Pos (Lit), Decimal);
!                Store_String_Char  (' ');
!                Store_String_Chars (UI_Image_Buffer (1 .. UI_Image_Length));
!             else
!                Get_Unqualified_Decoded_Name_String (Chars (Lit));
!                Set_Casing (All_Upper_Case);
!                Store_String_Chars (Name_Buffer (1 .. Name_Len));
!             end if;
! 
!             Str := End_String;
! 
!             Rewrite (N, Make_String_Literal (Loc, Strval => Str));
!             Analyze_And_Resolve (N, Standard_String);
!             Set_Is_Static_Expression (N, True);
!          end;
! 
!          return;
        end if;
  
        --  Special processing for cases where the prefix is an object or value,
--- 8514,8533 ----
  
        --  Attribute 'Img applied to a static enumeration value is static, and
        --  we will do the folding right here (things get confused if we let this
!       --  case go through the normal circuitry) provided that the default Image
!       --  implementation has not been overridden. Likewise for 'Image applied
!       --  to an object, except that it is never static, see a few lines below.
  
!       if (Id = Attribute_Img
!            or else (Id = Attribute_Image and then Is_Object_Reference (P)))
!         and then Is_Enumeration_Type (Etype (P))
!         and then not Is_Character_Type (Etype (P))
!         and then Compile_Time_Known_Value (P)
!         and then not Image_Must_Call_Put_Image (N)
        then
!          Fold_Compile_Time_Known_Enumeration_Image (P);
!          Set_Is_Static_Expression
!            (N, Id = Attribute_Img and then Is_OK_Static_Expression (P));
        end if;
  
        --  Special processing for cases where the prefix is an object or value,
*************** package body Sem_Attr is
*** 9716,9747 ****
        -- Image --
        -----------
  
!       --  Image is a scalar attribute, but is never static, because it is
!       --  not a static function (having a non-scalar argument (RM 4.9(22)).
        --  However, we can constant-fold the image of an enumeration literal
!       --  if names are available and default Image implementation has not
!       --  been overridden.
  
        when Attribute_Image =>
!          if Is_Entity_Name (E1)
!            and then Ekind (Entity (E1)) = E_Enumeration_Literal
!            and then not Discard_Names (First_Subtype (Etype (E1)))
!            and then not Global_Discard_Names
!            and then not Has_Aspect (Etype (E1), Aspect_Put_Image)
           then
!             declare
!                Lit : constant Entity_Id := Entity (E1);
!                Str : String_Id;
!             begin
!                Start_String;
!                Get_Unqualified_Decoded_Name_String (Chars (Lit));
!                Set_Casing (All_Upper_Case);
!                Store_String_Chars (Name_Buffer (1 .. Name_Len));
!                Str := End_String;
!                Rewrite (N, Make_String_Literal (Loc, Strval => Str));
!                Analyze_And_Resolve (N, Standard_String);
!                Set_Is_Static_Expression (N, False);
!             end;
           end if;
  
        -------------------
--- 9729,9747 ----
        -- Image --
        -----------
  
!       --  Image is a scalar attribute, but is never static, because it is not
!       --  a static function (as having a non-scalar result type (RM 4.9(22)).
        --  However, we can constant-fold the image of an enumeration literal
!       --  if the default Image implementation has not been overridden.
  
        when Attribute_Image =>
!          if Is_Enumeration_Type (Etype (P))
!            and then not Is_Character_Type (Etype (P))
!            and then Compile_Time_Known_Value (E1)
!            and then not Image_Must_Call_Put_Image (N)
           then
!             Fold_Compile_Time_Known_Enumeration_Image (E1);
!             Set_Is_Static_Expression (N, False);
           end if;
  
        -------------------
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_ch13.adb gcc-16-20260530/gcc/ada/sem_ch13.adb
*** gcc-16-20260523/gcc/ada/sem_ch13.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_ch13.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Ch13 is
*** 3734,3740 ****
                    then
                       Delay_Required := False;
  
!                   --  For Unsigned_Base_Range aspect, do not delay becase we
                    --  need to process it before any type or subtype derivation
                    --  is analyzed.
  
--- 3734,3740 ----
                    then
                       Delay_Required := False;
  
!                   --  For Unsigned_Base_Range aspect, do not delay because we
                    --  need to process it before any type or subtype derivation
                    --  is analyzed.
  
*************** package body Sem_Ch13 is
*** 5505,5514 ****
                       goto Continue;
  
                    --  GNAT Core Extension: Checks for this aspect are performed
!                   --  when the corresponding pragma is analyzed.
  
                    elsif A_Id = Aspect_Unsigned_Base_Range then
!                      null;
  
                    --  Ada 2022 (AI12-0279)
  
--- 5505,5521 ----
                       goto Continue;
  
                    --  GNAT Core Extension: Checks for this aspect are performed
!                   --  when the corresponding pragma is analyzed; if aspect has
!                   --  no effect, pragma generation is skipped.
  
                    elsif A_Id = Aspect_Unsigned_Base_Range then
!                      if Present (Expr) then
!                         Analyze_And_Resolve (Expr, Standard_Boolean);
! 
!                         if Is_False (Static_Boolean (Expr)) then
!                            goto Continue;
!                         end if;
!                      end if;
  
                    --  Ada 2022 (AI12-0279)
  
*************** package body Sem_Ch13 is
*** 17864,17873 ****
        end if;
  
        Error_Msg_N
!         ("finalizable primitive must be local procedure whose only formal " &
           "parameter has mode `IN OUT` and is of the finalizable type", N);
     end Resolve_Finalizable_Argument;
  
     function Resolve_Finalization_Procedure
       (N   : Node_Id;
        Typ : Entity_Id)
--- 17871,17884 ----
        end if;
  
        Error_Msg_N
!         ("subprogram must denote primitive procedure whose only formal " &
           "parameter has mode `IN OUT` and is of the finalizable type", N);
     end Resolve_Finalizable_Argument;
  
+    ------------------------------------
+    -- Resolve_Finalization_Procedure --
+    ------------------------------------
+ 
     function Resolve_Finalization_Procedure
       (N   : Node_Id;
        Typ : Entity_Id)
*************** package body Sem_Ch13 is
*** 17884,17889 ****
--- 17895,17901 ----
        begin
           return Ekind (E) = E_Procedure
             and then Scope (E) = Scope (Typ)
+            and then Is_Primitive (E)
             and then Present (First_Formal (E))
             and then Ekind (First_Formal (E)) = E_In_Out_Parameter
             and then Etype (First_Formal (E)) = Typ
*************** package body Sem_Ch13 is
*** 18224,18230 ****
  
        begin
           if not Is_Overloaded (Subp_Id) then
!             if not Pred (Entity (Subp_Id)) then
                 Error_Msg_NE
                   ("improper aggregate operation for&", Subp_Id, Typ);
              end if;
--- 18236,18244 ----
  
        begin
           if not Is_Overloaded (Subp_Id) then
!             if not Is_Entity_Name (Subp_Id)
!               or else not Pred (Entity (Subp_Id))
!             then
                 Error_Msg_NE
                   ("improper aggregate operation for&", Subp_Id, Typ);
              end if;
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_ch3.adb gcc-16-20260530/gcc/ada/sem_ch3.adb
*** gcc-16-20260523/gcc/ada/sem_ch3.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_ch3.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Ch3 is
*** 3197,3208 ****
     begin
        if Present (Aspect_Specifications (Parent (Def))) then
           declare
!             Asp : Node_Id;
           begin
              Asp := First (Aspect_Specifications (Parent (Def)));
              while Present (Asp) loop
                 if Chars (Identifier (Asp)) = Name_Unsigned_Base_Range then
!                   Is_Unsigned_Base_Range_Type_Decl := True;
                    exit;
                 end if;
  
--- 3197,3218 ----
     begin
        if Present (Aspect_Specifications (Parent (Def))) then
           declare
!             Asp  : Node_Id;
!             Expr : Node_Id;
! 
           begin
              Asp := First (Aspect_Specifications (Parent (Def)));
              while Present (Asp) loop
                 if Chars (Identifier (Asp)) = Name_Unsigned_Base_Range then
!                   Expr := Expression (Asp);
! 
!                   if Present (Expr) then
!                      Analyze_And_Resolve (Expr, Standard_Boolean);
!                   end if;
! 
!                   Is_Unsigned_Base_Range_Type_Decl :=
!                     No (Expression (Asp))
!                       or else Is_True (Static_Boolean (Expr));
                    exit;
                 end if;
  
*************** package body Sem_Ch3 is
*** 4865,4870 ****
--- 4875,4893 ----
                ("formal parameter cannot be implicitly converted to "
                 & "class-wide type when Extensions_Visible is False", E);
           end if;
+ 
+          --  Cannot invoke a C++ constructor in the return statement of
+          --  a function with foreign convention, because the extra formal
+          --  BIP_Object_Access is not available.
+ 
+          if Is_CPP_Constructor_Call (E)
+            and then Is_Return_Object (Id)
+            and then Has_Foreign_Convention (Return_Applies_To (Scope (Id)))
+          then
+             Error_Msg_N
+               ("C++ constructor call in return statement of "
+                &  "function with foreign convention", E);
+          end if;
        end if;
  
        --  If the No_Streams restriction is set, check that the type of the
*************** package body Sem_Ch3 is
*** 6021,6026 ****
--- 6044,6050 ----
                    Set_No_Tagged_Streams_Pragma
                                          (Id, No_Tagged_Streams_Pragma (T));
                    Set_Is_Abstract_Type  (Id, Is_Abstract_Type (T));
+                   Set_Is_CPP_Class      (Id, Is_CPP_Class (T));
                    Set_Class_Wide_Type   (Id, Class_Wide_Type (T));
  
                    if Is_Interface (T) then
*************** package body Sem_Ch3 is
*** 10115,10120 ****
--- 10139,10151 ----
        Set_Has_Primitive_Operations
          (Derived_Type, Has_Primitive_Operations (Parent_Base));
  
+       if Ekind (Derived_Type) = E_Record_Type then
+          Set_Is_Unchecked_Union
+            (Derived_Type, Is_Unchecked_Union (Parent_Base));
+          Set_Has_Unchecked_Union
+            (Derived_Type, Has_Unchecked_Union (Parent_Base));
+       end if;
+ 
        --  Set fields for private derived types
  
        if Is_Private_Type (Derived_Type) then
*************** package body Sem_Ch3 is
*** 19185,19191 ****
           --  of discriminated private type without a full view.
  
           else
!             Insert_Actions (Obj_Def, Freeze_Entity (Base_Type (T), P));
           end if;
  
        --  Ada 2005 AI-406: the object definition in an object declaration
--- 19216,19222 ----
           --  of discriminated private type without a full view.
  
           else
!             Freeze_Before (Obj_Def, Base_Type (T));
           end if;
  
        --  Ada 2005 AI-406: the object definition in an object declaration
*************** package body Sem_Ch3 is
*** 19964,19969 ****
--- 19995,20005 ----
           if not Is_Tagged then
              Append_Elmt (Old_C, Assoc_List);
              Append_Elmt (New_C, Assoc_List);
+ 
+             if Plain_Discrim then
+                Append_Elmt (Discriminal (Old_C), Assoc_List);
+                Append_Elmt (Discriminal (New_C), Assoc_List);
+             end if;
           end if;
        end Inherit_Component;
  
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_ch4.adb gcc-16-20260530/gcc/ada/sem_ch4.adb
*** gcc-16-20260523/gcc/ada/sem_ch4.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_ch4.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Ch4 is
*** 2482,2487 ****
--- 2482,2489 ----
           Error_Msg_N ("object renaming or constant declaration expected", A);
        end Check_Action_OK;
  
+       --  Local variables
+ 
        A        : Node_Id;
        EWA_Scop : Entity_Id;
  
*************** package body Sem_Ch4 is
*** 2497,2502 ****
--- 2499,2506 ----
        Set_Parent (EWA_Scop, N);
        Push_Scope (EWA_Scop);
  
+       Set_Scope_Link (N, EWA_Scop);
+ 
        --  If this Expression_With_Actions node comes from source, then it
        --  represents a declare_expression; increment the counter to take note
        --  of that.
*************** package body Sem_Ch4 is
*** 2514,2524 ****
  
        Analyze_Expression (Expression (N));
        Set_Etype (N, Etype (Expression (N)));
-       End_Scope;
  
        if Comes_From_Source (N) then
           In_Declare_Expr := In_Declare_Expr - 1;
        end if;
     end Analyze_Expression_With_Actions;
  
     ---------------------------
--- 2518,2530 ----
  
        Analyze_Expression (Expression (N));
        Set_Etype (N, Etype (Expression (N)));
  
        if Comes_From_Source (N) then
           In_Declare_Expr := In_Declare_Expr - 1;
        end if;
+ 
+       pragma Assert (Current_Scope = Scope_Link (N));
+       End_Scope;
     end Analyze_Expression_With_Actions;
  
     ---------------------------
*************** package body Sem_Ch4 is
*** 4528,4536 ****
        Expr : constant Node_Id   := Expression (N);
        Mark : constant Entity_Id := Subtype_Mark (N);
  
!       I    : Interp_Index;
!       It   : Interp;
!       T    : Entity_Id;
  
     begin
        Find_Type (Mark);
--- 4534,4569 ----
        Expr : constant Node_Id   := Expression (N);
        Mark : constant Entity_Id := Subtype_Mark (N);
  
!       function Same_Class_Wide_Type (Typ, CW_Typ : Entity_Id) return Boolean;
!       --  Return whether Typ is the same class-wide type as CW_Typ. This is
!       --  essentially an equality test modulo the Non_Limited_View attribute.
! 
!       --------------------------
!       -- Same_Class_Wide_Type --
!       --------------------------
! 
!       function Same_Class_Wide_Type (Typ, CW_Typ : Entity_Id) return Boolean is
!          Btyp : constant Entity_Id := Base_Type (Typ);
! 
!       begin
!          if Ekind (Btyp) /= E_Class_Wide_Type then
!             return False;
!          end if;
! 
!          if Has_Non_Limited_View (Btyp) then
!             return Non_Limited_View (Btyp) = Base_Type (CW_Typ);
!          else
!             return Btyp = Base_Type (CW_Typ);
!          end if;
!       end Same_Class_Wide_Type;
! 
!       --  Local variables
! 
!       I  : Interp_Index;
!       It : Interp;
!       T  : Entity_Id;
! 
!    --  Start of processing for Analyze_Qualified_Expression
  
     begin
        Find_Type (Mark);
*************** package body Sem_Ch4 is
*** 4569,4575 ****
  
        if Is_Class_Wide_Type (T) then
           if not Is_Overloaded (Expr) then
!             if Base_Type (Etype (Expr)) /= Base_Type (T)
                and then Etype (Expr) /= Raise_Type
              then
                 if Nkind (Expr) = N_Aggregate then
--- 4602,4608 ----
  
        if Is_Class_Wide_Type (T) then
           if not Is_Overloaded (Expr) then
!             if not Same_Class_Wide_Type (Etype (Expr), T)
                and then Etype (Expr) /= Raise_Type
              then
                 if Nkind (Expr) = N_Aggregate then
*************** package body Sem_Ch4 is
*** 4583,4589 ****
              Get_First_Interp (Expr, I, It);
  
              while Present (It.Nam) loop
!                if Base_Type (It.Typ) /= Base_Type (T) then
                    Remove_Interp (I);
                 end if;
  
--- 4616,4622 ----
              Get_First_Interp (Expr, I, It);
  
              while Present (It.Nam) loop
!                if not Same_Class_Wide_Type (It.Typ, T) then
                    Remove_Interp (I);
                 end if;
  
*************** package body Sem_Ch4 is
*** 4637,4642 ****
--- 4670,4676 ----
  
        Cond    : constant Node_Id := Condition (N);
        Loc     : constant Source_Ptr := Sloc (N);
+       Filter  : Node_Id;
        Loop_Id : Entity_Id;
        QE_Scop : Entity_Id;
  
*************** package body Sem_Ch4 is
*** 4732,4739 ****
--- 4766,4775 ----
  
        if Present (Iterator_Specification (N)) then
           Loop_Id := Defining_Identifier (Iterator_Specification (N));
+          Filter  := Iterator_Filter (Iterator_Specification (N));
        else
           Loop_Id := Defining_Identifier (Loop_Parameter_Specification (N));
+          Filter  := Iterator_Filter (Loop_Parameter_Specification (N));
        end if;
  
        declare
*************** package body Sem_Ch4 is
*** 4782,4792 ****
        begin
           if Warn_On_Suspicious_Contract
             and then not Is_Internal_Name (Chars (Loop_Id))
           then
!             if not Referenced (Loop_Id, Cond) then
!                Error_Msg_N ("?.t?unused variable &", Loop_Id);
!             else
                 Check_Subexpr (Cond, Kind => Full);
              end if;
           end if;
        end;
--- 4818,4834 ----
        begin
           if Warn_On_Suspicious_Contract
             and then not Is_Internal_Name (Chars (Loop_Id))
+            and then not Has_Junk_Name (Loop_Id)
           then
!             --  If there is a filter, then it is less clear whether the loop
!             --  variable is used or not; just ignore this case, for simplicity.
! 
!             if Present (Filter) then
!                null;
!             elsif Referenced (Loop_Id, Cond) then
                 Check_Subexpr (Cond, Kind => Full);
+             elsif not Is_Trivial_Boolean (Cond) then
+                Error_Msg_N ("?.t?unused variable &", Loop_Id);
              end if;
           end if;
        end;
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_ch5.adb gcc-16-20260530/gcc/ada/sem_ch5.adb
*** gcc-16-20260523/gcc/ada/sem_ch5.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_ch5.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Ch5 is
*** 94,110 ****
     --  statements. On success, the return value is the entity of the loop
     --  referenced by the statement.
  
-    function Has_Sec_Stack_Call (N : Node_Id) return Boolean;
-    --  N is the node for an arbitrary construct. This function searches the
-    --  construct N to see if it contains a function call that returns on the
-    --  secondary stack, returning True if any such call is found, and False
-    --  otherwise.
- 
-    --  ??? The implementation invokes Sem_Util.Requires_Transient_Scope so it
-    --  will return True if N contains a function call that needs finalization,
-    --  in addition to the above specification. See Analyze_Loop_Statement for
-    --  a similar comment about this entanglement.
- 
     procedure Preanalyze_Range (R_Copy : Node_Id);
     --  Determine expected type of range or domain of iteration of Ada 2012
     --  loop by analyzing separate copy. Do the analysis and resolution of the
--- 94,99 ----
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_ch5.ads gcc-16-20260530/gcc/ada/sem_ch5.ads
*** gcc-16-20260523/gcc/ada/sem_ch5.ads	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_ch5.ads	Sat May 30 22:32:05 2026
*************** package Sem_Ch5 is
*** 52,55 ****
--- 52,66 ----
     --  checks to see if the statement is followed by some other statement, and
     --  if so generates an appropriate warning for unreachable code.
  
+    function Has_Sec_Stack_Call (N : Node_Id) return Boolean;
+    --  N is the node for an arbitrary construct. This function searches the
+    --  construct N to see if it contains a function call that returns on the
+    --  secondary stack, returning True if any such call is found, and False
+    --  otherwise.
+ 
+    --  ??? The implementation invokes Sem_Util.Requires_Transient_Scope so it
+    --  will return True if N contains a function call that needs finalization,
+    --  in addition to the above specification. See Analyze_Loop_Statement for
+    --  a similar comment about this entanglement.
+ 
  end Sem_Ch5;
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_ch6.adb gcc-16-20260530/gcc/ada/sem_ch6.adb
*** gcc-16-20260523/gcc/ada/sem_ch6.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_ch6.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Ch6 is
*** 10930,10938 ****
     procedure Install_Entity (E : Entity_Id) is
        Prev : constant Entity_Id := Current_Entity (E);
     begin
        Set_Is_Immediately_Visible (E);
        Set_Current_Entity (E);
-       pragma Assert (Prev /= E);
        Set_Homonym (E, Prev);
     end Install_Entity;
  
--- 10930,10943 ----
     procedure Install_Entity (E : Entity_Id) is
        Prev : constant Entity_Id := Current_Entity (E);
     begin
+       if Prev = E then
+          --  avoid creating a Homonym-list cycle
+          pragma Assert (Serious_Errors_Detected > 0);
+          return;
+       end if;
+ 
        Set_Is_Immediately_Visible (E);
        Set_Current_Entity (E);
        Set_Homonym (E, Prev);
     end Install_Entity;
  
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_ch8.adb gcc-16-20260530/gcc/ada/sem_ch8.adb
*** gcc-16-20260523/gcc/ada/sem_ch8.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_ch8.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Ch8 is
*** 8167,8173 ****
                 Old_S := Entity (Nam);
              end if;
  
!          elsif Present (First_Formal (Entity (Nam)))
             and then Present (First_Formal (New_S))
             and then Base_Type (Etype (First_Formal (Entity (Nam)))) =
                      Base_Type (Etype (First_Formal (New_S)))
--- 8167,8174 ----
                 Old_S := Entity (Nam);
              end if;
  
!          elsif Can_Have_Formals (Entity (Nam))
!            and then Present (First_Formal (Entity (Nam)))
             and then Present (First_Formal (New_S))
             and then Base_Type (Etype (First_Formal (Entity (Nam)))) =
                      Base_Type (Etype (First_Formal (New_S)))
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_disp.adb gcc-16-20260530/gcc/ada/sem_disp.adb
*** gcc-16-20260523/gcc/ada/sem_disp.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_disp.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Disp is
*** 96,101 ****
--- 96,109 ----
     --  Check whether a primitive operation is inherited from an operation
     --  declared in the visible part of its package.
  
+    procedure Override_Dispatching_Operation
+      (Tagged_Type : Entity_Id;
+       Prev_Op     : Entity_Id;
+       New_Op      : Entity_Id);
+    --  Replace an implicit dispatching operation of the type Tagged_Type
+    --  with an explicit one. Prev_Op is an inherited primitive operation which
+    --  is overridden by the explicit declaration of New_Op.
+ 
     -------------------------------
     -- Add_Dispatching_Operation --
     -------------------------------
*************** package body Sem_Disp is
*** 309,315 ****
           --  Common Ada case
  
           if not Has_First_Controlling_Parameter_Aspect (Typ) then
!             Ctrl_Type := Check_Controlling_Type (Etype (Formal), Subp);
  
           --  Type with the First_Controlling_Parameter aspect: for overriding
           --  primitives of a parent type that lacks this aspect, we cannot be
--- 317,345 ----
           --  Common Ada case
  
           if not Has_First_Controlling_Parameter_Aspect (Typ) then
! 
!             --  Formals of a type specifying aspect First_Controlling_Parameter
!             --  are not candidate controlling parameters when they are not
!             --  the first formal of the dispatching primitive. For example:
!             --
!             --     type T1 is tagged ...
!             --     type T2 is tagged ... with First_Controlling_Parameter;
!             --     procedure Prim (X : T1; Y : T2);
!             --
!             --  When T2 does not have the First_Controlling_Parameter aspect
!             --  this example is rejected because a primitive can be dispatching
!             --  in only one type. However, T2 cannot be a candidate controlling
!             --  type for Prim because Y is not its first formal. Therefore,
!             --  this example is accepted.
! 
!             if Is_Tagged_Type (Etype (Formal))
!               and then Has_First_Controlling_Parameter_Aspect (Etype (Formal))
!               and then Formal /= First_Formal (Subp)
!             then
!                null;
!             else
!                Ctrl_Type := Check_Controlling_Type (Etype (Formal), Subp);
!             end if;
  
           --  Type with the First_Controlling_Parameter aspect: for overriding
           --  primitives of a parent type that lacks this aspect, we cannot be
*************** package body Sem_Disp is
*** 2414,2419 ****
--- 2444,2457 ----
              return Empty;
           end if;
  
+       --  Deal with controlling function wrappers
+ 
+       elsif Ekind (Subp) = E_Function
+         and then Has_Controlling_Result (Subp)
+         and then Is_Wrapper (Subp)
+       then
+          return Check_Controlling_Type (Etype (Subp), Subp);
+ 
        --  General case
  
        else
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_disp.ads gcc-16-20260530/gcc/ada/sem_disp.ads
*** gcc-16-20260523/gcc/ada/sem_disp.ads	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_disp.ads	Sat May 30 22:32:05 2026
*************** package Sem_Disp is
*** 173,186 ****
     --  controlling operands are also indeterminate. Such a function call may
     --  inherit a tag from an enclosing call.
  
-    procedure Override_Dispatching_Operation
-      (Tagged_Type : Entity_Id;
-       Prev_Op     : Entity_Id;
-       New_Op      : Entity_Id);
-    --  Replace an implicit dispatching operation of the type Tagged_Type
-    --  with an explicit one. Prev_Op is an inherited primitive operation which
-    --  is overridden by the explicit declaration of New_Op.
- 
     procedure Propagate_Tag (Control : Node_Id; Actual : Node_Id);
     --  If a function call given by Actual is tag-indeterminate, its controlling
     --  argument is found in the context, given by Control: either from an
--- 173,178 ----
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_prag.adb gcc-16-20260530/gcc/ada/sem_prag.adb
*** gcc-16-20260523/gcc/ada/sem_prag.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_prag.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Prag is
*** 12708,12719 ****
  
        --  Deal with unrecognized pragma
  
!       --  Pragma Unsigned_Base_Range temporarily disabled
! 
!       if not Is_Pragma_Name (Pname)
!         or else (Pname = Name_Unsigned_Base_Range
!                   and then not Debug_Flag_Dot_U)
!       then
           declare
              Msg_Issued : Boolean := False;
           begin
--- 12708,12714 ----
  
        --  Deal with unrecognized pragma
  
!       if not Is_Pragma_Name (Pname) then
           declare
              Msg_Issued : Boolean := False;
           begin
*************** package body Sem_Prag is
*** 29133,29138 ****
--- 29128,29137 ----
        ----------------------
  
        function Check_References (Nod : Node_Id) return Traverse_Result is
+          CW_Disp_Typ : constant Entity_Id :=
+            (if Present (Disp_Typ)
+              then Class_Wide_Type (Disp_Typ)
+              else Empty);
        begin
           if Nkind (Nod) = N_Function_Call
             and then Is_Entity_Name (Name (Nod))
*************** package body Sem_Prag is
*** 29159,29165 ****
                    --  A return object of the type is illegal as well
  
                    if Etype (Func) = Disp_Typ
!                     or else Etype (Func) = Class_Wide_Type (Disp_Typ)
                    then
                       Error_Msg_NE
                         ("operation in class-wide condition must be primitive "
--- 29158,29164 ----
                    --  A return object of the type is illegal as well
  
                    if Etype (Func) = Disp_Typ
!                     or else Etype (Func) = CW_Disp_Typ
                    then
                       Error_Msg_NE
                         ("operation in class-wide condition must be primitive "
*************** package body Sem_Prag is
*** 29171,29177 ****
           elsif Is_Entity_Name (Nod)
             and then
               (Etype (Nod) = Disp_Typ
!                or else Etype (Nod) = Class_Wide_Type (Disp_Typ))
             and then Ekind (Entity (Nod)) in E_Constant | E_Variable
           then
              Error_Msg_NE
--- 29170,29176 ----
           elsif Is_Entity_Name (Nod)
             and then
               (Etype (Nod) = Disp_Typ
!                or else Etype (Nod) = CW_Disp_Typ)
             and then Ekind (Entity (Nod)) in E_Constant | E_Variable
           then
              Error_Msg_NE
*************** package body Sem_Prag is
*** 29180,29186 ****
  
           elsif Nkind (Nod) = N_Explicit_Dereference
             and then (Etype (Nod) = Disp_Typ
!                       or else Etype (Nod) = Class_Wide_Type (Disp_Typ))
             and then (not Is_Entity_Name (Prefix (Nod))
                        or else not Is_Formal (Entity (Prefix (Nod))))
           then
--- 29179,29185 ----
  
           elsif Nkind (Nod) = N_Explicit_Dereference
             and then (Etype (Nod) = Disp_Typ
!                       or else Etype (Nod) = CW_Disp_Typ)
             and then (not Is_Entity_Name (Prefix (Nod))
                        or else not Is_Formal (Entity (Prefix (Nod))))
           then
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_res.adb gcc-16-20260530/gcc/ada/sem_res.adb
*** gcc-16-20260523/gcc/ada/sem_res.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_res.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Res is
*** 7793,7798 ****
--- 7793,7814 ----
     --  Start of processing for Resolve_Declare_Expression
  
     begin
+       --  Create a transient scope if the type of this declare-expression
+       --  or its expression requires it; this must be done before we push
+       --  in the scope stack the scope of this declare expression (in order
+       --  to properly remove it from the stack on exit from this routine).
+       --  Given that we don't know yet if secondary stack management will
+       --  be needed, we assume the worst case.
+ 
+       if not Preanalysis_Active
+         and then (Requires_Transient_Scope (Typ)
+                     or else Has_Sec_Stack_Call (Expr))
+       then
+          Establish_Transient_Scope (N, Manage_Sec_Stack => True);
+       end if;
+ 
+       Push_Scope (Scope_Link (N));
+ 
        Decl := First (Actions (N));
  
        while Present (Decl) loop
*************** package body Sem_Res is
*** 7857,7862 ****
--- 7873,7881 ----
              Next_Elmt (Cursor);
           end loop;
        end;
+ 
+       pragma Assert (Current_Scope = Scope_Link (N));
+       End_Scope;
     end Resolve_Declare_Expression;
  
     -----------------------------------
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_util.adb gcc-16-20260530/gcc/ada/sem_util.adb
*** gcc-16-20260523/gcc/ada/sem_util.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_util.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Util is
*** 2796,2802 ****
                 if Is_Writable_Actual then
  
                    --  Skip checking the error in non-elementary types since
!                   --  RM 6.4.1(6.15/3) is restricted to elementary types, but
                    --  store this actual in Writable_Actuals_List since it is
                    --  needed to perform checks on other constructs that have
                    --  arbitrary order of evaluation (for example, aggregates).
--- 2796,2802 ----
                 if Is_Writable_Actual then
  
                    --  Skip checking the error in non-elementary types since
!                   --  RM 6.4.1(6.16/3) is restricted to elementary types, but
                    --  store this actual in Writable_Actuals_List since it is
                    --  needed to perform checks on other constructs that have
                    --  arbitrary order of evaluation (for example, aggregates).
*************** package body Sem_Util is
*** 2954,2960 ****
        --  call C2 (not including the construct C itself), there is no other
        --  name anywhere within a direct constituent of the construct C other
        --  than the one containing C2, that is known to refer to the same
!       --  object (RM 6.4.1(6.17/3)).
  
        case Nkind (N) is
           when N_Range =>
--- 2954,2960 ----
        --  call C2 (not including the construct C itself), there is no other
        --  name anywhere within a direct constituent of the construct C other
        --  than the one containing C2, that is known to refer to the same
!       --  object (RM 6.4.1(6.18/3)).
  
        case Nkind (N) is
           when N_Range =>
*************** package body Sem_Util is
*** 3201,3207 ****
  
                 --  For an array aggregate, a discrete_choice_list that has
                 --  a nonstatic range is considered as two or more separate
!                --  occurrences of the expression (RM 6.4.1(6.20/3)).
  
                 elsif Is_Array_Type (Etype (N))
                   and then Nkind (N) = N_Aggregate
--- 3201,3207 ----
  
                 --  For an array aggregate, a discrete_choice_list that has
                 --  a nonstatic range is considered as two or more separate
!                --  occurrences of the expression (RM 6.4.1(6.21/3)).
  
                 elsif Is_Array_Type (Etype (N))
                   and then Nkind (N) = N_Aggregate
*************** package body Sem_Util is
*** 7047,7053 ****
        --  For renamings, return False if the prefix of any dereference within
        --  the renamed object_name is a variable, or any expression within the
        --  renamed object_name contains references to variables or calls on
!       --  nonstatic functions; otherwise return True (RM 6.4.1(6.10/3))
  
        ------------------------
        -- Is_Object_Renaming --
--- 7047,7053 ----
        --  For renamings, return False if the prefix of any dereference within
        --  the renamed object_name is a variable, or any expression within the
        --  renamed object_name contains references to variables or calls on
!       --  nonstatic functions; otherwise return True (RM 6.4.1(6.11/3))
  
        ------------------------
        -- Is_Object_Renaming --
*************** package body Sem_Util is
*** 12493,12507 ****
  
     function Has_Inferable_Discriminants (N : Node_Id) return Boolean is
  
!       function Prefix_Is_Formal_Parameter (N : Node_Id) return Boolean;
!       --  Determines whether the left-most prefix of a selected component is a
!       --  formal parameter in a subprogram. Assumes N is a selected component.
  
!       --------------------------------
!       -- Prefix_Is_Formal_Parameter --
!       --------------------------------
  
!       function Prefix_Is_Formal_Parameter (N : Node_Id) return Boolean is
           Sel_Comp : Node_Id;
  
        begin
--- 12493,12508 ----
  
     function Has_Inferable_Discriminants (N : Node_Id) return Boolean is
  
!       function Prefix_Is_Formal_Parameter_Of_EQ (N : Node_Id) return Boolean;
!       --  Determines whether the left-most prefix of selected component N
!       --  is a formal parameter of the predefined equality function of an
!       --  Unchecked_Union type.
  
!       --------------------------------------
!       -- Prefix_Is_Formal_Parameter_Of_EQ --
!       --------------------------------------
  
!       function Prefix_Is_Formal_Parameter_Of_EQ (N : Node_Id) return Boolean is
           Sel_Comp : Node_Id;
  
        begin
*************** package body Sem_Util is
*** 12514,12521 ****
              Sel_Comp := Parent (Sel_Comp);
           end loop;
  
!          return Is_Formal (Entity (Prefix (Sel_Comp)));
!       end Prefix_Is_Formal_Parameter;
  
     --  Start of processing for Has_Inferable_Discriminants
  
--- 12515,12524 ----
              Sel_Comp := Parent (Sel_Comp);
           end loop;
  
!          return Is_Formal (Entity (Prefix (Sel_Comp)))
!            and then
!              Is_Unchecked_Union_Equality (Scope (Entity (Prefix (Sel_Comp))));
!       end Prefix_Is_Formal_Parameter_Of_EQ;
  
     --  Start of processing for Has_Inferable_Discriminants
  
*************** package body Sem_Util is
*** 12533,12546 ****
              return False;
           end if;
  
!          --  A small hack. If we have a per-object constrained selected
!          --  component of a formal parameter, return True since we do not
!          --  know the actual parameter association yet.
  
           return not Has_Per_Object_Constraint (Entity (Selector_Name (N)))
             or else not Is_Unchecked_Union (Etype (Prefix (N)))
             or else Has_Inferable_Discriminants (Prefix (N))
!            or else Prefix_Is_Formal_Parameter (N);
  
        --  A qualified expression has inferable discriminants if its subtype
        --  mark is a constrained Unchecked_Union subtype.
--- 12536,12549 ----
              return False;
           end if;
  
!          --  We need to return True for the component of a formal parameter
!          --  of the predefined equality function of an Unchecked_Union type
!          --  when expanding it (see Expand_Unchecked_Union_Equality).
  
           return not Has_Per_Object_Constraint (Entity (Selector_Name (N)))
             or else not Is_Unchecked_Union (Etype (Prefix (N)))
             or else Has_Inferable_Discriminants (Prefix (N))
!            or else Prefix_Is_Formal_Parameter_Of_EQ (N);
  
        --  A qualified expression has inferable discriminants if its subtype
        --  mark is a constrained Unchecked_Union subtype.
*************** package body Sem_Util is
*** 29339,29351 ****
                 return False;
              end if;
  
              declare
                 Comp : constant Entity_Id :=
                   Original_Record_Component (Entity (Selector_Name (N)));
              begin
!               --  AI12-0373 confirms that we should not call
!               --  Has_Discriminant_Dependent_Constraint here which would be
!               --  too strong.
  
                 if Is_Declared_Within_Variant (Comp) then
                    return False;
--- 29342,29362 ----
                 return False;
              end if;
  
+             --  Reject for example subprogram calls in object notation
+ 
+             if Ekind (Entity (Selector_Name (N))) not in E_Component
+                                                        | E_Discriminant
+             then
+                return False;
+             end if;
+ 
              declare
                 Comp : constant Entity_Id :=
                   Original_Record_Component (Entity (Selector_Name (N)));
              begin
!                --  AI12-0373 confirms that we should not call
!                --  Has_Discriminant_Dependent_Constraint here,
!                --  which would be too strong.
  
                 if Is_Declared_Within_Variant (Comp) then
                    return False;
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_util.ads gcc-16-20260530/gcc/ada/sem_util.ads
*** gcc-16-20260523/gcc/ada/sem_util.ads	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_util.ads	Sat May 30 22:32:05 2026
*************** package Sem_Util is
*** 711,717 ****
  
     function Denotes_Same_Object (A1, A2 : Node_Id) return Boolean;
     --  Detect suspicious overlapping between actuals in a call, when both are
!    --  writable (RM 2012 6.4.1(6.4/3)).
  
     function Denotes_Same_Prefix (A1, A2 : Node_Id) return Boolean;
     --  Functions to detect suspicious overlapping between actuals in a call,
--- 711,717 ----
  
     function Denotes_Same_Object (A1, A2 : Node_Id) return Boolean;
     --  Detect suspicious overlapping between actuals in a call, when both are
!    --  writable (RM 2012 6.4.1(6.5/3)).
  
     function Denotes_Same_Prefix (A1, A2 : Node_Id) return Boolean;
     --  Functions to detect suspicious overlapping between actuals in a call,
diff -Nrcpad gcc-16-20260523/gcc/ada/sem_warn.adb gcc-16-20260530/gcc/ada/sem_warn.adb
*** gcc-16-20260523/gcc/ada/sem_warn.adb	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sem_warn.adb	Sat May 30 22:32:05 2026
*************** package body Sem_Warn is
*** 3920,3926 ****
        --  known to refer to the same object as the other name; or one of the
        --  two names statically denotes a renaming declaration whose renamed
        --  object_name is known to refer to the same object as the other name
!       --  (RM 6.4.1(6.11/3))
  
        -----------------------------
        -- Explicitly_By_Reference --
--- 3920,3926 ----
        --  known to refer to the same object as the other name; or one of the
        --  two names statically denotes a renaming declaration whose renamed
        --  object_name is known to refer to the same object as the other name
!       --  (RM 6.4.1(6.12/3))
  
        -----------------------------
        -- Explicitly_By_Reference --
*************** package body Sem_Warn is
*** 3979,3985 ****
        --  of an elementary type, then the call is legal only if for each name
        --  N that is passed as a parameter of mode in out or out to the call C,
        --  there is no other name among the other parameters of mode in out or
!       --  out to C that is known to denote the same object (RM 6.4.1(6.15/3))
        --  This has been clarified in AI12-0216 to indicate that the illegality
        --  only occurs if both formals are of an elementary type, because of the
        --  nondeterminism on the write-back of the corresponding actuals.
--- 3979,3985 ----
        --  of an elementary type, then the call is legal only if for each name
        --  N that is passed as a parameter of mode in out or out to the call C,
        --  there is no other name among the other parameters of mode in out or
!       --  out to C that is known to denote the same object (RM 6.4.1(6.16/3))
        --  This has been clarified in AI12-0216 to indicate that the illegality
        --  only occurs if both formals are of an elementary type, because of the
        --  nondeterminism on the write-back of the corresponding actuals.
diff -Nrcpad gcc-16-20260523/gcc/ada/sinfo.ads gcc-16-20260530/gcc/ada/sinfo.ads
*** gcc-16-20260523/gcc/ada/sinfo.ads	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sinfo.ads	Sat May 30 22:32:05 2026
*************** package Sinfo is
*** 2265,2270 ****
--- 2265,2275 ----
     --    scope all use this field to reference the corresponding scope entity.
     --    See Einfo for further details.
  
+    --  Scope_Link
+    --    Present in N_Expression_With_Actions nodes. References the internally
+    --    built scope created to provide proper visibility of the declare_items
+    --    to the expander.
+ 
     --  Selector_Name
     --    Present in N_Expanded_Name N_Selected_Component,
     --    N_Generic_Association, and N_Parameter_Association nodes.
*************** package Sinfo is
*** 8103,8108 ****
--- 8108,8114 ----
        --  N_Expression_With_Actions
        --  Actions
        --  Expression
+       --  Scope_Link
        --  plus fields for expression
  
        --  Note: In the final generated tree presented to the code generator,
diff -Nrcpad gcc-16-20260523/gcc/ada/sinput.ads gcc-16-20260530/gcc/ada/sinput.ads
*** gcc-16-20260523/gcc/ada/sinput.ads	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sinput.ads	Sat May 30 22:32:05 2026
***************
*** 46,58 ****
  --    significance, but they are significant for error reporting purposes,
  --    since errors are identified by line and column location.
  
! --  In GNAT, a physical line is ended by any of the sequences LF, CR/LF, or
! --  CR. LF is used in typical Unix systems, CR/LF in DOS systems, and CR
! --  alone in System 7. In addition, we recognize any of these sequences in
  --  any of the operating systems, for better behavior in treating foreign
  --  files (e.g. a Unix file with LF terminators transferred to a DOS system).
  --  Finally, wide character codes in categories Separator, Line and Separator,
! --  Paragraph are considered to be physical line terminators.
  
  with Alloc;
  with Casing; use Casing;
--- 46,58 ----
  --    significance, but they are significant for error reporting purposes,
  --    since errors are identified by line and column location.
  
! --  In GNAT, a physical line is ended by any of the sequences CR, LF, or CR/LF.
! --  CR is used in some MAC systems, LF is used in Unix systems, and CR/LF in
! --  DOS/Windows systems. In addition, we recognize any of these sequences in
  --  any of the operating systems, for better behavior in treating foreign
  --  files (e.g. a Unix file with LF terminators transferred to a DOS system).
  --  Finally, wide character codes in categories Separator, Line and Separator,
! --  Paragraph are considered to be logical line terminators.
  
  with Alloc;
  with Casing; use Casing;
diff -Nrcpad gcc-16-20260523/gcc/ada/snames.adb-tmpl gcc-16-20260530/gcc/ada/snames.adb-tmpl
*** gcc-16-20260523/gcc/ada/snames.adb-tmpl	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/snames.adb-tmpl	Sat May 30 22:32:05 2026
*************** package body Snames is
*** 458,466 ****
                     --  for compatibility with Ada 95 compilers implementing
                     --  only this Ada 2005 extension.
          and then (Ada_Version >= Ada_2012
!                    or else N not in Ada_2012_Reserved_Words)
!         and then (Ada_Version >= Ada_With_All_Extensions
!                    or else N not in GNAT_Extensions_Reserved_Words);
     end Is_Keyword_Name;
  
     --------------------------------
--- 458,464 ----
                     --  for compatibility with Ada 95 compilers implementing
                     --  only this Ada 2005 extension.
          and then (Ada_Version >= Ada_2012
!                    or else N not in Ada_2012_Reserved_Words);
     end Is_Keyword_Name;
  
     --------------------------------
diff -Nrcpad gcc-16-20260523/gcc/ada/snames.ads-tmpl gcc-16-20260530/gcc/ada/snames.ads-tmpl
*** gcc-16-20260523/gcc/ada/snames.ads-tmpl	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/snames.ads-tmpl	Sat May 30 22:32:05 2026
*************** package Snames is
*** 1406,1411 ****
--- 1406,1412 ----
  
     Name_Synchronous_Task_Control         : constant Name_Id := N + $;
     Name_Continue                         : constant Name_Id := N + $;
+    Name_Finally                          : constant Name_Id := N + $;
  
     --  Names used to implement iterators over predefined containers
  
*************** package Snames is
*** 1454,1469 ****
     subtype Ada_2012_Reserved_Words is Name_Id
       range First_2012_Reserved_Word .. Last_2012_Reserved_Word;
  
-    --  GNAT extensions reserved words
- 
-    First_GNAT_Extensions_Reserved_Word   : constant Name_Id := N + $;
-    Name_Finally                          : constant Name_Id := N + $;
-    Last_GNAT_Extensions_Reserved_Word    : constant Name_Id := N + $;
- 
-    subtype GNAT_Extensions_Reserved_Words is Name_Id
-      range First_GNAT_Extensions_Reserved_Word ..
-        Last_GNAT_Extensions_Reserved_Word;
- 
     --  Mark last defined name for consistency check in Snames body
  
     Last_Predefined_Name                  : constant Name_Id := N + $;
--- 1455,1460 ----
diff -Nrcpad gcc-16-20260523/gcc/ada/sysdep.c gcc-16-20260530/gcc/ada/sysdep.c
*** gcc-16-20260523/gcc/ada/sysdep.c	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/ada/sysdep.c	Sat May 30 22:32:05 2026
*************** getc_immediate_common (FILE *stream,
*** 394,400 ****
      || defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
      || defined (__GLIBC__) || defined (__APPLE__) || defined (__DragonFly__) \
      || defined (__QNX__)
!   char c;
    int nread;
    int good_one = 0;
    int eof_ch = 4; /* Ctrl-D */
--- 394,400 ----
      || defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
      || defined (__GLIBC__) || defined (__APPLE__) || defined (__DragonFly__) \
      || defined (__QNX__)
!   unsigned char c;
    int nread;
    int good_one = 0;
    int eof_ch = 4; /* Ctrl-D */
*************** getc_immediate_common (FILE *stream,
*** 512,518 ****
    struct fd_set readFds;
    /* Timeout before select returns if nothing can be read.  */
    struct timeval timeOut;
!   char c;
    int fd = fileno (stream);
    int nread;
    int option;
--- 512,518 ----
    struct fd_set readFds;
    /* Timeout before select returns if nothing can be read.  */
    struct timeval timeOut;
!   unsigned char c;
    int fd = fileno (stream);
    int nread;
    int option;
diff -Nrcpad gcc-16-20260523/gcc/config/aarch64/aarch64-passes.def gcc-16-20260530/gcc/config/aarch64/aarch64-passes.def
*** gcc-16-20260523/gcc/config/aarch64/aarch64-passes.def	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/config/aarch64/aarch64-passes.def	Sat May 30 22:32:05 2026
*************** INSERT_PASS_BEFORE (pass_late_thread_pro
*** 26,29 ****
  INSERT_PASS_BEFORE (pass_shorten_branches, 1, pass_insert_bti);
  INSERT_PASS_BEFORE (pass_early_remat, 1, pass_ldp_fusion);
  INSERT_PASS_BEFORE (pass_peephole2, 1, pass_ldp_fusion);
! INSERT_PASS_BEFORE (pass_cleanup_barriers, 1, pass_narrow_gp_writes);
--- 26,29 ----
  INSERT_PASS_BEFORE (pass_shorten_branches, 1, pass_insert_bti);
  INSERT_PASS_BEFORE (pass_early_remat, 1, pass_ldp_fusion);
  INSERT_PASS_BEFORE (pass_peephole2, 1, pass_ldp_fusion);
! INSERT_PASS_BEFORE (pass_free_cfg, 1, pass_narrow_gp_writes);
diff -Nrcpad gcc-16-20260523/gcc/config/avr/avr-fixed.md gcc-16-20260530/gcc/config/avr/avr-fixed.md
*** gcc-16-20260523/gcc/config/avr/avr-fixed.md	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/config/avr/avr-fixed.md	Sat May 30 22:32:05 2026
***************
*** 43,51 ****
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI SI DI])
  
! ;; Same so that be can build cross products
  
  (define_mode_iterator FIXED_B
    [QQ UQQ
--- 43,51 ----
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI PSI SI DI])
  
! ;; Same so that we can build cartesian products.
  
  (define_mode_iterator FIXED_B
    [QQ UQQ
***************
*** 53,59 ****
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI SI DI])
  
  (define_insn_and_split "fract<FIXED_B:mode><FIXED_A:mode>2"
    [(set (match_operand:FIXED_A 0 "register_operand" "=r")
--- 53,59 ----
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI PSI SI DI])
  
  (define_insn_and_split "fract<FIXED_B:mode><FIXED_A:mode>2"
    [(set (match_operand:FIXED_A 0 "register_operand" "=r")
diff -Nrcpad gcc-16-20260523/gcc/config/i386/x86-tune.def gcc-16-20260530/gcc/config/i386/x86-tune.def
*** gcc-16-20260523/gcc/config/i386/x86-tune.def	Sat May 23 22:32:05 2026
--- gcc-16-20260530/gcc/config/i386/x86-tune.def	Sat May 30 22:32:05 2026
*************** DEF_TUNE (X86_TUNE_AVOID_4BYTE_PREFIXES,
*** 530,536 ****
  /* X86_TUNE_USE_GATHER_2PARTS: Use gather instructions for vectors with 2
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS))
  
  /* X86_TUNE_USE_SCATTER_2PARTS: Use scater instructions for vectors with 2
--- 530,536 ----
  /* X86_TUNE_USE_GATHER_2PARTS: Use gather instructions for vectors with 2
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID | m_DIAMONDRAPIDS
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS))
  
  /* X86_TUNE_USE_SCATTER_2PARTS: Use scater instructions for vectors with 2
*************** DEF_TUNE (X86_TUNE_USE_SCATTER_2PARTS, "
*** 541,547 ****
  /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS))
  
  /* X86_TUNE_USE_SCATTER_4PARTS: Use scater instructions for vectors with 4
--- 541,547 ----
  /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID | m_DIAMONDRAPIDS
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS))
  
  /* X86_TUNE_USE_SCATTER_4PARTS: Use scater instructions for vectors with 4
diff -Nrcpad gcc-16-20260523/gcc/cp/ChangeLog gcc-16-20260530/gcc/cp/ChangeLog
*** gcc-16-20260523/gcc/cp/ChangeLog	Sat May 23 22:32:06 2026
--- gcc-16-20260530/gcc/cp/ChangeLog	Sat May 30 22:32:05 2026
***************
*** 1,3 ****
--- 1,37 ----
+ 2026-05-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125454
+ 	* typeck.cc (cp_build_array_ref): Don't recurse for array[array].
+ 
+ 2026-05-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125423
+ 	* pt.cc (tsubst_expr) <case REFLECT_EXPR>: Don't tsubst
+ 	REFLECT_BASEs.
+ 
+ 2026-05-23  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-23  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/125135
+ 	* pt.cc (check_non_deducible_conversions): Handle LOOKUP_DEFAULTED.
+ 
+ 2026-05-23  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-21  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/125384
+ 	PR c++/113563
+ 	* lambda.cc (build_capture_proxy): 'this' capture proxy is const.
+ 
  2026-05-20  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260523/gcc/cp/pt.cc gcc-16-20260530/gcc/cp/pt.cc
*** gcc-16-20260523/gcc/cp/pt.cc	Sat May 23 22:32:06 2026
--- gcc-16-20260530/gcc/cp/pt.cc	Sat May 30 22:32:05 2026
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 23368,23373 ****
--- 23368,23376 ----
  	     instantiated entities and so no need to tsubst the annotation
  	     attribute and we rely on pointer equality of that.  */
  	  ;
+ 	else if (kind == REFLECT_BASE)
+ 	  /* Don't substitute; class_bases_of is never called for a dependent
+ 	     type.  */;
  	else if (TREE_CODE (h) == SCOPE_REF)
  	  h = tsubst_qualified_id (h, args, complain, in_decl,
  				   /*done=*/true, /*address_p=*/false,
diff -Nrcpad gcc-16-20260523/gcc/cp/typeck.cc gcc-16-20260530/gcc/cp/typeck.cc
*** gcc-16-20260523/gcc/cp/typeck.cc	Sat May 23 22:32:06 2026
--- gcc-16-20260530/gcc/cp/typeck.cc	Sat May 30 22:32:05 2026
*************** cp_build_array_ref (location_t loc, tree
*** 4162,4168 ****
      return error_mark_node;
  
    /* 0[array] */
!   if (TREE_CODE (TREE_TYPE (idx)) == ARRAY_TYPE)
      {
        std::swap (array, idx);
  
--- 4162,4169 ----
      return error_mark_node;
  
    /* 0[array] */
!   if (TREE_CODE (TREE_TYPE (idx)) == ARRAY_TYPE
!       && TREE_CODE (TREE_TYPE (array)) != ARRAY_TYPE)
      {
        std::swap (array, idx);
  
diff -Nrcpad gcc-16-20260523/gcc/fortran/ChangeLog gcc-16-20260530/gcc/fortran/ChangeLog
*** gcc-16-20260523/gcc/fortran/ChangeLog	Sat May 23 22:32:06 2026
--- gcc-16-20260530/gcc/fortran/ChangeLog	Sat May 30 22:32:05 2026
***************
*** 1,3 ****
--- 1,14 ----
+ 2026-05-23  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-05-23  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/125391
+ 	* trans.cc (gfc_assignment_finalizer_call): For finalization of
+ 	allocatable and pointer lhs before assignment, gfc_conv_expr
+ 	should be used with se.descriptor_only. This avoids implicit of
+ 	set_factored_descriptor_value by gfc_conv_expr_descriptor.
+ 
  2026-05-22  Tobias Burnus  <tburnus@baylibre.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260523/gcc/fortran/trans-decl.cc gcc-16-20260530/gcc/fortran/trans-decl.cc
*** gcc-16-20260523/gcc/fortran/trans-decl.cc	Sat May 23 22:32:06 2026
--- gcc-16-20260530/gcc/fortran/trans-decl.cc	Sat May 30 22:32:05 2026
*************** get_proc_pointer_decl (gfc_symbol *sym)
*** 2212,2218 ****
  
    if ((sym->ns->proc_name
        && sym->ns->proc_name->backend_decl == current_function_decl)
!       || sym->attr.contained)
      gfc_add_decl_to_function (decl);
    else if (sym->ns->proc_name->attr.flavor != FL_MODULE)
      gfc_add_decl_to_parent_function (decl);
--- 2212,2223 ----
  
    if ((sym->ns->proc_name
        && sym->ns->proc_name->backend_decl == current_function_decl)
!       || sym->attr.contained
!       || (sym->ns->proc_name
! 	  && sym->ns->proc_name->attr.flavor == FL_LABEL))
!     /* The last condition handles BLOCK constructs: the proc_name has
!        FL_LABEL flavor and its backend_decl is not set, but the proc pointer
!        belongs to the enclosing function (current_function_decl).  */
      gfc_add_decl_to_function (decl);
    else if (sym->ns->proc_name->attr.flavor != FL_MODULE)
      gfc_add_decl_to_parent_function (decl);
diff -Nrcpad gcc-16-20260523/gcc/testsuite/ChangeLog gcc-16-20260530/gcc/testsuite/ChangeLog
*** gcc-16-20260523/gcc/testsuite/ChangeLog	Sat May 23 22:32:06 2026
--- gcc-16-20260530/gcc/testsuite/ChangeLog	Sat May 30 22:32:06 2026
***************
*** 1,3 ****
--- 1,76 ----
+ 2026-05-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125454
+ 	* g++.dg/other/array8.C: New test.
+ 
+ 2026-05-28  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-05-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/124151
+ 	* gcc.dg/tree-ssa/pr124151.c: New test.
+ 
+ 2026-05-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125423
+ 	* g++.dg/reflect/bases_of6.C: New test.
+ 
+ 2026-05-26  Soumya AR  <soumyaa@nvidia.com>
+ 
+ 	Backported from master:
+ 	2026-05-08  Soumya AR  <soumyaa@nvidia.com>
+ 
+ 	PR target/124895
+ 	* gcc.target/aarch64/narrow-gp-writes-8.c: New test.
+ 
+ 2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125409
+ 	* gcc.target/avr/torture/pr125409.h: New file.
+ 	* gcc.target/avr/torture/pr125409-fx24-ssk.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-ssr.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-suk.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-sur.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-usk.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-usr.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-uuk.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-uur.c: New test.
+ 
+ 2026-05-23  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-05-23  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/125391
+ 	* gfortran.dg/pr125391.f90: New test.
+ 
+ 2026-05-23  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-23  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/125135
+ 	* g++.dg/cpp0x/implicit18.C: New test.
+ 
+ 2026-05-23  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-21  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/125384
+ 	PR c++/113563
+ 	* g++.dg/cpp0x/lambda/lambda-this23.C: New test.
+ 
  2026-05-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260523/gcc/testsuite/g++.dg/other/array8.C gcc-16-20260530/gcc/testsuite/g++.dg/other/array8.C
*** gcc-16-20260523/gcc/testsuite/g++.dg/other/array8.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/g++.dg/other/array8.C	Sat May 30 22:32:07 2026
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/125454
+ // { dg-do compile { target c++11 } }
+ 
+ template <typename T>
+ void
+ foo()
+ {
+   T a = a[a]; // { dg-error "array subscript is not an integer" }
+ }
+ 
+ void
+ bar ()
+ {
+   foo<int[]>;
+ }
diff -Nrcpad gcc-16-20260523/gcc/testsuite/g++.dg/reflect/bases_of6.C gcc-16-20260530/gcc/testsuite/g++.dg/reflect/bases_of6.C
*** gcc-16-20260523/gcc/testsuite/g++.dg/reflect/bases_of6.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/g++.dg/reflect/bases_of6.C	Sat May 30 22:32:07 2026
***************
*** 0 ****
--- 1,33 ----
+ // PR c++/125423
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ struct Base
+ {
+ };
+ struct Derived : Base
+ {
+ };
+ 
+ template <typename Tp, Tp v> struct get_type
+ {
+     inline constexpr static auto info = ^^void;
+ };
+ 
+ template <std::meta::info base> struct get_type<std::meta::info, base>
+ {
+     inline constexpr static auto info = std::meta::type_of(base);
+ };
+ 
+ template <std::meta::info currField> struct ReflectionSubPanel
+ {
+     static constexpr auto _ranges = []()
+     {
+         constexpr auto b = std::meta::bases_of(^^Derived, std::meta::access_context::unchecked())[0];
+         return get_type<decltype(b), b>::info;
+     }();
+ };
+ 
+ int main() { ReflectionSubPanel<^^Derived> panel; }
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.dg/tree-ssa/pr124151.c gcc-16-20260530/gcc/testsuite/gcc.dg/tree-ssa/pr124151.c
*** gcc-16-20260523/gcc/testsuite/gcc.dg/tree-ssa/pr124151.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.dg/tree-ssa/pr124151.c	Sat May 30 22:32:09 2026
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1" } */
+ 
+ typedef struct {
+   _Bool : 1;
+ } Http2Identifier;
+ typedef struct {
+   _Bool is_end;
+   Http2Identifier identifier;
+ } Http2DataFrame;
+ typedef struct {
+   Http2Identifier identifier;
+   _Bool end_headers;
+ } Http2ContinuationFrame;
+ typedef struct {
+   union {
+     Http2DataFrame data;
+     Http2ContinuationFrame continuation;
+   };
+ } Http2Frame;
+ typedef struct {
+   Http2Identifier stream_identifier;
+ } Http2RawHeader;
+ Http2RawHeader parse_http2_continuation_frame_http2_raw_header;
+ Http2Frame gh2f;
+ void http2_send_and_receive_preface() {
+   Http2ContinuationFrame continuation_frame = {
+       parse_http2_continuation_frame_http2_raw_header.stream_identifier, 0};
+   Http2Frame frame = {.continuation = continuation_frame};
+   gh2f = frame;
+ }
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c gcc-16-20260530/gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c
*** gcc-16-20260523/gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c	Sat May 30 22:32:09 2026
***************
*** 0 ****
--- 1,10 ----
+ /* PR target/124895 */
+ /* { dg-do compile } */
+ /* { dg-options "-Os -fpath-coverage -fno-tree-ccp -fprofile-generate -mnarrow-gp-writes" } */
+ 
+ void
+ foo (unsigned u)
+ {
+   while (u)
+     ;
+ }
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c
*** gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c	Sat May 30 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __int24
+ #define UU signed
+ #define FX _Accum
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c
*** gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c	Sat May 30 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __int24
+ #define UU signed
+ #define FX _Fract
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c
*** gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c	Sat May 30 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __int24
+ #define UU unsigned
+ #define FX _Accum
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c
*** gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c	Sat May 30 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __int24
+ #define UU unsigned
+ #define FX _Fract
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c
*** gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c	Sat May 30 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __uint24
+ #define UU signed
+ #define FX _Accum
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c
*** gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c	Sat May 30 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __uint24
+ #define UU signed
+ #define FX _Fract
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c
*** gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c	Sat May 30 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __uint24
+ #define UU unsigned
+ #define FX _Accum
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c
*** gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c	Sat May 30 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __uint24
+ #define UU unsigned
+ #define FX _Fract
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409.h gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409.h
*** gcc-16-20260523/gcc/testsuite/gcc.target/avr/torture/pr125409.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gcc.target/avr/torture/pr125409.h	Sat May 30 22:32:10 2026
***************
*** 0 ****
--- 1,16 ----
+ UU FX fx_fun (TT x) { return x; }
+ TT fun_fx (UU FX x) { return x; }
+ 
+ short UU FX hfx_fun (TT x) { return x; }
+ TT fun_hfx (UU short FX x) { return x; }
+ 
+ long UU FX lfx_fun (TT x) { return x; }
+ TT fun_lfx (UU long FX x) { return x; }
+ 
+ long long UU FX llfx_fun (TT x) { return x; }
+ TT fun_llfx (UU long long FX x) { return x; }
+ 
+ int main (void)
+ {
+   return 0;
+ }
diff -Nrcpad gcc-16-20260523/gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90 gcc-16-20260530/gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90
*** gcc-16-20260523/gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260530/gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90	Sat May 30 22:32:11 2026
***************
*** 0 ****
--- 1,43 ----
+ ! { dg-do run }
+ ! PR fortran/105582
+ ! Procedure pointer declared inside a BLOCK construct in a program that has
+ ! contained procedures used to cause an ICE in convert_nonlocal_reference_op
+ ! (tree-nested.cc) because get_proc_pointer_decl erroneously called
+ ! gfc_add_decl_to_parent_function instead of gfc_add_decl_to_function,
+ ! leaving the decl with DECL_CONTEXT set to NULL instead of the enclosing
+ ! program's function_decl.
+ 
+ module iface_m
+   implicit none
+   abstract interface
+     pure function init_i(x) result(y)
+       double precision, intent(in) :: x(:)
+       double precision, allocatable :: y(:)
+     end function
+   end interface
+ end module
+ 
+ program test_block_proc_ptr
+   use iface_m, only : init_i
+   implicit none
+   integer :: n = 0
+ 
+   block
+     procedure(init_i), pointer :: p
+     double precision, allocatable :: vals(:)
+     p => linear
+     vals = p([1d0, 2d0, 3d0])
+     if (any(abs(vals - [1d0, 2d0, 3d0]) > 1d-10)) n = n + 1
+   end block
+ 
+   if (n /= 0) stop 1
+ 
+ contains
+ 
+   pure function linear(x) result(y)
+     double precision, intent(in) :: x(:)
+     double precision, allocatable :: y(:)
+     y = x
+   end function
+ 
+ end program
diff -Nrcpad gcc-16-20260523/gcc/tree-sra.cc gcc-16-20260530/gcc/tree-sra.cc
*** gcc-16-20260523/gcc/tree-sra.cc	Sat May 23 22:32:12 2026
--- gcc-16-20260530/gcc/tree-sra.cc	Sat May 30 22:32:12 2026
*************** build_debug_ref_for_model (location_t lo
*** 2091,2106 ****
  }
  
  /* Construct a memory reference consisting of component_refs and array_refs to
!    a part of an aggregate *RES (which is of type TYPE).  The requested part
!    should have type EXP_TYPE at be the given OFFSET.  This function might not
!    succeed, it returns true when it does and only then *RES points to something
!    meaningful.  This function should be used only to build expressions that we
!    might need to present to user (e.g. in warnings).  In all other situations,
     build_ref_for_model or build_ref_for_offset should be used instead.  */
  
  static bool
  build_user_friendly_ref_for_offset (tree *res, tree type, HOST_WIDE_INT offset,
! 				    tree exp_type)
  {
    while (1)
      {
--- 2091,2110 ----
  }
  
  /* Construct a memory reference consisting of component_refs and array_refs to
!    a part of an aggregate *RES which is of type TYPE.  The requested part
!    should have type EXP_TYPE at the given OFFSET.  CUR_SIZE must be the size of
!    *RES unless it is known that *RES alone cannot be the result.  This function
!    might not succeed, it returns true when it does and only then *RES points to
!    something meaningful.
! 
!    This function should be used only to build expressions that we might need to
!    present to user (e.g. in warnings).  In all other situations,
     build_ref_for_model or build_ref_for_offset should be used instead.  */
  
  static bool
  build_user_friendly_ref_for_offset (tree *res, tree type, HOST_WIDE_INT offset,
! 				    HOST_WIDE_INT cur_size, tree exp_type,
! 				    HOST_WIDE_INT exp_size)
  {
    while (1)
      {
*************** build_user_friendly_ref_for_offset (tree
*** 2108,2114 ****
        tree tr_size, index, minidx;
        HOST_WIDE_INT el_size;
  
!       if (offset == 0 && exp_type
  	  && types_compatible_p (exp_type, type))
  	return true;
  
--- 2112,2119 ----
        tree tr_size, index, minidx;
        HOST_WIDE_INT el_size;
  
!       if (offset == 0
! 	  && cur_size == exp_size
  	  && types_compatible_p (exp_type, type))
  	return true;
  
*************** build_user_friendly_ref_for_offset (tree
*** 2146,2152 ****
  			     NULL_TREE);
  	      expr_ptr = &expr;
  	      if (build_user_friendly_ref_for_offset (expr_ptr, TREE_TYPE (fld),
! 						      offset - pos, exp_type))
  		{
  		  *res = expr;
  		  return true;
--- 2151,2158 ----
  			     NULL_TREE);
  	      expr_ptr = &expr;
  	      if (build_user_friendly_ref_for_offset (expr_ptr, TREE_TYPE (fld),
! 						      offset - pos, size,
! 						      exp_type, exp_size))
  		{
  		  *res = expr;
  		  return true;
*************** build_user_friendly_ref_for_offset (tree
*** 2169,2185 ****
  	  *res = build4 (ARRAY_REF, TREE_TYPE (type), *res, index,
  			 NULL_TREE, NULL_TREE);
  	  offset = offset % el_size;
  	  type = TREE_TYPE (type);
  	  break;
  
  	default:
! 	  if (offset != 0)
! 	    return false;
! 
! 	  if (exp_type)
! 	    return false;
! 	  else
! 	    return true;
  	}
      }
  }
--- 2175,2186 ----
  	  *res = build4 (ARRAY_REF, TREE_TYPE (type), *res, index,
  			 NULL_TREE, NULL_TREE);
  	  offset = offset % el_size;
+ 	  cur_size = el_size;
  	  type = TREE_TYPE (type);
  	  break;
  
  	default:
! 	  return false;
  	}
      }
  }
*************** create_artificial_child_access (struct a
*** 3070,3076 ****
    struct access *access = access_pool.allocate ();
    memset (access, 0, sizeof (struct access));
    if (!build_user_friendly_ref_for_offset (&expr, TREE_TYPE (expr), new_offset,
! 					   model->type))
      {
        access->grp_no_warning = true;
        expr = build_ref_for_model (EXPR_LOCATION (parent->base), parent->base,
--- 3071,3078 ----
    struct access *access = access_pool.allocate ();
    memset (access, 0, sizeof (struct access));
    if (!build_user_friendly_ref_for_offset (&expr, TREE_TYPE (expr), new_offset,
! 					   parent->size, model->type,
! 					   model->size))
      {
        access->grp_no_warning = true;
        expr = build_ref_for_model (EXPR_LOCATION (parent->base), parent->base,
*************** propagate_subaccesses_from_rhs (struct a
*** 3211,3218 ****
  	  tree t = lacc->base;
  
  	  lacc->type = racc->type;
  	  if (build_user_friendly_ref_for_offset (&t, TREE_TYPE (t),
! 						  lacc->offset, racc->type))
  	    {
  	      lacc->expr = t;
  	      lacc->grp_same_access_path = true;
--- 3213,3223 ----
  	  tree t = lacc->base;
  
  	  lacc->type = racc->type;
+ 	  /* We know racc and lacc are of different types so can pass -1 as
+ 	     cur_size.  */
  	  if (build_user_friendly_ref_for_offset (&t, TREE_TYPE (t),
! 						  lacc->offset, -1,
! 						  racc->type, racc->size))
  	    {
  	      lacc->expr = t;
  	      lacc->grp_same_access_path = true;
*************** propagate_subaccesses_from_rhs (struct a
*** 3270,3276 ****
  	}
  
        if (rchild->grp_unscalarizable_region
- 	  || (rchild->size % BITS_PER_UNIT) != 0
  	  || !budget_for_propagation_access (lacc->base))
  	{
  	  if (!lacc->grp_write && access_or_its_child_written (rchild))
--- 3275,3280 ----
*************** propagate_subaccesses_from_lhs (struct a
*** 3330,3336 ****
        HOST_WIDE_INT norm_offset = lchild->offset + norm_delta;
  
        if (lchild->grp_unscalarizable_region
- 	  || (lchild->size % BITS_PER_UNIT) != 0
  	  || child_would_conflict_in_acc (racc, norm_offset, lchild->size,
  					  &matching_acc)
  	  || !budget_for_propagation_access (racc->base))
--- 3334,3339 ----
diff -Nrcpad gcc-16-20260523/libstdc++-v3/ChangeLog gcc-16-20260530/libstdc++-v3/ChangeLog
*** gcc-16-20260523/libstdc++-v3/ChangeLog	Sat May 23 22:32:14 2026
--- gcc-16-20260530/libstdc++-v3/ChangeLog	Sat May 30 22:32:14 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-05-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/125450
+ 	* include/std/optional (range_format): Do not define for
+ 	freestanding.
+ 
  2026-05-21  Patrick Palka  <ppalka@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260523/libstdc++-v3/include/std/optional gcc-16-20260530/libstdc++-v3/include/std/optional
*** gcc-16-20260523/libstdc++-v3/include/std/optional	Sat May 23 22:32:14 2026
--- gcc-16-20260530/libstdc++-v3/include/std/optional	Sat May 30 22:32:14 2026
***************
*** 60,66 ****
  # include <concepts>
  #endif
  #ifdef __cpp_lib_optional_range_support // C++ >= 26
! # include <bits/formatfwd.h>
  # include <bits/ranges_base.h>
  # include <bits/stl_iterator.h>
  #endif
--- 60,68 ----
  # include <concepts>
  #endif
  #ifdef __cpp_lib_optional_range_support // C++ >= 26
! # if _GLIBCXX_HOSTED
! #  include <bits/formatfwd.h>
! # endif
  # include <bits/ranges_base.h>
  # include <bits/stl_iterator.h>
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2285,2293 ****
--- 2287,2297 ----
      ranges::enable_borrowed_range<optional<_Tp&>> = true;
  #endif
  
+ #if _GLIBCXX_HOSTED
    template<typename _Tp>
      inline constexpr range_format
        format_kind<optional<_Tp>> = range_format::disabled;
+ #endif
  #endif // __cpp_lib_optional_range_support
  
  #undef _GLIBCXX_USE_CONSTRAINTS_FOR_OPTIONAL
