diff -Nrcpad gcc-15-20250607/LAST_UPDATED gcc-15-20250614/LAST_UPDATED
*** gcc-15-20250607/LAST_UPDATED	Sat Jun  7 22:33:20 2025
--- gcc-15-20250614/LAST_UPDATED	Sat Jun 14 22:33:41 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision 69eb1716b884f6213aef30194390d7741af97c80
--- 1 ----
! Obtained from git: releases/gcc-15 revision 61789b5abec3079d02ee9eaa7468015ab1f6f701
diff -Nrcpad gcc-15-20250607/MD5SUMS gcc-15-20250614/MD5SUMS
*** gcc-15-20250607/MD5SUMS	Sat Jun  7 22:33:24 2025
--- gcc-15-20250614/MD5SUMS	Sat Jun 14 22:33:51 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20250607.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20250614.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! b14416beee2b05028e95a0409e91b619  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 988c4c2ba68b82cef793b9ae1581984e  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 514,520 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 74cb7f315026f52130b42dd685b11d6e  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 514,520 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! ebfdb556d0afd67cf231cc249af0d064  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 551,557 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! addc60435a2232f18a0017d0dc4bbdc4  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 551,557 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 6852850d9ee42e4680ccc824518c9eda  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 563,569 ****
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! eec959eadc3d7c0676823b786c1996b4  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 563,569 ----
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 6cc83d581488222632662c18a901928b  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** f14d5e59f3344d9d8ee8a0e5e48a7080  gcc/ad
*** 661,667 ****
  78db9cfd345ee93d918787a8dcf8a3db  gcc/ada/comperr.adb
  b819ca6fd93695993d2656d2edc4cc8c  gcc/ada/comperr.ads
  7f9ac0dab1302fd2696f52755a30ca56  gcc/ada/config-lang.in
! b3f234d93feef083d03df7904e6df0d4  gcc/ada/contracts.adb
  cae81121a4355cb8c6f89e3bf03bdbc3  gcc/ada/contracts.ads
  09a5213fb46479fc00bc1e507f07c02d  gcc/ada/csets.adb
  c8fc2a7d00b9bdf2dfb05cf0fc1c945f  gcc/ada/csets.ads
--- 661,667 ----
  78db9cfd345ee93d918787a8dcf8a3db  gcc/ada/comperr.adb
  b819ca6fd93695993d2656d2edc4cc8c  gcc/ada/comperr.ads
  7f9ac0dab1302fd2696f52755a30ca56  gcc/ada/config-lang.in
! 8a08ec2ca4612bbcce770f19187d7c29  gcc/ada/contracts.adb
  cae81121a4355cb8c6f89e3bf03bdbc3  gcc/ada/contracts.ads
  09a5213fb46479fc00bc1e507f07c02d  gcc/ada/csets.adb
  c8fc2a7d00b9bdf2dfb05cf0fc1c945f  gcc/ada/csets.ads
*************** a012e0cb5df366014b5a4988036a509a  gcc/ad
*** 698,704 ****
  a279ed6487990a204e636674f9c44623  gcc/ada/doc/gnat_rm.rst
  c4f5f27a027adfe3db5b39193542c956  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 1088949e7479ebc1ba756442a049c3b3  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  c2ce843af1cfd3f0c588b2a488ad8d45  gcc/ada/doc/gnat_rm/implementation_advice.rst
  9841e49a49af522a8041a3b7a4df8b92  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
--- 698,704 ----
  a279ed6487990a204e636674f9c44623  gcc/ada/doc/gnat_rm.rst
  c4f5f27a027adfe3db5b39193542c956  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 8e52fb340bf9b3b220e7e6a9cee8be87  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  c2ce843af1cfd3f0c588b2a488ad8d45  gcc/ada/doc/gnat_rm/implementation_advice.rst
  9841e49a49af522a8041a3b7a4df8b92  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
*************** a8608ebf71444d2564728c8a41283e03  gcc/ad
*** 718,728 ****
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  97271c06a675f62b05d2a744164c36e1  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 51fc68e006809f4713b28789602dfc35  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
! 39521c37ba9c354cd3fd0a709dd191e4  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
  d05e426d95c24c54af666c18b1fb547c  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
  f7e7179ad111262b98d743c63002bc82  gcc/ada/doc/gnat_ugn/inline_assembler.rst
  1550414bb7a49b59e5f3355f886df827  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
--- 718,728 ----
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  97271c06a675f62b05d2a744164c36e1  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! c0f8fd8c7427f180654f7edf1f4c0b5f  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
! f67a4cd7fabedae45b6da4cbdc834202  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
  d05e426d95c24c54af666c18b1fb547c  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
  f7e7179ad111262b98d743c63002bc82  gcc/ada/doc/gnat_ugn/inline_assembler.rst
  1550414bb7a49b59e5f3355f886df827  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
*************** f1c71b64e1c84e240c7b5aea7331a32a  gcc/ad
*** 738,744 ****
  b197c097238ab059c90fd0c9452e6a76  gcc/ada/einfo-utils.adb
  9294b28a2b5738443be8b4fcd83a2391  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! 25284f00e37413b69c185f8987a0433c  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
--- 738,744 ----
  b197c097238ab059c90fd0c9452e6a76  gcc/ada/einfo-utils.adb
  9294b28a2b5738443be8b4fcd83a2391  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! 8738d9dc7133788cb2c569cb4a8a82c0  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
*************** eb0642ebe2b75475e73f7ae765d24bd2  gcc/ad
*** 755,765 ****
  b270d994d3afc78b194d5ab9ddd800c0  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! 761ffff139778a4277314f3fb1b0e1a3  gcc/ada/exp_aggr.adb
  cc3a6ec62bea106872aef6143609f920  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 6fb4d22f9e2ad6075dff3462e21d54db  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
--- 755,765 ----
  b270d994d3afc78b194d5ab9ddd800c0  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! 85ee1ec5360a870732539e27c75f545c  gcc/ada/exp_aggr.adb
  cc3a6ec62bea106872aef6143609f920  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 491df01b54bcad5420e3bd209fd97be8  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
*************** d037443d1b61c02110e124f3c701b449  gcc/ad
*** 774,780 ****
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
  058a67bc4c6ae671017f76da4b3e214e  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! 25120d21c79789e9553e5fd694b7e996  gcc/ada/exp_ch4.adb
  689dbf89ad9d44a03b54f8ce05455a31  gcc/ada/exp_ch4.ads
  c642a1d7102316f2db8b308db52c324b  gcc/ada/exp_ch5.adb
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
--- 774,780 ----
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
  058a67bc4c6ae671017f76da4b3e214e  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! cf41a0e79c6a1d13896484a7d7759086  gcc/ada/exp_ch4.adb
  689dbf89ad9d44a03b54f8ce05455a31  gcc/ada/exp_ch4.ads
  c642a1d7102316f2db8b308db52c324b  gcc/ada/exp_ch5.adb
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
*************** b042ff9582cb94caab7f476203ea6809  gcc/ad
*** 818,824 ****
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! 86caf0eda0d77ce80aa4210582b0b68c  gcc/ada/exp_util.adb
  8b222934ed10101bc9553a5d06edfabb  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
--- 818,824 ----
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! 6afcccc69a788475f4e8565dc1d1d259  gcc/ada/exp_util.adb
  8b222934ed10101bc9553a5d06edfabb  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
*************** fdb9382a8288a3a5b805910a0a3615e8  gcc/ad
*** 833,839 ****
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 8d2feb64e9bd970abaffb0c55af6d492  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
--- 833,839 ----
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 8f62b51cd98cb503dcdb7a3196652fff  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
*************** ceea56f2846e3f170ecd0707ee0cd771  gcc/ad
*** 882,889 ****
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! 63f019437765ea750d2b0923bf21618c  gcc/ada/gnat_rm.texi
! ed78f1c8a80ae6943360cd5d22074c2d  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  aef32d71626b4170f80d299f2304d737  gcc/ada/gnatchop.adb
--- 882,889 ----
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! dc9cda00481a5069f6febcb6a54e9c73  gcc/ada/gnat_rm.texi
! aab9a487c7c6377a292d239367dc7c62  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  aef32d71626b4170f80d299f2304d737  gcc/ada/gnatchop.adb
*************** d9322225886886bb45307ab213ae42e8  gcc/ad
*** 1080,1086 ****
  c490e53799847d22dca76f3aa82718e7  gcc/ada/libgnarl/s-qnx.ads
  814bcd91d4b539d7bd20024c8c507881  gcc/ada/libgnarl/s-solita.adb
  4d820958426efff634a0d493ff53d34a  gcc/ada/libgnarl/s-solita.ads
! 3fcc109ac10c373ba2e23de8fe4368a6  gcc/ada/libgnarl/s-stusta.adb
  b11059929f065d4d1e1b673b9277fa04  gcc/ada/libgnarl/s-stusta.ads
  c89a036a39ffacecc45eb509f8bb6772  gcc/ada/libgnarl/s-taasde.adb
  3927a6965bb4832625cd9b69d3e143b0  gcc/ada/libgnarl/s-taasde.ads
--- 1080,1086 ----
  c490e53799847d22dca76f3aa82718e7  gcc/ada/libgnarl/s-qnx.ads
  814bcd91d4b539d7bd20024c8c507881  gcc/ada/libgnarl/s-solita.adb
  4d820958426efff634a0d493ff53d34a  gcc/ada/libgnarl/s-solita.ads
! 1cdf5498ce5d53d47910c453b7520e08  gcc/ada/libgnarl/s-stusta.adb
  b11059929f065d4d1e1b673b9277fa04  gcc/ada/libgnarl/s-stusta.ads
  c89a036a39ffacecc45eb509f8bb6772  gcc/ada/libgnarl/s-taasde.adb
  3927a6965bb4832625cd9b69d3e143b0  gcc/ada/libgnarl/s-taasde.ads
*************** d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ad
*** 2915,2921 ****
  bfe4748123d415f6eb13d89a585468f1  gcc/ada/sem_attr.ads
  4a02c8331cea42852aa409345905ab04  gcc/ada/sem_aux.adb
  3f6d12eb2d9c7a6a829eaf2bda0535a5  gcc/ada/sem_aux.ads
! 95f5465ee6749d8d7209f2477eaa2b5c  gcc/ada/sem_case.adb
  88daa5c9b6e135316b52695cae25a496  gcc/ada/sem_case.ads
  84667b3de209c0b04f82a349c6125ab0  gcc/ada/sem_cat.adb
  e364f4e3ae92066699cc93a8f7b828c1  gcc/ada/sem_cat.ads
--- 2915,2921 ----
  bfe4748123d415f6eb13d89a585468f1  gcc/ada/sem_attr.ads
  4a02c8331cea42852aa409345905ab04  gcc/ada/sem_aux.adb
  3f6d12eb2d9c7a6a829eaf2bda0535a5  gcc/ada/sem_aux.ads
! 1b4e45ef8df3f33dae9b6710ce3bbf7a  gcc/ada/sem_case.adb
  88daa5c9b6e135316b52695cae25a496  gcc/ada/sem_case.ads
  84667b3de209c0b04f82a349c6125ab0  gcc/ada/sem_cat.adb
  e364f4e3ae92066699cc93a8f7b828c1  gcc/ada/sem_cat.ads
*************** e364f4e3ae92066699cc93a8f7b828c1  gcc/ad
*** 2923,2935 ****
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! cbe9f460bd2c7f318044bdf84715739e  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
  68a4ab355d2e5ec7094e5a397fe51cee  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 240fe6ac32afae35f5dd6d314393ef53  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
  ca460b7fc99c5961aa541b95e1730a66  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
--- 2923,2935 ----
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! d5a830d4c7f937442a45f667249e9a85  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
  68a4ab355d2e5ec7094e5a397fe51cee  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 7a47d45d34f8d63a0f58ce81291f38cc  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
  ca460b7fc99c5961aa541b95e1730a66  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
*************** e8e79e2a818321d7816e27eed8d17404  gcc/ad
*** 2959,2965 ****
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! c48b9a5f156d00572d9ac2b90c919eaf  gcc/ada/sem_prag.adb
  3d4cec1697839c758bf4ee78035143d3  gcc/ada/sem_prag.ads
  682159c8a517a990414691a040df1b40  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
--- 2959,2965 ----
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! f0957cd419f505120a3366c63e8a45f7  gcc/ada/sem_prag.adb
  3d4cec1697839c758bf4ee78035143d3  gcc/ada/sem_prag.ads
  682159c8a517a990414691a040df1b40  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
*************** aa571047977f5d4eede1b3c590cfca1a  gcc/ad
*** 3054,3060 ****
  3b16fb5a404c2abb2d73de19f67cd9ae  gcc/ada/urealp.adb
  7c44e3e9dfe3a3602c5e4a0e9f21fc9e  gcc/ada/urealp.ads
  8da16dc7040064c1822811f3aa2b0741  gcc/ada/urealp.h
! 2207d552bf64c2646f0813e5f7493c77  gcc/ada/usage.adb
  39aa1ad0590789d255e892abebddfe14  gcc/ada/usage.ads
  711166db03aab3b4aa42d708e165cdcb  gcc/ada/validsw.adb
  0fff79e753ec9a011dbe7450d07825bf  gcc/ada/validsw.ads
--- 3054,3060 ----
  3b16fb5a404c2abb2d73de19f67cd9ae  gcc/ada/urealp.adb
  7c44e3e9dfe3a3602c5e4a0e9f21fc9e  gcc/ada/urealp.ads
  8da16dc7040064c1822811f3aa2b0741  gcc/ada/urealp.h
! 5e14ee86b0c0421dc648a56bf9f5e755  gcc/ada/usage.adb
  39aa1ad0590789d255e892abebddfe14  gcc/ada/usage.ads
  711166db03aab3b4aa42d708e165cdcb  gcc/ada/validsw.adb
  0fff79e753ec9a011dbe7450d07825bf  gcc/ada/validsw.ads
*************** d37f092206fc4c0379cee5e5fc01b654  gcc/co
*** 3772,3778 ****
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
  42d978d2c17da8893ddecf6e3a4b0b59  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
! 206ed5e2c2e66a228c6a44c9ddec9dff  gcc/config/avr/avr.md
  076d1efacbf67abfb55af3f4a6d35b43  gcc/config/avr/avr.opt
  f53384c1aec1ca9f9bbe9dd81baace9a  gcc/config/avr/avr.opt.urls
  e6d58e7505c28a23d3cd4e70e534521e  gcc/config/avr/avrlibc.h
--- 3772,3778 ----
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
  42d978d2c17da8893ddecf6e3a4b0b59  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
! 3d964ad6aff7842114bb72be953b8364  gcc/config/avr/avr.md
  076d1efacbf67abfb55af3f4a6d35b43  gcc/config/avr/avr.opt
  f53384c1aec1ca9f9bbe9dd81baace9a  gcc/config/avr/avr.opt.urls
  e6d58e7505c28a23d3cd4e70e534521e  gcc/config/avr/avrlibc.h
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5496,5502 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! ecde151df0f2569543a74cb8ca429774  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5496,5502 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 0cc487737c542f17315bb5207a265875  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** fce8de27014c109814b3f69be6a5d4f6  gcc/cp
*** 5537,5549 ****
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  bfc0a4cea2b61e7ae38934b220f84e85  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 31bd06a945e18703b7cc48d3b5609d68  gcc/cp/constexpr.cc
  d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
  0c8a19006662033503ace04c9a20ceae  gcc/cp/coroutines.cc
  50f398cce18f76ec8d119ddd9d133f78  gcc/cp/coroutines.h
! e74b2ddf1eacc2950a54441a502c96fd  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  a46a06074cd68181251e3541b4689021  gcc/cp/cp-objcp-common.cc
--- 5537,5549 ----
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  bfc0a4cea2b61e7ae38934b220f84e85  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! f23093e4883224d6463518abe835a62b  gcc/cp/constexpr.cc
  d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
  0c8a19006662033503ace04c9a20ceae  gcc/cp/coroutines.cc
  50f398cce18f76ec8d119ddd9d133f78  gcc/cp/coroutines.h
! bb4c9b6410ab82d5e1d215490036ab6b  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  a46a06074cd68181251e3541b4689021  gcc/cp/cp-objcp-common.cc
*************** e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp
*** 5558,5564 ****
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
  f581854200ed2ce356fd6d80042ba80a  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! 2b987c48342f497558e2b24d95744497  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
  fa4cdfbca134d42fa0239a8533452558  gcc/cp/error.cc
  86f47b28d673601022d0205cdd718f9d  gcc/cp/except.cc
--- 5558,5564 ----
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
  f581854200ed2ce356fd6d80042ba80a  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! 0b589466f97f1843080d9667c2263668  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
  fa4cdfbca134d42fa0239a8533452558  gcc/cp/error.cc
  86f47b28d673601022d0205cdd718f9d  gcc/cp/except.cc
*************** b5fa845ff578d70e8ceae655d6affc51  gcc/ex
*** 6039,6045 ****
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  bc438860c6c9b2d1d32fad8eb6040ccd  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
! 81dcf70fa4896526691f574757c41ad2  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
--- 6039,6045 ----
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  bc438860c6c9b2d1d32fad8eb6040ccd  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
! 6023e86ee70f68a65ad9ecb5735697ae  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6056,6062 ****
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 93833abc39858677b8657a52129185df  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6056,6062 ----
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 2d5938a70000aea47a884ab2b5dcd149  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fo
*** 6149,6155 ****
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  ba1a270a0735e8dd213da50ccb70ea32  gcc/fortran/trans-decl.cc
! 85342544e201b38b342ec76a59856833  gcc/fortran/trans-expr.cc
  4409efd13e205fa6886f73e55cc425bb  gcc/fortran/trans-intrinsic.cc
  9cf7c294c06fdaea67dcd2b9ff2cf5ad  gcc/fortran/trans-io.cc
  710d1b981b11b3456d5e23839efa4675  gcc/fortran/trans-openmp.cc
--- 6149,6155 ----
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  ba1a270a0735e8dd213da50ccb70ea32  gcc/fortran/trans-decl.cc
! 6128f79195fff9b0987836a492736069  gcc/fortran/trans-expr.cc
  4409efd13e205fa6886f73e55cc425bb  gcc/fortran/trans-intrinsic.cc
  9cf7c294c06fdaea67dcd2b9ff2cf5ad  gcc/fortran/trans-io.cc
  710d1b981b11b3456d5e23839efa4675  gcc/fortran/trans-openmp.cc
*************** d33136e7edecd120aa035f0e1ad240b0  gcc/ip
*** 6481,6487 ****
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
  3290558dca39b32c0ca581e6c3427551  gcc/ipa-predicate.h
  efab6d5ed309040ea34311e2e35802fe  gcc/ipa-profile.cc
! 503dfb9e665e2a4311f44e83c522b044  gcc/ipa-prop.cc
  769c7da3be6c74b69be2f9572626e59f  gcc/ipa-prop.h
  1ab3b52af464e998b39403664a5ee0c4  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
--- 6481,6487 ----
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
  3290558dca39b32c0ca581e6c3427551  gcc/ipa-predicate.h
  efab6d5ed309040ea34311e2e35802fe  gcc/ipa-profile.cc
! 191f4b6285522225f83d829c5d171ce8  gcc/ipa-prop.cc
  769c7da3be6c74b69be2f9572626e59f  gcc/ipa-prop.h
  1ab3b52af464e998b39403664a5ee0c4  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
*************** e3f908061f2b051f55381b513a49022b  gcc/pa
*** 7723,7735 ****
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! dd99e33dc7bb72e89c63bc5e652d44a2  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  ad3ed4d3a0135fbf9610627185805a14  gcc/po/be.po
  f06a600ee92348bc59755f3b4e3508bd  gcc/po/da.po
  eb727b61fc41c69f8eb58feed8f6f9af  gcc/po/de.po
  9dbd88f88adbc476a62e0c28592b8fe3  gcc/po/el.po
! f8a2f5613d5ae68cdad556047b6e7af3  gcc/po/es.po
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
  fc82e39614cbd5712e526b5f96bc1f74  gcc/po/fi.po
  52fd9ff2ae03e28d28ad65440d9548b2  gcc/po/fr.po
--- 7723,7735 ----
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! 03e756329d3774c0428af44f94550126  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  ad3ed4d3a0135fbf9610627185805a14  gcc/po/be.po
  f06a600ee92348bc59755f3b4e3508bd  gcc/po/da.po
  eb727b61fc41c69f8eb58feed8f6f9af  gcc/po/de.po
  9dbd88f88adbc476a62e0c28592b8fe3  gcc/po/el.po
! 2a8b04245b2c87d2208d599cc879f4c5  gcc/po/es.po
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
  fc82e39614cbd5712e526b5f96bc1f74  gcc/po/fi.po
  52fd9ff2ae03e28d28ad65440d9548b2  gcc/po/fr.po
*************** e8038f0b65555e326f704a4460123122  gcc/re
*** 7785,7791 ****
  3dd0d65025f58dfce5d6c65cbf460d0a  gcc/read-rtl-function.cc
  cd83aae447be541259a39119965eecb3  gcc/read-rtl-function.h
  9682aead4a158a567da54b3f2e28b405  gcc/read-rtl.cc
! b92e96443c50a876d7c10ea6563e0e26  gcc/real.cc
  cfd72298c4b4412115571bb0330d1cb4  gcc/real.h
  45eaf15130a976ff2f72716853fe77c6  gcc/realmpfr.cc
  ec455f45b6b3263f840fb385563308d7  gcc/realmpfr.h
--- 7785,7791 ----
  3dd0d65025f58dfce5d6c65cbf460d0a  gcc/read-rtl-function.cc
  cd83aae447be541259a39119965eecb3  gcc/read-rtl-function.h
  9682aead4a158a567da54b3f2e28b405  gcc/read-rtl.cc
! 4e15a5539de152fbb517e87ebb0b0875  gcc/real.cc
  cfd72298c4b4412115571bb0330d1cb4  gcc/real.h
  45eaf15130a976ff2f72716853fe77c6  gcc/realmpfr.cc
  ec455f45b6b3263f840fb385563308d7  gcc/realmpfr.h
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8430,8436 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 874473981e89dac89f8bbf99f7237fcf  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8430,8436 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 5990399d20c9a9a6951bbd5ee4838ed6  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** bb1e8039c5f9a1898a554f4a2c5b948b  gcc/te
*** 20145,20150 ****
--- 20145,20151 ----
  d2b00d74edfce4b38dded9d7db2fe03e  gcc/testsuite/g++.dg/cpp1z/constexpr-if36.C
  68e49d8c04b03376d365a022cccfff64  gcc/testsuite/g++.dg/cpp1z/constexpr-if37.C
  5b41ab566c82afde0e0be2b28cfb55e4  gcc/testsuite/g++.dg/cpp1z/constexpr-if38.C
+ 2d5ffe49d0e04f8c3fb3dda71995114f  gcc/testsuite/g++.dg/cpp1z/constexpr-if39.C
  d32800b4d59baf4fd0d00036181adc4d  gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C
  8fa44fc4f9f1105ec488f8e5308e62eb  gcc/testsuite/g++.dg/cpp1z/constexpr-if5.C
  dd3fed7a614d71be04ab2475cca10561  gcc/testsuite/g++.dg/cpp1z/constexpr-if6.C
*************** c4beb3372cb0e77f36a788efb02031c2  gcc/te
*** 21481,21486 ****
--- 21482,21488 ----
  d29f558af48deff313645aecd90adb8d  gcc/testsuite/g++.dg/cpp2a/constexpr-new8.C
  89741a348551bf62e5198e689a2cb9eb  gcc/testsuite/g++.dg/cpp2a/constexpr-new9.C
  1d3b0e7bd64b76d92b8ff4d82aba48e9  gcc/testsuite/g++.dg/cpp2a/constexpr-prvalue1.C
+ 7ab8f2bb925385f3c907d1d36a81ac9b  gcc/testsuite/g++.dg/cpp2a/constexpr-prvalue2.C
  081a94c39fa972dab2d9f8590e087bc6  gcc/testsuite/g++.dg/cpp2a/constexpr-ref1.C
  fe2e298a3cf2e9094a79a25a4ffd8fc2  gcc/testsuite/g++.dg/cpp2a/constexpr-shift1.C
  1d1e610556de3295af12cf17177f42b7  gcc/testsuite/g++.dg/cpp2a/constexpr-try1.C
*************** c18469175af3ebdf263d34347ebe2d40  gcc/te
*** 43209,43214 ****
--- 43211,43217 ----
  d217543f954eb3f31e246355824f653a  gcc/testsuite/gcc.dg/bitint-120.c
  2cdc0474f10fd564ead32c0c64a2d7c8  gcc/testsuite/gcc.dg/bitint-121.c
  43db7c5f800ce763fcf885501389882a  gcc/testsuite/gcc.dg/bitint-122.c
+ 7d02ff9539e664bbbcfc85b464d916c1  gcc/testsuite/gcc.dg/bitint-123.c
  aa6e262f1d508ec048e76ac4af6675a4  gcc/testsuite/gcc.dg/bitint-13.c
  e6db29256563268a3c327706e78c79a4  gcc/testsuite/gcc.dg/bitint-14.c
  c748706240385773f27caba61cbbcbd8  gcc/testsuite/gcc.dg/bitint-15.c
*************** d8f0256cde05093b9738e8287c58d5c3  gcc/te
*** 47685,47690 ****
--- 47688,47694 ----
  e39432b4ae7797e55b13f6d2fd29a4a6  gcc/testsuite/gcc.dg/ipa/pr119852.c
  fc7c9c751d59b444d0ab30c4d9029491  gcc/testsuite/gcc.dg/ipa/pr120044-1.c
  538e5a7542c72b7ea4e4375cbebde001  gcc/testsuite/gcc.dg/ipa/pr120044-2.c
+ 3c119ebca762218e529eb71f0df740de  gcc/testsuite/gcc.dg/ipa/pr120295.c
  c8295ff7fd7e271d17e7609620f5dfcb  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
  6e1b4f2c5d0c0d768778da8e3b7df828  gcc/testsuite/gcc.dg/ipa/pr48195.c
*************** e33af444b933ae4b76c6fd6ea535e112  gcc/te
*** 49428,49433 ****
--- 49432,49438 ----
  cb7b5505103ef079e746dd619a21ee86  gcc/testsuite/gcc.dg/pr120057-2.c
  5db833c38de3e5ade44290c729fb748c  gcc/testsuite/gcc.dg/pr120074.c
  9444444b4f048eadd4b6a2d7592f5fca  gcc/testsuite/gcc.dg/pr120480.c
+ 4a9d9632d82cf6c4f4f4acbad8ab018d  gcc/testsuite/gcc.dg/pr120638.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** a8c77450164d982f6f0dcc79256dc3b3  gcc/te
*** 53117,53123 ****
  eddfc0d7cd1c070bdf2c737c7d6c0fd6  gcc/testsuite/gcc.dg/torture/pr117546.c
  318fa402aa23281002f7acad59c9cdf6  gcc/testsuite/gcc.dg/torture/pr117567.c
  211f874eb690213e110852d5efe7da32  gcc/testsuite/gcc.dg/torture/pr117574-1.c
! 76bbfa7fe02fbfd78a081d253fceb5e9  gcc/testsuite/gcc.dg/torture/pr117811.c
  a54993330e7b027c17c4eb45e9a8e2fc  gcc/testsuite/gcc.dg/torture/pr117859-1.c
  6ca4b56072ad00e7b9bb3f7ceae18e75  gcc/testsuite/gcc.dg/torture/pr117859-2.c
  6b9aaa702f18d21348344dba6b6aa8ae  gcc/testsuite/gcc.dg/torture/pr117938.c
--- 53122,53128 ----
  eddfc0d7cd1c070bdf2c737c7d6c0fd6  gcc/testsuite/gcc.dg/torture/pr117546.c
  318fa402aa23281002f7acad59c9cdf6  gcc/testsuite/gcc.dg/torture/pr117567.c
  211f874eb690213e110852d5efe7da32  gcc/testsuite/gcc.dg/torture/pr117574-1.c
! fbc66d37323062d4dfeea9f5f179a29e  gcc/testsuite/gcc.dg/torture/pr117811.c
  a54993330e7b027c17c4eb45e9a8e2fc  gcc/testsuite/gcc.dg/torture/pr117859-1.c
  6ca4b56072ad00e7b9bb3f7ceae18e75  gcc/testsuite/gcc.dg/torture/pr117859-2.c
  6b9aaa702f18d21348344dba6b6aa8ae  gcc/testsuite/gcc.dg/torture/pr117938.c
*************** e5d8d3639b555ba70830b25736ebf22e  gcc/te
*** 72647,72652 ****
--- 72652,72660 ----
  cb28795666ca7509ec1f022d3bd3f094  gcc/testsuite/gcc.target/avr/torture/pr119989-memx-3.c
  f0df0c8f4daf66789854622391d700cf  gcc/testsuite/gcc.target/avr/torture/pr119989-memx-4.c
  74ee04691fd8567973b8145f4a03df26  gcc/testsuite/gcc.target/avr/torture/pr119989.h
+ 59f291298a5520267ffaa080ff9af660  gcc/testsuite/gcc.target/avr/torture/pr120423-1.c
+ 335e928612eeba541ace98419cfa1588  gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c
+ 63785ceba6e301ca68abd46c75c8f6a8  gcc/testsuite/gcc.target/avr/torture/pr120423-2.c
  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
*************** eef9c4fb4632664f421c4067e9f7dd53  gcc/te
*** 106427,106432 ****
--- 106435,106441 ----
  9619c507201f560eff2135e49692d052  gcc/testsuite/gfortran.dg/save_5.f90
  bcec3240f40aa5093a05d7cd8024acf3  gcc/testsuite/gfortran.dg/save_6.f90
  751220763a6526f3644c983c901f1c25  gcc/testsuite/gfortran.dg/save_7.f90
+ 6be5b43eab49c79032e7249345565e1c  gcc/testsuite/gfortran.dg/save_8.f90
  969e348eec71de0c469550da97db323d  gcc/testsuite/gfortran.dg/save_common.f90
  8077a483f690b8b2a62c945c63fa4b57  gcc/testsuite/gfortran.dg/save_parameter.f90
  1a1f478cd1af5c7ca0f1139bd3142853  gcc/testsuite/gfortran.dg/save_result.f90
*************** bcff760f6710b9047412aba72a381983  gcc/tr
*** 117224,117230 ****
  591222e5199894b9b5d23b1822f7e309  gcc/tree-cfg.h
  a48b85120f042a19d52da08d304cc287  gcc/tree-cfgcleanup.cc
  4357345e39068e97ced26f06af8109a6  gcc/tree-cfgcleanup.h
! 08af477af99a77369cf1e05fc6fdf3e9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
  8bf7d3cd5470b24f391fbdaf27a7fa3d  gcc/tree-complex.cc
  1a4cfcc258f7e90de06692e266fb2918  gcc/tree-core.h
--- 117233,117239 ----
  591222e5199894b9b5d23b1822f7e309  gcc/tree-cfg.h
  a48b85120f042a19d52da08d304cc287  gcc/tree-cfgcleanup.cc
  4357345e39068e97ced26f06af8109a6  gcc/tree-cfgcleanup.h
! 1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
  8bf7d3cd5470b24f391fbdaf27a7fa3d  gcc/tree-complex.cc
  1a4cfcc258f7e90de06692e266fb2918  gcc/tree-core.h
*************** fbcc93539b376489c1256eb8cf2d4800  gcc/tr
*** 117308,117314 ****
  57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! 819958f599a9ce6affe2c76279435a33  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  0ed882dedcd92c361bc556587aaa4b74  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
--- 117317,117323 ----
  57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! ddfe7a899798f2b0015084eb976ead01  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  0ed882dedcd92c361bc556587aaa4b74  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
*************** b88eb62a0a038d8123463c323969fbe2  gcc/tr
*** 117361,117367 ****
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
! 3203ee3a1a9e12ac7fe3ed221481c21a  gcc/tree-vectorizer.h
  cb2defb55935eac3f24944ba204230f0  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
  d5ca524138d04514e07eeb06df2087cd  gcc/tree.cc
--- 117370,117376 ----
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
! f5c90b57853064f13fc6868527a2ea7e  gcc/tree-vectorizer.h
  cb2defb55935eac3f24944ba204230f0  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
  d5ca524138d04514e07eeb06df2087cd  gcc/tree.cc
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 131327,131333 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 34a2dbc5597f2b64480d235305b3f807  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 131336,131342 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 86c4917dbb68aca95086d4cec18b5fbc  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** a155d2afa910d24be0955f42c4585228  libstd
*** 132016,132022 ****
  047d91e40a978dcbedbfd761ecb495d4  libstdc++-v3/include/bits/c++config
  4ab7627c024bab75db708e43d35616aa  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
! 2ac54ed5e0fab6bc6f771ecb2e9a9757  libstdc++-v3/include/bits/chrono.h
  11dfe3645ed9c064bfe03ea9bcf79134  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
--- 132025,132031 ----
  047d91e40a978dcbedbfd761ecb495d4  libstdc++-v3/include/bits/c++config
  4ab7627c024bab75db708e43d35616aa  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
! 8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
  11dfe3645ed9c064bfe03ea9bcf79134  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
*************** ae96a272e65886b9386e26db37971da1  libstd
*** 132722,132728 ****
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 6101cd159afaeadca59a17145628acf0  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
  5b0f9576e4006baf8a1aba30625aa30c  libstdc++-v3/include/std/functional
--- 132731,132737 ----
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 52dd7d21877af7f366c62d1f8e91449b  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
  5b0f9576e4006baf8a1aba30625aa30c  libstdc++-v3/include/std/functional
*************** ec6997cdd9a94dff1e8525a338851cc5  libstd
*** 134642,134647 ****
--- 134651,134657 ----
  2a6a31d77778debf3fc91b1cea557b6b  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release.cc
  a30e63b74d043813ec682fada12affcf  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release_single.cc
  b1affac1600571c2a58ec6515df38a45  libstdc++-v3/testsuite/20_util/system_clock/1.cc
+ 3df5d35bbcbd9760389b0f913b3844dc  libstdc++-v3/testsuite/20_util/system_clock/99832.cc
  8aa7e890744708e387c4df2ef0ccd70e  libstdc++-v3/testsuite/20_util/system_clock/constexpr_data.cc
  873e1494b6fbf3f61d9ef79c899f447a  libstdc++-v3/testsuite/20_util/temporary_buffer.cc
  5d657fa8f16a4aecffcad1fb7165bb7b  libstdc++-v3/testsuite/20_util/time_point/1.cc
*************** ba0338f26a871a1d2585f82e2ee43984  libstd
*** 142165,142170 ****
--- 142175,142181 ----
  3f84148bfc5153a2278f3c8c413dad98  libstdc++-v3/testsuite/std/format/error.cc
  6425de3f85b700ce40dd3b11d934ee43  libstdc++-v3/testsuite/std/format/format_string.cc
  6fa5a2c92632d72f763333e89659d4a5  libstdc++-v3/testsuite/std/format/formatter/112832.cc
+ 45280a2212e6fb520cb8b7465d640540  libstdc++-v3/testsuite/std/format/formatter/120625.cc
  6dfab89727d04a1035aba73afcf4d6a8  libstdc++-v3/testsuite/std/format/formatter/basic.cc
  ded8934ce957f586a60f8704fba49c77  libstdc++-v3/testsuite/std/format/formatter/concept.cc
  43cc21b94d247227b33bbccce8e28b07  libstdc++-v3/testsuite/std/format/formatter/ext_float.cc
*************** e7d2a20ce851bd6197787606fcea68bd  libstd
*** 142172,142178 ****
  9da8b451d80f7ce437c2c7f6cfcee138  libstdc++-v3/testsuite/std/format/formatter/requirements.cc
  a1d452e66d840a306985b18ad9ae0a8e  libstdc++-v3/testsuite/std/format/functions/107871.cc
  a7244ffd437f4addc853cfdd012c5cba  libstdc++-v3/testsuite/std/format/functions/114519.cc
! 237708e398bc572134fcc5d5ca701f62  libstdc++-v3/testsuite/std/format/functions/format.cc
  8ee425f04d2e4782e67ab2eb62208b7f  libstdc++-v3/testsuite/std/format/functions/format_to.cc
  c5e2b63672ec2df6fdcba9b4e1ba3ba0  libstdc++-v3/testsuite/std/format/functions/format_to_n.cc
  f859e29ec6cd7017c9d0abc60ed4b8ce  libstdc++-v3/testsuite/std/format/functions/size.cc
--- 142183,142189 ----
  9da8b451d80f7ce437c2c7f6cfcee138  libstdc++-v3/testsuite/std/format/formatter/requirements.cc
  a1d452e66d840a306985b18ad9ae0a8e  libstdc++-v3/testsuite/std/format/functions/107871.cc
  a7244ffd437f4addc853cfdd012c5cba  libstdc++-v3/testsuite/std/format/functions/114519.cc
! db7594263aafcbee351551419f886432  libstdc++-v3/testsuite/std/format/functions/format.cc
  8ee425f04d2e4782e67ab2eb62208b7f  libstdc++-v3/testsuite/std/format/functions/format_to.cc
  c5e2b63672ec2df6fdcba9b4e1ba3ba0  libstdc++-v3/testsuite/std/format/functions/format_to_n.cc
  f859e29ec6cd7017c9d0abc60ed4b8ce  libstdc++-v3/testsuite/std/format/functions/size.cc
diff -Nrcpad gcc-15-20250607/gcc/ChangeLog gcc-15-20250614/gcc/ChangeLog
*** gcc-15-20250607/gcc/ChangeLog	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ChangeLog	Sat Jun 14 22:32:42 2025
***************
*** 1,3 ****
--- 1,58 ----
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/120638
+ 	* tree-ssa-math-opts.cc (pass_cse_reciprocals::execute): Call
+ 	reset_flow_sensitive_info on arg1.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120547
+ 	* real.cc (real_from_integer): Remove maxbitlen variable, use
+ 	len instead of that.  When shifting right, or in 1 if any of the
+ 	shifted away bits are non-zero.  Formatting fix.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-05-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-chrec.cc (convert_affine_scev): Use signed_type_for instead of
+ 	build_nonstandard_integer_type.
+ 
+ 2025-06-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2025-05-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/120295
+ 	* ipa-prop.cc (update_jump_functions_after_inlining): Do not
+ 	combine pass-through jump functions with type-casts changing
+ 	signedness.
+ 
+ 2025-06-10  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-04-30  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR target/120042
+ 	* tree-vectorizer.h: Include dominance.h.
+ 
+ 2025-06-10  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2025-06-04  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR rtl-optimization/120050
+ 	* ext-dce.cc (ext_dce_process_uses): Break early if a SUBREG in
+ 	rhs is promoted and the truncation from the inner mode to the
+ 	outer mode is not a noop when handling SETs.
+ 
  2025-06-06  Tobias Burnus  <tburnus@baylibre.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250607/gcc/DATESTAMP gcc-15-20250614/gcc/DATESTAMP
*** gcc-15-20250607/gcc/DATESTAMP	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/DATESTAMP	Sat Jun 14 22:32:42 2025
***************
*** 1 ****
! 20250607
--- 1 ----
! 20250614
diff -Nrcpad gcc-15-20250607/gcc/ada/ChangeLog gcc-15-20250614/gcc/ada/ChangeLog
*** gcc-15-20250607/gcc/ada/ChangeLog	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/ChangeLog	Sat Jun 14 22:32:42 2025
***************
*** 1,3 ****
--- 1,120 ----
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst
+ 	(Generalized Finalization): Document the actual implementation.
+ 	(No_Raise): Move to separate section.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Private_Type): Fix test.
+ 	(Build_Derived_Record_Type): Adjust error recovery paths.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* exp_util.adb (Insert_Actions): Refine test.
+ 
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (Compiler
+ 	switches) <-O>: Fix long line.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* usage.adb (Usage): Justify the documentation of common switches
+ 	like that of other switches.  Rework that of the -O switch.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (Compiler
+ 	switches) <-O>: Rework and document 'z' and 'g' operands.
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst (Optimization Levels):
+ 	Rework and document -Oz and -Og switches.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-06-10  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* einfo.ads: Revise comment about Dynamic_Predicate flag to make it
+ 	more accurate.
+ 	* sem_case.adb (Check_Choices): Test "not Has_Static_Predicate_Aspect"
+ 	as additional guard for error about use of subtype with nonstatic
+ 	predicate as a case choice. Improve related error message.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Static_Object): Do not issue any error message
+ 	for compiler-generated entities.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Insert_Conditional_Object_Declaration): Deal with a
+ 	transient scope being created around the declaration.
+ 	* freeze.adb (Freeze_Entity): Do not call Freeze_Static_Object for
+ 	a renaming declaration.
+ 
+ 2025-06-10  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Container_Aggr_Code.To_Int): Apply Enumeration_Pos
+ 	to Entity (Expr) rather than Expr.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Copy_Generic_Node): Do not call Root_Type to find
+ 	the root type of an aggregate of a derived tagged type.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-stusta.adb (Compute_All_Tasks): Skip terminated tasks.
+ 
+ 2025-06-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Index): In the case of a fixed-lower-bound index,
+ 	set Etype of the newly created itype's Scalar_Range from the index's Etype.
+ 	* sem_ch12.adb (Validate_Array_Type_Instance): If the actual subtype is
+ 	a fixed-lower-bound type, then check again the Etype of its Scalar_Range.
+ 
+ 2025-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Fix conditions for legality checks on
+ 	formal type declarations.
+ 
+ 2025-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): If pragmas apply to a formal array
+ 	type, then set the flags on the base type.
+ 
+ 2025-06-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_Container_Aggregate): Use the Base_Type of the
+ 	subtype provided by the context as the subtype of the temporary object
+ 	initialized by the aggregate.
+ 
+ 2025-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): When expanding attribute
+ 	Valid, use signedness from the validated view, not from its base type.
+ 
+ 2025-06-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* contracts.adb (Inherit_Condition): Remove Assoc_List and its uses
+ 	along with function Check_Condition, since mapping of formals will
+ 	effectively be done in Build_Class_Wide_Expression (by Replace_Entity).
+ 	* exp_util.adb (Replace_Entity): Only rewrite entity references in
+ 	function calls that qualify according to the result of calling the
+ 	new function Call_To_Parent_Dispatching_Op_Must_Be_Mapped.
+ 	(Call_To_Parent_Dispatching_Op_Must_Be_Mapped): New function that
+ 	determines whether a function call to a primitive of Par_Subp
+ 	associated tagged type needs to be mapped (according to whether
+ 	it has any actuals that reference controlling formals of the
+ 	primitive).
+ 
+ 2025-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Insert_Conditional_Object_Declaration): Remove Decl
+ 	formal parameter, add Typ and Const formal parameters.
+ 	(Expand_N_Case_Expression): Fix pasto in comment.  Adjust call to
+ 	Insert_Conditional_Object_Declaration and tidy up surrounding code.
+ 	(Expand_N_If_Expression): Adjust couple of calls to
+ 	Insert_Conditional_Object_Declaration.
+ 
  2025-06-06  Javier Miranda  <miranda@adacore.com>
  
  	* sem_ch4.adb (Constant_Indexing_OK): Add missing support for
diff -Nrcpad gcc-15-20250607/gcc/ada/contracts.adb gcc-15-20250614/gcc/ada/contracts.adb
*** gcc-15-20250607/gcc/ada/contracts.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/contracts.adb	Sat Jun 14 22:32:42 2025
*************** package body Contracts is
*** 4389,4398 ****
           Seen    : Subprogram_List (Subps'Range) := (others => Empty);
  
           function Inherit_Condition
!            (Par_Subp : Entity_Id;
!             Subp     : Entity_Id) return Node_Id;
!          --  Inherit the class-wide condition from Par_Subp to Subp and adjust
!          --  all the references to formals in the inherited condition.
  
           procedure Merge_Conditions (From : Node_Id; Into : Node_Id);
           --  Merge two class-wide preconditions or postconditions (the former
--- 4389,4398 ----
           Seen    : Subprogram_List (Subps'Range) := (others => Empty);
  
           function Inherit_Condition
!            (Par_Subp : Entity_Id) return Node_Id;
!          --  Inherit the class-wide condition from Par_Subp. Simply makes
!          --  a copy of the condition in preparation for later mapping of
!          --  referenced formals and functions by Build_Class_Wide_Expression.
  
           procedure Merge_Conditions (From : Node_Id; Into : Node_Id);
           --  Merge two class-wide preconditions or postconditions (the former
*************** package body Contracts is
*** 4407,4498 ****
           -----------------------
  
           function Inherit_Condition
!            (Par_Subp : Entity_Id;
!             Subp     : Entity_Id) return Node_Id
!          is
!             function Check_Condition (Expr : Node_Id) return Boolean;
!             --  Used in assertion to check that Expr has no reference to the
!             --  formals of Par_Subp.
! 
!             ---------------------
!             -- Check_Condition --
!             ---------------------
! 
!             function Check_Condition (Expr : Node_Id) return Boolean is
!                Par_Formal_Id : Entity_Id;
! 
!                function Check_Entity (N : Node_Id) return Traverse_Result;
!                --  Check occurrence of Par_Formal_Id
! 
!                ------------------
!                -- Check_Entity --
!                ------------------
! 
!                function Check_Entity (N : Node_Id) return Traverse_Result is
!                begin
!                   if Nkind (N) = N_Identifier
!                     and then Present (Entity (N))
!                     and then Entity (N) = Par_Formal_Id
!                   then
!                      return Abandon;
!                   end if;
! 
!                   return OK;
!                end Check_Entity;
! 
!                function Check_Expression is new Traverse_Func (Check_Entity);
! 
!             --  Start of processing for Check_Condition
! 
!             begin
!                Par_Formal_Id := First_Formal (Par_Subp);
! 
!                while Present (Par_Formal_Id) loop
!                   if Check_Expression (Expr) = Abandon then
!                      return False;
!                   end if;
! 
!                   Next_Formal (Par_Formal_Id);
!                end loop;
! 
!                return True;
!             end Check_Condition;
! 
!             --  Local variables
! 
!             Assoc_List     : constant Elist_Id := New_Elmt_List;
!             Par_Formal_Id  : Entity_Id := First_Formal (Par_Subp);
!             Subp_Formal_Id : Entity_Id := First_Formal (Subp);
!             New_Condition  : Node_Id;
! 
           begin
!             while Present (Par_Formal_Id) loop
!                Append_Elmt (Par_Formal_Id,  Assoc_List);
!                Append_Elmt (Subp_Formal_Id, Assoc_List);
! 
!                Next_Formal (Par_Formal_Id);
!                Next_Formal (Subp_Formal_Id);
!             end loop;
! 
!             --  Check that Parent field of all the nodes have their correct
!             --  decoration; required because otherwise mapped nodes with
!             --  wrong Parent field are left unmodified in the copied tree
!             --  and cause reporting wrong errors at later stages.
! 
!             pragma Assert
!               (Check_Parents (Class_Condition (Kind, Par_Subp), Assoc_List));
! 
!             New_Condition :=
                New_Copy_Tree
!                 (Source => Class_Condition (Kind, Par_Subp),
!                  Map    => Assoc_List);
! 
!             --  Ensure that the inherited condition has no reference to the
!             --  formals of the parent subprogram.
! 
!             pragma Assert (Check_Condition (New_Condition));
! 
!             return New_Condition;
           end Inherit_Condition;
  
           ----------------------
--- 4407,4417 ----
           -----------------------
  
           function Inherit_Condition
!            (Par_Subp : Entity_Id) return Node_Id is
           begin
!             return
                New_Copy_Tree
!                 (Source => Class_Condition (Kind, Par_Subp));
           end Inherit_Condition;
  
           ----------------------
*************** package body Contracts is
*** 4606,4614 ****
                    Par_Prim        := Subp_Id;
                    Par_Iface_Prims := Covered_Interface_Primitives (Par_Prim);
  
!                   Cond := Inherit_Condition
!                             (Subp     => Spec_Id,
!                              Par_Subp => Subp_Id);
  
                    if Present (Class_Cond) then
                       Merge_Conditions (Cond, Class_Cond);
--- 4525,4531 ----
                    Par_Prim        := Subp_Id;
                    Par_Iface_Prims := Covered_Interface_Primitives (Par_Prim);
  
!                   Cond := Inherit_Condition (Par_Subp => Subp_Id);
  
                    if Present (Class_Cond) then
                       Merge_Conditions (Cond, Class_Cond);
*************** package body Contracts is
*** 4652,4660 ****
                 then
                    Seen (Index) := Subp_Id;
  
!                   Cond := Inherit_Condition
!                             (Subp     => Spec_Id,
!                              Par_Subp => Subp_Id);
  
                    Check_Class_Condition
                      (Cond            => Cond,
--- 4569,4575 ----
                 then
                    Seen (Index) := Subp_Id;
  
!                   Cond := Inherit_Condition (Par_Subp => Subp_Id);
  
                    Check_Class_Condition
                      (Cond            => Cond,
diff -Nrcpad gcc-15-20250607/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst gcc-15-20250614/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
*** gcc-15-20250607/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sat Jun 14 22:32:42 2025
*************** that the record type must be a root type
*** 1453,1549 ****
  
  The aspect additionally makes it possible to specify relaxed semantics for
  the finalization operations by means of the ``Relaxed_Finalization`` setting.
! 
! Example:
  
  .. code-block:: ada
  
!     type Ctrl is record
!       Id : Natural := 0;
      end record
        with Finalizable => (Initialize           => Initialize,
                             Adjust               => Adjust,
                             Finalize             => Finalize,
                             Relaxed_Finalization => True);
  
!     procedure Adjust     (Obj : in out Ctrl);
!     procedure Finalize   (Obj : in out Ctrl);
!     procedure Initialize (Obj : in out Ctrl);
! 
! The three procedures have the same profile, taking a single ``in out T``
! parameter.
  
! We follow the same dynamic semantics as controlled objects:
  
   - ``Initialize`` is called when an object of type ``T`` is declared without
!    default expression.
  
   - ``Adjust`` is called after an object of type ``T`` is assigned a new value.
  
   - ``Finalize`` is called when an object of type ``T`` goes out of scope (for
!    stack-allocated objects) or is explicitly deallocated (for heap-allocated
!    objects). It is also called when on the value being replaced in an
!    assignment.
! 
! However the following differences are enforced by default when compared to the
! current Ada controlled-objects finalization model:
! 
! * No automatic finalization of heap allocated objects: ``Finalize`` is only
!   called when an object is implicitly deallocated. As a consequence, no-runtime
!   support is needed for the implicit case, and no header will be maintained for
!   this in heap-allocated controlled objects.
! 
!   Heap-allocated objects allocated through a nested access type definition will
!   hence **not** be deallocated either. The result is simply that memory will be
!   leaked in those cases.
! 
! * The ``Finalize`` procedure should have have the :ref:`No_Raise_Aspect` specified.
!   If that's not the case, a compilation error will be raised.
! 
! Additionally, two other configuration aspects are added,
! ``Legacy_Heap_Finalization`` and ``Exceptions_In_Finalize``:
! 
! * ``Legacy_Heap_Finalization``: Uses the legacy automatic finalization of
!   heap-allocated objects
! 
! * ``Exceptions_In_Finalize``: Allow users to have a finalizer that raises exceptions
!   **NB!** note that using this aspect introduces execution time penalities.
! 
! .. _No_Raise_Aspect:
! 
! No_Raise aspect
! ----------------
! 
! The ``No_Raise`` aspect can be applied to a subprogram to declare that this subprogram is not
! expected to raise any exceptions. Should an exception still occur during the execution of
! this subprogram, ``Program_Error`` is raised.
! 
! New specification for ``Ada.Finalization.Controlled``
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
! 
! ``Ada.Finalization.Controlled`` is now specified as:
! 
! .. code-block:: ada
  
!    type Controlled is abstract tagged null record
!       with Initialize => Initialize,
!          Adjust => Adjust,
!          Finalize => Finalize,
!          Legacy_Heap_Finalization, Exceptions_In_Finalize;
  
!          procedure Initialize (Self : in out Controlled) is abstract;
!          procedure Adjust (Self : in out Controlled) is abstract;
!          procedure Finalize (Self : in out Controlled) is abstract;
  
  
! ### Examples
  
! A simple example of a ref-counted type:
  
  .. code-block:: ada
  
     type T is record
!       Value : Integer;
        Ref_Count : Natural := 0;
     end record;
  
--- 1453,1512 ----
  
  The aspect additionally makes it possible to specify relaxed semantics for
  the finalization operations by means of the ``Relaxed_Finalization`` setting.
! Here is the archetypal example:
  
  .. code-block:: ada
  
!     type T is record
!       ...
      end record
        with Finalizable => (Initialize           => Initialize,
                             Adjust               => Adjust,
                             Finalize             => Finalize,
                             Relaxed_Finalization => True);
  
!     procedure Adjust     (Obj : in out T);
!     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.
  
   - ``Adjust`` is called after an object of type ``T`` is assigned a new value.
  
   - ``Finalize`` is called when an object of type ``T`` goes out of scope (for
!    stack-allocated objects) or is deallocated (for heap-allocated objects).
!    It is also called when the value is replaced by an assignment.
  
! However, when ``Relaxed_Finalization`` is either ``True`` or not explicitly
! specified, the following differences are implemented relative to the semantics
! of controlled types:
  
! * The compiler has permission to perform no automatic finalization of
!   heap-allocated objects: ``Finalize`` is only called when such an object
!   is explicitly deallocated, or when the designated object is assigned a new
!   value. As a consequence, no runtime support is needed for performing
!   implicit deallocation. In particular, no per-object header data is needed
!   for heap-allocated objects.
  
+   Heap-allocated objects allocated through a nested access type will therefore
+   **not** be deallocated either. The result is simply that memory will be leaked
+   in this case.
  
! * The ``Adjust`` and ``Finalize`` procedures are automatically considered as
!   having the :ref:`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.
  
! Simple example of ref-counted type:
  
  .. code-block:: ada
  
     type T is record
!       Value     : Integer;
        Ref_Count : Natural := 0;
     end record;
  
*************** A simple example of a ref-counted type:
*** 1555,1562 ****
     type T_Ref is record
        Value : T_Access;
     end record
!       with Adjust   => Adjust,
!          Finalize => Finalize;
  
     procedure Adjust (Ref : in out T_Ref) is
     begin
--- 1518,1525 ----
     type T_Ref is record
        Value : T_Access;
     end record
!       with Finalizable => (Adjust   => Adjust,
!                            Finalize => Finalize);
  
     procedure Adjust (Ref : in out T_Ref) is
     begin
*************** A simple example of a ref-counted type:
*** 1568,1575 ****
        Def_Ref (Ref.Value);
     end Finalize;
  
! 
! A simple file handle that ensures resources are properly released:
  
  .. code-block:: ada
  
--- 1531,1537 ----
        Def_Ref (Ref.Value);
     end Finalize;
  
! Simple file handle that ensures resources are properly released:
  
  .. code-block:: ada
  
*************** A simple file handle that ensures resour
*** 1579,1629 ****
        function Open (Path : String) return File;
  
        procedure Close (F : in out File);
     private
        type File is limited record
           Handle : ...;
        end record
!          with Finalize => Close;
! 
! 
! Finalized tagged types
! ^^^^^^^^^^^^^^^^^^^^^^^
  
! Aspects are inherited by derived types and optionally overriden by those. The
! compiler-generated calls to the user-defined operations are then
! dispatching whenever it makes sense, i.e. the object in question is of
! class-wide type and the class includes at least one finalized tagged type.
  
! However note that for simplicity, it is forbidden to change the value of any of
! those new aspects in derived types.
  
  Composite types
  ^^^^^^^^^^^^^^^
  
! When a finalized type is used as a component of a composite type, the latter
! becomes finalized as well. The three primitives are derived automatically
! in order to call the primitives of their components.
! 
! If that composite type was already user-finalized, then the compiler
! calls the primitives of the components so as to stay consistent with today's
! controlled types's behavior.
! 
! So, ``Initialize`` and ``Adjust`` are called on components before they
! are called on the composite object, but ``Finalize`` is  called on the composite
! object first.
  
  Interoperability with controlled types
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! As a consequence of the redefinition of the ``Controlled`` type as a base type
! with the new aspects defined, interoperability with controlled type naturally
! follows the definition of the above rules. In particular:
  
! * It is possible to have a new finalized type have a controlled type
!   component
! * It is possible to have a controlled type have a finalized type
!   component
  
  
  Inference of Dependent Types in Generic Instantiations
  ------------------------------------------------------
--- 1541,1587 ----
        function Open (Path : String) return File;
  
        procedure Close (F : in out File);
+ 
     private
        type File is limited record
           Handle : ...;
        end record
!          with Finalizable (Finalize => Close);
!    end P;
  
! Finalizable tagged types
! ^^^^^^^^^^^^^^^^^^^^^^^^
  
! The aspect is inherited by derived types and the primitives may be overridden
! by the derivation. The compiler-generated calls to these operations are then
! dispatching whenever it makes sense, i.e. when the object in question is of a
! class-wide type and the class includes at least one finalizable tagged type.
  
  Composite types
  ^^^^^^^^^^^^^^^
  
! When a finalizable type is used as a component of a composite type, the latter
! becomes finalizable as well. The three primitives are derived automatically
! in order to call the primitives of their components. The dynamic semantics is
! the same as for controlled components of composite types.
  
  Interoperability with controlled types
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! Finalizable types are fully interoperable with controlled types, in particular
! it is possible for a finalizable type to have a controlled component and vice
! versa, but the stricter dynamic semantics, in other words that of controlled
! types, is applied in this case.
  
! .. _No_Raise_Aspect:
! 
! No_Raise aspect
! ----------------
  
+ The ``No_Raise`` aspect can be applied to a subprogram to declare that this
+ subprogram is not expected to raise an exception. Should an exception still
+ be raised during the execution of the subprogram, it is caught at the end of
+ this execution and ``Program_Error`` is propagated to the caller.
  
  Inference of Dependent Types in Generic Instantiations
  ------------------------------------------------------
diff -Nrcpad gcc-15-20250607/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-15-20250614/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-15-20250607/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sat Jun 14 22:32:42 2025
*************** Alphabetical List of All Switches
*** 2259,2273 ****
    ======= ==================================================================
     *n*     Effect
    ------- ------------------------------------------------------------------
!   *0*      No optimization, the default setting if no :switch:`-O` appears
!   *1*      Normal optimization, the default if you specify :switch:`-O` without an
!            operand. A good compromise between code quality and compilation
!            time.
!   *2*      Extensive optimization, may improve execution time, possibly at
             the cost of substantially increased compilation time.
!   *3*      Same as :switch:`-O2`, and also includes inline expansion for small
!            subprograms in the same unit.
!   *s*      Optimize space usage
    ======= ==================================================================
  
    See also :ref:`Optimization_Levels`.
--- 2259,2274 ----
    ======= ==================================================================
     *n*     Effect
    ------- ------------------------------------------------------------------
!   *0*      No optimization, the default setting if no :switch:`-O` appears.
!   *1*      Moderate optimization, same as :switch:`-O` without an operand.
!            A good compromise between code quality and compilation time.
!   *2*      Extensive optimization, should improve execution time, possibly at
             the cost of substantially increased compilation time.
!   *3*      Full optimization, may further improve execution time, possibly at
!            the cost of substantially larger generated code.
!   *s*      Optimize for size (code and data) rather than speed.
!   *z*      Optimize aggressively for size (code and data) rather than speed.
!   *g*      Optimize for debugging experience rather than speed.
    ======= ==================================================================
  
    See also :ref:`Optimization_Levels`.
diff -Nrcpad gcc-15-20250607/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst gcc-15-20250614/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
*** gcc-15-20250607/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Sat Jun 14 22:32:42 2025
*************** Turning on optimization makes the compil
*** 1584,1601 ****
  performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
! If you use multiple :switch:`-O` switches, with or without level
! numbers, the last such switch is the one that's used.
! 
! You can use the
! :switch:`-O` switch (the permitted forms are :switch:`-O0`, :switch:`-O1`
! :switch:`-O2`, :switch:`-O3`, and :switch:`-Os`)
! to ``gcc`` to control the optimization level:
  
  
  * :switch:`-O0`
!     No optimization (the default);
!     generates unoptimized code but has
      the fastest compilation time. Debugging is easiest with this switch.
  
      Note that many other compilers do substantial optimization even if
--- 1584,1599 ----
  performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
! You can pass the :switch:`-O` switch, with or without an operand
! (the permitted forms with an operand are :switch:`-O0`, :switch:`-O1`,
! :switch:`-O2`, :switch:`-O3`, :switch:`-Os`, :switch:`-Oz`, and
! :switch:`-Og`) to ``gcc`` to control the optimization level. If you
! pass multiple :switch:`-O` switches, with or without an operand,
! the last such switch is the one that's used:
  
  
  * :switch:`-O0`
!     No optimization (the default); generates unoptimized code but has
      the fastest compilation time. Debugging is easiest with this switch.
  
      Note that many other compilers do substantial optimization even if
*************** to ``gcc`` to control the optimization l
*** 1606,1637 ****
      mind when doing performance comparisons.
  
  * :switch:`-O1`
!     Moderate optimization; optimizes reasonably well but does not
!     degrade compilation time significantly. You may not be able to see
!     some variables in the debugger and changing the value of some
!     variables in the debugger may not have the effect you desire.
  
  * :switch:`-O2`
!     Full optimization;
!     generates highly optimized code and has
!     the slowest compilation time. You may see significant impacts on
      your ability to display and modify variables in the debugger.
  
  * :switch:`-O3`
!     Full optimization as in :switch:`-O2`;
!     also uses more aggressive automatic inlining of subprograms within a unit
!     (:ref:`Inlining_of_Subprograms`) and attempts to vectorize loops.
! 
  
  * :switch:`-Os`
!     Optimize space usage (code and data) of resulting program.
  
  Higher optimization levels perform more global transformations on the
  program and apply more expensive analysis algorithms in order to generate
  faster and more compact code. The price in compilation time, and the
! resulting improvement in execution time,
! both depend on the particular application and the hardware environment.
! You should experiment to find the best level for your application.
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
--- 1604,1648 ----
      mind when doing performance comparisons.
  
  * :switch:`-O1`
!     Moderate optimization (same as :switch:`-O` without an operand);
!     optimizes reasonably well but does not degrade compilation time
!     significantly. You may not be able to see some variables in the
!     debugger, and changing the value of some variables in the debugger
!     may not have the effect you desire.
  
  * :switch:`-O2`
!     Extensive optimization; generates highly optimized code but has
!     an increased compilation time. You may see significant impacts on
      your ability to display and modify variables in the debugger.
  
  * :switch:`-O3`
!     Full optimization; attempts more sophisticated transformations, in
!     particular on loops, possibly at the cost of larger generated code.
!     You may be hardly able to use the debugger at this optimization level.
  
  * :switch:`-Os`
!     Optimize for size (code and data) of resulting binary rather than
!     speed; based on the :switch:`-O2` optimization level, but disables
!     some of its transformations that often increase code size, as well
!     as performs further optimizations designed to reduce code size.
! 
! * :switch:`-Oz`
!     Optimize aggressively for size (code and data) of resulting binary
!     rather than speed; may increase the number of instructions executed
!     if these instructions require fewer bytes to be encoded.
! 
! * :switch:`-Og`
!     Optimize for debugging experience rather than speed; based on the
!     :switch:`-O1` optimization level, but attempts to eliminate all the
!     negative effects of optimization on debugging.
! 
  
  Higher optimization levels perform more global transformations on the
  program and apply more expensive analysis algorithms in order to generate
  faster and more compact code. The price in compilation time, and the
! resulting improvement in execution time, both depend on the particular
! application and the hardware environment. You should experiment to find
! the best level for your application.
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
diff -Nrcpad gcc-15-20250607/gcc/ada/einfo.ads gcc-15-20250614/gcc/ada/einfo.ads
*** gcc-15-20250607/gcc/ada/einfo.ads	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/einfo.ads	Sat Jun 14 22:32:42 2025
*************** package Einfo is
*** 1623,1629 ****
  
  --    Has_Dynamic_Predicate_Aspect
  --       Defined in all types and subtypes. Set if a Dynamic_Predicate aspect
! --       was explicitly applied to the type. Generally we treat predicates as
  --       static if possible, regardless of whether they are specified using
  --       Predicate, Static_Predicate, or Dynamic_Predicate. And if a predicate
  --       can be treated as static (i.e. its expression is predicate-static),
--- 1623,1629 ----
  
  --    Has_Dynamic_Predicate_Aspect
  --       Defined in all types and subtypes. Set if a Dynamic_Predicate aspect
! --       was applied to the type or subtype. Generally we treat predicates as
  --       static if possible, regardless of whether they are specified using
  --       Predicate, Static_Predicate, or Dynamic_Predicate. And if a predicate
  --       can be treated as static (i.e. its expression is predicate-static),
diff -Nrcpad gcc-15-20250607/gcc/ada/exp_aggr.adb gcc-15-20250614/gcc/ada/exp_aggr.adb
*** gcc-15-20250607/gcc/ada/exp_aggr.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/exp_aggr.adb	Sat Jun 14 22:32:42 2025
*************** package body Exp_Aggr is
*** 7010,7016 ****
        begin
           return UI_To_Int ((if Nkind (Expr) = N_Integer_Literal
                              then Intval (Expr)
!                             else Enumeration_Pos (Expr)));
        end To_Int;
  
        --  Local variables
--- 7010,7016 ----
        begin
           return UI_To_Int ((if Nkind (Expr) = N_Integer_Literal
                              then Intval (Expr)
!                             else Enumeration_Pos (Entity (Expr))));
        end To_Int;
  
        --  Local variables
*************** package body Exp_Aggr is
*** 7496,7505 ****
           Set_Assignment_OK (Lhs);
  
           Aggr_Code := Build_Container_Aggr_Code (N, Typ, Lhs, Init);
           Prepend_To (Aggr_Code,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Obj_Id,
!              Object_Definition   => New_Occurrence_Of (Typ, Loc),
               Expression          => Init));
  
           Insert_Actions (N, Aggr_Code);
--- 7496,7514 ----
           Set_Assignment_OK (Lhs);
  
           Aggr_Code := Build_Container_Aggr_Code (N, Typ, Lhs, Init);
+ 
+          --  Use the unconstrained base subtype of the subtype provided by
+          --  the context for declaring the temporary object (which may come
+          --  from a constrained assignment target), to ensure that the
+          --  aggregate can be successfully expanded and assigned to the
+          --  temporary without exceeding its capacity. (Later assignment
+          --  of the temporary to a target object may result in failing
+          --  a discriminant check.)
+ 
           Prepend_To (Aggr_Code,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Obj_Id,
!              Object_Definition   => New_Occurrence_Of (Base_Type (Typ), Loc),
               Expression          => Init));
  
           Insert_Actions (N, Aggr_Code);
diff -Nrcpad gcc-15-20250607/gcc/ada/exp_attr.adb gcc-15-20250614/gcc/ada/exp_attr.adb
*** gcc-15-20250607/gcc/ada/exp_attr.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/exp_attr.adb	Sat Jun 14 22:32:42 2025
*************** package body Exp_Attr is
*** 7872,7880 ****
           else
              declare
                 Uns  : constant Boolean :=
!                         Is_Unsigned_Type (Ptyp)
!                           or else (Is_Private_Type (Ptyp)
!                                     and then Is_Unsigned_Type (PBtyp));
                 Size : Uint;
                 P    : Node_Id := Pref;
  
--- 7872,7879 ----
           else
              declare
                 Uns  : constant Boolean :=
!                  Is_Unsigned_Type (Validated_View (Ptyp));
! 
                 Size : Uint;
                 P    : Node_Id := Pref;
  
diff -Nrcpad gcc-15-20250607/gcc/ada/exp_ch4.adb gcc-15-20250614/gcc/ada/exp_ch4.adb
*** gcc-15-20250607/gcc/ada/exp_ch4.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/exp_ch4.adb	Sat Jun 14 22:32:42 2025
*************** package body Exp_Ch4 is
*** 193,204 ****
  
     procedure Insert_Conditional_Object_Declaration
       (Obj_Id : Entity_Id;
        Expr   : Node_Id;
!       Decl   : Node_Id);
!    --  Expr is the dependent expression of a conditional expression and Decl
!    --  is the declaration of an object whose initialization expression is the
!    --  conditional expression. Insert in the actions of Expr the declaration
!    --  of Obj_Id modeled on Decl and with Expr as initialization expression.
  
     procedure Insert_Dereference_Action (N : Node_Id);
     --  N is an expression whose type is an access. When the type of the
--- 193,204 ----
  
     procedure Insert_Conditional_Object_Declaration
       (Obj_Id : Entity_Id;
+       Typ    : Entity_Id;
        Expr   : Node_Id;
!       Const  : Boolean);
!    --  Expr is the dependent expression of a conditional expression. Insert in
!    --  the actions of Expr the declaration of Obj_Id with type Typ and Expr as
!    --  initialization expression. Const is True when Obj_Id is a constant.
  
     procedure Insert_Dereference_Action (N : Node_Id);
     --  N is an expression whose type is an access. When the type of the
*************** package body Exp_Ch4 is
*** 5304,5310 ****
        --  'Unrestricted_Access.
  
        --  Generate:
!       --    type Ptr_Typ is not null access all [constant] Typ;
  
        else
           Target_Typ := Make_Temporary (Loc, 'P');
--- 5304,5310 ----
        --  'Unrestricted_Access.
  
        --  Generate:
!       --    type Target_Typ is not null access all [constant] Typ;
  
        else
           Target_Typ := Make_Temporary (Loc, 'P');
*************** package body Exp_Ch4 is
*** 5402,5421 ****
              elsif Optimize_Object_Decl then
                 Obj := Make_Temporary (Loc, 'C', Alt_Expr);
  
!                Insert_Conditional_Object_Declaration (Obj, Alt_Expr, Par);
! 
!                Alt_Expr :=
!                  Make_Attribute_Reference (Alt_Loc,
!                    Prefix         => New_Occurrence_Of (Obj, Alt_Loc),
!                    Attribute_Name => Name_Unrestricted_Access);
! 
!                LHS := New_Occurrence_Of (Target, Loc);
!                Set_Assignment_OK (LHS);
  
                 Stmts := New_List (
                   Make_Assignment_Statement (Alt_Loc,
!                    Name       => LHS,
!                    Expression => Alt_Expr));
  
              --  Take the unrestricted access of the expression value for non-
              --  scalar types. This approach avoids big copies and covers the
--- 5402,5417 ----
              elsif Optimize_Object_Decl then
                 Obj := Make_Temporary (Loc, 'C', Alt_Expr);
  
!                Insert_Conditional_Object_Declaration
!                  (Obj, Typ, Alt_Expr, Const => Constant_Present (Par));
  
                 Stmts := New_List (
                   Make_Assignment_Statement (Alt_Loc,
!                    Name       => New_Occurrence_Of (Target, Loc),
!                    Expression =>
!                      Make_Attribute_Reference (Alt_Loc,
!                        Prefix         => New_Occurrence_Of (Obj, Alt_Loc),
!                        Attribute_Name => Name_Unrestricted_Access)));
  
              --  Take the unrestricted access of the expression value for non-
              --  scalar types. This approach avoids big copies and covers the
*************** package body Exp_Ch4 is
*** 6013,6020 ****
              Target   : constant Entity_Id := Make_Temporary (Loc, 'C', N);
  
           begin
!             Insert_Conditional_Object_Declaration (Then_Obj, Thenx, Par);
!             Insert_Conditional_Object_Declaration (Else_Obj, Elsex, Par);
  
              --  Generate:
              --    type Ptr_Typ is not null access all [constant] Typ;
--- 6009,6018 ----
              Target   : constant Entity_Id := Make_Temporary (Loc, 'C', N);
  
           begin
!             Insert_Conditional_Object_Declaration
!               (Then_Obj, Typ, Thenx, Const => Constant_Present (Par));
!             Insert_Conditional_Object_Declaration
!               (Else_Obj, Typ, Elsex, Const => Constant_Present (Par));
  
              --  Generate:
              --    type Ptr_Typ is not null access all [constant] Typ;
*************** package body Exp_Ch4 is
*** 13285,13300 ****
  
     procedure Insert_Conditional_Object_Declaration
       (Obj_Id : Entity_Id;
        Expr   : Node_Id;
!       Decl   : Node_Id)
     is
        Loc      : constant Source_Ptr := Sloc (Expr);
        Obj_Decl : constant Node_Id :=
          Make_Object_Declaration (Loc,
            Defining_Identifier => Obj_Id,
            Aliased_Present     => True,
!           Constant_Present    => Constant_Present (Decl),
!           Object_Definition   => New_Copy_Tree (Object_Definition (Decl)),
            Expression          => Relocate_Node (Expr));
        --  We make the object unconditionally aliased to avoid dangling bound
        --  issues when its nominal subtype is an unconstrained array type.
--- 13283,13299 ----
  
     procedure Insert_Conditional_Object_Declaration
       (Obj_Id : Entity_Id;
+       Typ    : Entity_Id;
        Expr   : Node_Id;
!       Const  : Boolean)
     is
        Loc      : constant Source_Ptr := Sloc (Expr);
        Obj_Decl : constant Node_Id :=
          Make_Object_Declaration (Loc,
            Defining_Identifier => Obj_Id,
            Aliased_Present     => True,
!           Constant_Present    => Const,
!           Object_Definition   => New_Occurrence_Of (Typ, Loc),
            Expression          => Relocate_Node (Expr));
        --  We make the object unconditionally aliased to avoid dangling bound
        --  issues when its nominal subtype is an unconstrained array type.
*************** package body Exp_Ch4 is
*** 13313,13321 ****
        Insert_Action (Expr, Obj_Decl);
  
        --  The object can never be local to an elaboration routine at library
!       --  level since we will take 'Unrestricted_Access of it.
  
!       Set_Is_Statically_Allocated (Obj_Id, Is_Library_Level_Entity (Obj_Id));
  
        --  If the object needs finalization, we need to insert its Master_Node
        --  manually because 1) the machinery in Exp_Ch7 will not pick it since
--- 13312,13330 ----
        Insert_Action (Expr, Obj_Decl);
  
        --  The object can never be local to an elaboration routine at library
!       --  level since we will take 'Unrestricted_Access of it. Beware that
!       --  Is_Library_Level_Entity always returns False when called from within
!       --  a transient scope, but the associated block will not be materialized
!       --  when the transient scope is finally closed in the case of an object
!       --  declaration (see Exp.Ch7.Wrap_Transient_Declaration).
  
!       if Scope (Obj_Id) = Current_Scope and then Scope_Is_Transient then
!          Set_Is_Statically_Allocated
!            (Obj_Id, Is_Library_Level_Entity (Scope (Obj_Id)));
!       else
!          Set_Is_Statically_Allocated
!            (Obj_Id, Is_Library_Level_Entity (Obj_Id));
!       end if;
  
        --  If the object needs finalization, we need to insert its Master_Node
        --  manually because 1) the machinery in Exp_Ch7 will not pick it since
diff -Nrcpad gcc-15-20250607/gcc/ada/exp_util.adb gcc-15-20250614/gcc/ada/exp_util.adb
*** gcc-15-20250607/gcc/ada/exp_util.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/exp_util.adb	Sat Jun 14 22:32:42 2025
*************** package body Exp_Util is
*** 1523,1529 ****
              New_E := Type_Map.Get (Entity (N));
  
              if Present (New_E) then
!                Rewrite (N, New_Occurrence_Of (New_E, Sloc (N)));
              end if;
  
              --  Update type of function call node, which should be the same as
--- 1523,1640 ----
              New_E := Type_Map.Get (Entity (N));
  
              if Present (New_E) then
!                declare
! 
!                   Ctrl_Type : constant Entity_Id
!                     := Find_Dispatching_Type (Par_Subp);
! 
!                   function Call_To_Parent_Dispatching_Op_Must_Be_Mapped
!                     (Call_Node : Node_Id) return Boolean;
!                   --  If Call_Node is a call to a primitive function F of the
!                   --  tagged type T associated with Par_Subp that either has
!                   --  any actuals that are controlling formals of Par_Subp,
!                   --  or else the call to F is an actual parameter of an
!                   --  enclosing call to a primitive of T that has any actuals
!                   --  that are controlling formals of Par_Subp (and recursively
!                   --  up the tree of enclosing function calls), returns True;
!                   --  otherwise returns False. Returning True implies that the
!                   --  call to F must be mapped to a call that instead targets
!                   --  the corresponding function F of the tagged type for which
!                   --  Subp is a primitive function.
! 
!                   --------------------------------------------------
!                   -- Call_To_Parent_Dispatching_Op_Must_Be_Mapped --
!                   --------------------------------------------------
! 
!                   function Call_To_Parent_Dispatching_Op_Must_Be_Mapped
!                     (Call_Node : Node_Id) return Boolean
!                   is
!                      pragma Assert (Nkind (Call_Node) = N_Function_Call);
! 
!                      Actual           : Node_Id := First_Actual (Call_Node);
!                      Actual_Type      : Entity_Id;
!                      Actual_Or_Prefix : Node_Id;
! 
!                   begin
!                      if Is_Entity_Name (Name (Call_Node))
!                        and then Is_Dispatching_Operation
!                                   (Entity (Name (Call_Node)))
!                        and then
!                             Is_Ancestor
!                               (Ctrl_Type,
!                                Find_Dispatching_Type
!                                  (Entity (Name (Call_Node))))
!                      then
!                         while Present (Actual) loop
! 
!                            --  Account for 'Old and explicit dereferences,
!                            --  picking up the prefix object in those cases.
! 
!                            if (Nkind (Actual) = N_Attribute_Reference
!                                 and then Attribute_Name (Actual) = Name_Old)
!                              or else Nkind (Actual) = N_Explicit_Dereference
!                            then
!                               Actual_Or_Prefix := Prefix (Actual);
!                            else
!                               Actual_Or_Prefix := Actual;
!                            end if;
! 
!                            Actual_Type := Etype (Actual);
! 
!                            if Is_Anonymous_Access_Type (Actual_Type) then
!                               Actual_Type := Designated_Type (Actual_Type);
!                            end if;
! 
!                            if Nkind (Actual_Or_Prefix)
!                                 in N_Identifier
!                                  | N_Expanded_Name
!                                  | N_Operator_Symbol
! 
!                              and then Is_Formal (Entity (Actual_Or_Prefix))
! 
!                              and then Covers (Ctrl_Type, Actual_Type)
!                            then
!                               --  At least one actual is a formal parameter of
!                               --  Par_Subp with type Ctrl_Type.
! 
!                               return True;
!                            end if;
! 
!                            Next_Actual (Actual);
!                         end loop;
! 
!                         if Nkind (Parent (Call_Node)) = N_Function_Call then
!                            return
!                              Call_To_Parent_Dispatching_Op_Must_Be_Mapped
!                                (Parent (Call_Node));
!                         end if;
! 
!                         return False;
! 
!                      else
!                         return False;
!                      end if;
!                   end Call_To_Parent_Dispatching_Op_Must_Be_Mapped;
! 
!                begin
!                   --  If N's entity is in the map, then the entity is either
!                   --  a formal of the parent subprogram that should necessarily
!                   --  be mapped, or it's a function call's target entity that
!                   --  that should be mapped if the call involves any actuals
!                   --  that reference formals of the parent subprogram (or the
!                   --  function call is part of an enclosing call that similarly
!                   --  qualifies for mapping). Rewrite a node that references
!                   --  any such qualified entity to a new node referencing the
!                   --  corresponding entity associated with the derived type.
! 
!                   if not Is_Subprogram (Entity (N))
!                     or else Nkind (Parent (N)) /= N_Function_Call
!                     or else
!                       Call_To_Parent_Dispatching_Op_Must_Be_Mapped (Parent (N))
!                   then
!                      Rewrite (N, New_Occurrence_Of (New_E, Sloc (N)));
!                   end if;
!                end;
              end if;
  
              --  Update type of function call node, which should be the same as
*************** package body Exp_Util is
*** 8112,8130 ****
                    return;
                 end if;
  
!             --  the expansion of Task and protected type declarations can
              --  create declarations for temporaries which, like other actions
!             --  are inserted and analyzed before the current declaraation.
!             --  However, the current scope is the synchronized type, and
!             --  for unnesting it is critical that the proper scope for these
!             --  generated entities be the enclosing one.
  
              when N_Task_Type_Declaration
                 | N_Protected_Type_Declaration =>
  
!                Push_Scope (Scope (Current_Scope));
!                Insert_List_Before_And_Analyze (P, Ins_Actions);
!                Pop_Scope;
                 return;
  
              --  A special case, N_Raise_xxx_Error can act either as a statement
--- 8223,8253 ----
                    return;
                 end if;
  
!             --  The expansion of task and protected type declarations can
              --  create declarations for temporaries which, like other actions
!             --  are inserted and analyzed before the current declaration.
!             --  However, in some cases, the current scope is the synchronized
!             --  type, and for unnesting it is critical that the proper scope
!             --  for these generated entities be the enclosing one.
  
              when N_Task_Type_Declaration
                 | N_Protected_Type_Declaration =>
  
!                declare
!                   Skip_Scope : constant Boolean :=
!                     Ekind (Current_Scope) in Concurrent_Kind;
!                begin
!                   if Skip_Scope then
!                      Push_Scope (Scope (Current_Scope));
!                   end if;
! 
!                   Insert_List_Before_And_Analyze (P, Ins_Actions);
! 
!                   if Skip_Scope then
!                      Pop_Scope;
!                   end if;
!                end;
! 
                 return;
  
              --  A special case, N_Raise_xxx_Error can act either as a statement
diff -Nrcpad gcc-15-20250607/gcc/ada/freeze.adb gcc-15-20250614/gcc/ada/freeze.adb
*** gcc-15-20250607/gcc/ada/freeze.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/freeze.adb	Sat Jun 14 22:32:42 2025
*************** package body Freeze is
*** 6869,6877 ****
                 end if;
              end if;
  
!             --  Static objects require special handling
  
              if (Ekind (E) = E_Constant or else Ekind (E) = E_Variable)
                and then Is_Statically_Allocated (E)
              then
                 Freeze_Static_Object (E);
--- 6869,6878 ----
                 end if;
              end if;
  
!             --  Statically allocated objects require special handling
  
              if (Ekind (E) = E_Constant or else Ekind (E) = E_Variable)
+               and then No (Renamed_Object (E))
                and then Is_Statically_Allocated (E)
              then
                 Freeze_Static_Object (E);
*************** package body Freeze is
*** 10230,10240 ****
           --  issue an error message saying that this object cannot be imported
           --  or exported. If it has an address clause it is an overlay in the
           --  current partition and the static requirement is not relevant.
!          --  Do not issue any error message when ignoring rep clauses.
  
           if Ignore_Rep_Clauses then
              null;
  
           elsif Is_Imported (E) then
              if No (Address_Clause (E)) then
                 Error_Msg_N
--- 10231,10247 ----
           --  issue an error message saying that this object cannot be imported
           --  or exported. If it has an address clause it is an overlay in the
           --  current partition and the static requirement is not relevant.
!          --  Do not issue any error message when ignoring rep clauses or for
!          --  compiler-generated entities.
  
           if Ignore_Rep_Clauses then
              null;
  
+          elsif not Comes_From_Source (E) then
+             pragma
+               Assert (Nkind (Parent (Declaration_Node (E))) in N_Case_Statement
+                                                              | N_If_Statement);
+ 
           elsif Is_Imported (E) then
              if No (Address_Clause (E)) then
                 Error_Msg_N
diff -Nrcpad gcc-15-20250607/gcc/ada/gnat_rm.texi gcc-15-20250614/gcc/ada/gnat_rm.texi
*** gcc-15-20250607/gcc/ada/gnat_rm.texi	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/gnat_rm.texi	Sat Jun 14 22:32:42 2025
*************** Simpler Accessibility Model
*** 939,948 ****
  * Subprogram parameters:: 
  * Function results:: 
  
! No_Raise aspect
  
! * New specification for Ada.Finalization.Controlled: New specification for Ada Finalization Controlled. 
! * Finalized tagged types:: 
  * Composite types:: 
  * Interoperability with controlled types:: 
  
--- 939,947 ----
  * Subprogram parameters:: 
  * Function results:: 
  
! Generalized Finalization
  
! * Finalizable tagged types:: 
  * Composite types:: 
  * Interoperability with controlled types:: 
  
*************** that the record type must be a root type
*** 30867,30893 ****
  
  The aspect additionally makes it possible to specify relaxed semantics for
  the finalization operations by means of the @code{Relaxed_Finalization} setting.
! 
! Example:
  
  @example
! type Ctrl is record
!   Id : Natural := 0;
  end record
    with Finalizable => (Initialize           => Initialize,
                         Adjust               => Adjust,
                         Finalize             => Finalize,
                         Relaxed_Finalization => True);
  
! procedure Adjust     (Obj : in out Ctrl);
! procedure Finalize   (Obj : in out Ctrl);
! procedure Initialize (Obj : in out Ctrl);
  @end example
  
! The three procedures have the same profile, taking a single @code{in out T}
! parameter.
! 
! We follow the same dynamic semantics as controlled objects:
  
  @quotation
  
--- 30866,30889 ----
  
  The aspect additionally makes it possible to specify relaxed semantics for
  the finalization operations by means of the @code{Relaxed_Finalization} setting.
! Here is the archetypal example:
  
  @example
! type T is record
!   ...
  end record
    with Finalizable => (Initialize           => Initialize,
                         Adjust               => Adjust,
                         Finalize             => Finalize,
                         Relaxed_Finalization => True);
  
! procedure Adjust     (Obj : in out T);
! procedure Finalize   (Obj : in out T);
! 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
  
*************** We follow the same dynamic semantics as
*** 30896,30993 ****
  
  @item 
  @code{Initialize} is called when an object of type @code{T} is declared without
! default expression.
  
  @item 
  @code{Adjust} is called after an object of type @code{T} is assigned a new value.
  
  @item 
  @code{Finalize} is called when an object of type @code{T} goes out of scope (for
! stack-allocated objects) or is explicitly deallocated (for heap-allocated
! objects). It is also called when on the value being replaced in an
! assignment.
  @end itemize
  @end quotation
  
! However the following differences are enforced by default when compared to the
! current Ada controlled-objects finalization model:
  
  
  @itemize *
  
  @item 
! No automatic finalization of heap allocated objects: @code{Finalize} is only
! called when an object is implicitly deallocated. As a consequence, no-runtime
! support is needed for the implicit case, and no header will be maintained for
! this in heap-allocated controlled objects.
! 
! Heap-allocated objects allocated through a nested access type definition will
! hence `not' be deallocated either. The result is simply that memory will be
! leaked in those cases.
! 
! @item 
! The @code{Finalize} procedure should have have the @ref{462,,No_Raise aspect} specified.
! If that’s not the case, a compilation error will be raised.
! @end itemize
! 
! Additionally, two other configuration aspects are added,
! @code{Legacy_Heap_Finalization} and @code{Exceptions_In_Finalize}:
! 
! 
! @itemize *
  
! @item 
! @code{Legacy_Heap_Finalization}: Uses the legacy automatic finalization of
! heap-allocated objects
  
  @item 
! @code{Exceptions_In_Finalize}: Allow users to have a finalizer that raises exceptions
! `NB!' note that using this aspect introduces execution time penalities.
  @end itemize
  
! @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Generalized Finalization,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions id3}@anchor{463}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{462}
! @subsection No_Raise aspect
! 
! 
! The @code{No_Raise} aspect can be applied to a subprogram to declare that this subprogram is not
! expected to raise any exceptions. Should an exception still occur during the execution of
! this subprogram, @code{Program_Error} is raised.
! 
! @menu
! * New specification for Ada.Finalization.Controlled: New specification for Ada Finalization Controlled. 
! * Finalized tagged types:: 
! * Composite types:: 
! * Interoperability with controlled types:: 
! 
! @end menu
! 
! @node New specification for Ada Finalization Controlled,Finalized tagged types,,No_Raise aspect
! @anchor{gnat_rm/gnat_language_extensions new-specification-for-ada-finalization-controlled}@anchor{464}
! @subsubsection New specification for @code{Ada.Finalization.Controlled}
! 
! 
! @code{Ada.Finalization.Controlled} is now specified as:
! 
! @example
! type Controlled is abstract tagged null record
!    with Initialize => Initialize,
!       Adjust => Adjust,
!       Finalize => Finalize,
!       Legacy_Heap_Finalization, Exceptions_In_Finalize;
! 
!       procedure Initialize (Self : in out Controlled) is abstract;
!       procedure Adjust (Self : in out Controlled) is abstract;
!       procedure Finalize (Self : in out Controlled) is abstract;
! @end example
! 
! ### Examples
! 
! A simple example of a ref-counted type:
  
  @example
  type T is record
!    Value : Integer;
     Ref_Count : Natural := 0;
  end record;
  
--- 30892,30940 ----
  
  @item 
  @code{Initialize} is called when an object of type @code{T} is declared without
! initialization expression.
  
  @item 
  @code{Adjust} is called after an object of type @code{T} is assigned a new value.
  
  @item 
  @code{Finalize} is called when an object of type @code{T} goes out of scope (for
! stack-allocated objects) or is deallocated (for heap-allocated objects).
! It is also called when the value is replaced by an assignment.
  @end itemize
  @end quotation
  
! However, when @code{Relaxed_Finalization} is either @code{True} or not explicitly
! specified, the following differences are implemented relative to the semantics
! of controlled types:
  
  
  @itemize *
  
  @item 
! The compiler has permission to perform no automatic finalization of
! heap-allocated objects: @code{Finalize} is only called when such an object
! is explicitly deallocated, or when the designated object is assigned a new
! value. As a consequence, no runtime support is needed for performing
! implicit deallocation. In particular, no per-object header data is needed
! for heap-allocated objects.
  
! Heap-allocated objects allocated through a nested access type will therefore
! `not' be deallocated either. The result is simply that memory will be leaked
! in this case.
  
  @item 
! The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{466,,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
  
! Simple example of ref-counted type:
  
  @example
  type T is record
!    Value     : Integer;
     Ref_Count : Natural := 0;
  end record;
  
*************** type T_Access is access all T;
*** 30999,31006 ****
  type T_Ref is record
     Value : T_Access;
  end record
!    with Adjust   => Adjust,
!       Finalize => Finalize;
  
  procedure Adjust (Ref : in out T_Ref) is
  begin
--- 30946,30953 ----
  type T_Ref is record
     Value : T_Access;
  end record
!    with Finalizable => (Adjust   => Adjust,
!                         Finalize => Finalize);
  
  procedure Adjust (Ref : in out T_Ref) is
  begin
*************** begin
*** 31013,31019 ****
  end Finalize;
  @end example
  
! A simple file handle that ensures resources are properly released:
  
  @example
  package P is
--- 30960,30966 ----
  end Finalize;
  @end example
  
! Simple file handle that ensures resources are properly released:
  
  @example
  package P is
*************** package P is
*** 31022,31087 ****
     function Open (Path : String) return File;
  
     procedure Close (F : in out File);
  private
     type File is limited record
        Handle : ...;
     end record
!       with Finalize => Close;
  @end example
  
! @node Finalized tagged types,Composite types,New specification for Ada Finalization Controlled,No_Raise aspect
! @anchor{gnat_rm/gnat_language_extensions finalized-tagged-types}@anchor{465}
! @subsubsection Finalized tagged types
! 
  
! Aspects are inherited by derived types and optionally overriden by those. The
! compiler-generated calls to the user-defined operations are then
! dispatching whenever it makes sense, i.e. the object in question is of
! class-wide type and the class includes at least one finalized tagged type.
  
! However note that for simplicity, it is forbidden to change the value of any of
! those new aspects in derived types.
  
- @node Composite types,Interoperability with controlled types,Finalized tagged types,No_Raise aspect
- @anchor{gnat_rm/gnat_language_extensions composite-types}@anchor{466}
- @subsubsection Composite types
  
  
! When a finalized type is used as a component of a composite type, the latter
! becomes finalized as well. The three primitives are derived automatically
! in order to call the primitives of their components.
  
- If that composite type was already user-finalized, then the compiler
- calls the primitives of the components so as to stay consistent with today’s
- controlled types’s behavior.
  
! So, @code{Initialize} and @code{Adjust} are called on components before they
! are called on the composite object, but @code{Finalize} is  called on the composite
! object first.
  
! @node Interoperability with controlled types,,Composite types,No_Raise aspect
! @anchor{gnat_rm/gnat_language_extensions interoperability-with-controlled-types}@anchor{467}
  @subsubsection Interoperability with controlled types
  
  
! As a consequence of the redefinition of the @code{Controlled} type as a base type
! with the new aspects defined, interoperability with controlled type naturally
! follows the definition of the above rules. In particular:
  
  
- @itemize *
  
! @item 
! It is possible to have a new finalized type have a controlled type
! component
! 
! @item 
! It is possible to have a controlled type have a finalized type
! component
! @end itemize
  
  @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{468}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
--- 30969,31032 ----
     function Open (Path : String) return File;
  
     procedure Close (F : in out File);
+ 
  private
     type File is limited record
        Handle : ...;
     end record
!       with Finalizable (Finalize => Close);
! end P;
  @end example
  
! @menu
! * Finalizable tagged types:: 
! * Composite types:: 
! * Interoperability with controlled types:: 
  
! @end menu
  
! @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{463}
! @subsubsection Finalizable tagged types
  
  
+ The aspect is inherited by derived types and the primitives may be overridden
+ by the derivation. The compiler-generated calls to these operations are then
+ dispatching whenever it makes sense, i.e. when the object in question is of a
+ 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{464}
! @subsubsection Composite types
  
  
! When a finalizable type is used as a component of a composite type, the latter
! becomes finalizable as well. The three primitives are derived automatically
! in order to call the primitives of their components. The dynamic semantics is
! 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{465}
  @subsubsection Interoperability with controlled types
  
  
! Finalizable types are fully interoperable with controlled types, in particular
! it is possible for a finalizable type to have a controlled component and vice
! versa, but the stricter dynamic semantics, in other words that of controlled
! types, is applied in this case.
  
+ @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Generalized Finalization,Experimental Language Extensions
+ @anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{466}
+ @subsection No_Raise aspect
  
  
! The @code{No_Raise} aspect can be applied to a subprogram to declare that this
! subprogram is not expected to raise an exception. Should an exception still
! be raised during the execution of the subprogram, it is caught at the end of
! 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{467}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
*************** package Int_Array_Operations is new Arra
*** 31158,31164 ****
  @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{469}
  @subsection External_Initialization Aspect
  
  
--- 31103,31109 ----
  @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{468}
  @subsection External_Initialization Aspect
  
  
*************** The maximum size of loaded files is limi
*** 31199,31205 ****
  @end cartouche
  
  @node Finally construct,,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{46a}
  @subsection Finally construct
  
  
--- 31144,31150 ----
  @end cartouche
  
  @node Finally construct,,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}
  @subsection Finally construct
  
  
*************** This feature is similar to the one with
*** 31216,31222 ****
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{46b}
  @subsubsection Syntax
  
  
--- 31161,31167 ----
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{46a}
  @subsubsection Syntax
  
  
*************** handled_sequence_of_statements ::=
*** 31231,31237 ****
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{46c}
  @subsubsection Legality Rules
  
  
--- 31176,31182 ----
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{46b}
  @subsubsection Legality Rules
  
  
*************** to be transferred outside the finally pa
*** 31241,31247 ****
  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{46d}
  @subsubsection Dynamic Semantics
  
  
--- 31186,31192 ----
  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{46c}
  @subsubsection Dynamic Semantics
  
  
*************** execution, that is the finally block mus
*** 31256,31262 ****
  aborted, or if the control is transferred out of the block.
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{46e}@anchor{gnat_rm/security_hardening_features id1}@anchor{46f}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
--- 31201,31207 ----
  aborted, or if the control is transferred out of the block.
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{46d}@anchor{gnat_rm/security_hardening_features id1}@anchor{46e}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
*************** change.
*** 31278,31284 ****
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{470}
  @section Register Scrubbing
  
  
--- 31223,31229 ----
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{469}
  @section Register Scrubbing
  
  
*************** programming languages, see @cite{Using t
*** 31314,31320 ****
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{471}
  @section Stack Scrubbing
  
  
--- 31259,31265 ----
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{470}
  @section Stack Scrubbing
  
  
*************** Bar_Callable_Ptr.
*** 31458,31464 ****
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{472}
  @section Hardened Conditionals
  
  
--- 31403,31409 ----
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{471}
  @section Hardened Conditionals
  
  
*************** be used with other programming languages
*** 31548,31554 ****
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{473}
  @section Hardened Booleans
  
  
--- 31493,31499 ----
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{472}
  @section Hardened Booleans
  
  
*************** and more details on that attribute, see
*** 31609,31615 ****
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{474}
  @section Control Flow Redundancy
  
  
--- 31554,31560 ----
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{473}
  @section Control Flow Redundancy
  
  
*************** see @cite{Using the GNU Compiler Collect
*** 31777,31783 ****
  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{475}@anchor{gnat_rm/obsolescent_features id1}@anchor{476}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
--- 31722,31728 ----
  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{474}@anchor{gnat_rm/obsolescent_features id1}@anchor{475}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
*************** compatibility purposes.
*** 31796,31802 ****
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{477}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{478}
  @section pragma No_Run_Time
  
  
--- 31741,31747 ----
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{476}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{477}
  @section pragma No_Run_Time
  
  
*************** preferred usage is to use an appropriate
*** 31809,31815 ****
  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 id3}@anchor{479}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{47a}
  @section pragma Ravenscar
  
  
--- 31754,31760 ----
  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 id3}@anchor{478}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{479}
  @section pragma Ravenscar
  
  
*************** The pragma @code{Ravenscar} has exactly
*** 31818,31824 ****
  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 id4}@anchor{47b}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{47c}
  @section pragma Restricted_Run_Time
  
  
--- 31763,31769 ----
  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 id4}@anchor{47a}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{47b}
  @section pragma Restricted_Run_Time
  
  
*************** preferred since the Ada 2005 pragma @cod
*** 31828,31834 ****
  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 id5}@anchor{47d}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{47e}
  @section pragma Task_Info
  
  
--- 31773,31779 ----
  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 id5}@anchor{47c}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{47d}
  @section pragma Task_Info
  
  
*************** in the spec of package System.Task_Info
*** 31854,31860 ****
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{47f}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{480}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
--- 31799,31805 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{47e}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{47f}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
*************** to support the @code{Task_Info} pragma.
*** 31864,31870 ****
  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{481}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{482}
  @chapter Compatibility and Porting Guide
  
  
--- 31809,31815 ----
  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{480}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{481}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 31886,31892 ****
  @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{483}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{484}
  @section Writing Portable Fixed-Point Declarations
  
  
--- 31831,31837 ----
  @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{482}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{483}
  @section Writing Portable Fixed-Point Declarations
  
  
*************** If you follow this scheme you will be gu
*** 32008,32014 ****
  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{485}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{486}
  @section Compatibility with Ada 83
  
  
--- 31953,31959 ----
  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{484}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{485}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 32036,32042 ****
  @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{487}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{488}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
--- 31981,31987 ----
  @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{486}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{487}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** the fix is usually simply to add the @co
*** 32136,32142 ****
  @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{489}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{48a}
  @subsection More deterministic semantics
  
  
--- 32081,32087 ----
  @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{488}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{489}
  @subsection More deterministic semantics
  
  
*************** which open select branches are executed.
*** 32164,32170 ****
  @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{48b}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{48c}
  @subsection Changed semantics
  
  
--- 32109,32115 ----
  @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{48a}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{48b}
  @subsection Changed semantics
  
  
*************** include @code{pragma Interface} and the
*** 32239,32245 ****
  @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{48f}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{490}
  @section Compatibility between Ada 95 and Ada 2005
  
  
--- 32184,32190 ----
  @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{gnat_rm/compatibility_and_porting_guide id8}@anchor{48f}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** can declare a function returning a value
*** 32311,32317 ****
  @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{491}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{492}
  @section Implementation-dependent characteristics
  
  
--- 32256,32262 ----
  @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{490}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{491}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 32334,32340 ****
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{493}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{494}
  @subsection Implementation-defined pragmas
  
  
--- 32279,32285 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{492}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{493}
  @subsection Implementation-defined pragmas
  
  
*************** avoiding compiler rejection of units tha
*** 32356,32362 ****
  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{495}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{496}
  @subsection Implementation-defined attributes
  
  
--- 32301,32307 ----
  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{494}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{495}
  @subsection Implementation-defined attributes
  
  
*************** Ada 83, GNAT supplies the attributes @co
*** 32370,32376 ****
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{497}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{498}
  @subsection Libraries
  
  
--- 32315,32321 ----
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{496}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{497}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 32399,32405 ****
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{499}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{49a}
  @subsection Elaboration order
  
  
--- 32344,32350 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{498}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{499}
  @subsection Elaboration order
  
  
*************** pragmas either globally (as an effect of
*** 32435,32441 ****
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{49b}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{49c}
  @subsection Target-specific aspects
  
  
--- 32380,32386 ----
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{49a}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{49b}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 32448,32457 ****
  Ada 2005 and Ada 2012) 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{49d,,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{49e}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{49f}
  @section Compatibility with Other Ada Systems
  
  
--- 32393,32402 ----
  Ada 2005 and Ada 2012) 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{49c,,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{49d}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{49e}
  @section Compatibility with Other Ada Systems
  
  
*************** far beyond this minimal set, as describe
*** 32494,32500 ****
  @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{4a0}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{49d}
  @section Representation Clauses
  
  
--- 32439,32445 ----
  @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{49f}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{49c}
  @section Representation Clauses
  
  
*************** with thin pointers.
*** 32587,32593 ****
  @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{4a1}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4a2}
  @section Compatibility with HP Ada 83
  
  
--- 32532,32538 ----
  @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{4a0}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4a1}
  @section Compatibility with HP Ada 83
  
  
*************** extension of package System.
*** 32617,32623 ****
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4a3}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4a4}
  @chapter GNU Free Documentation License
  
  
--- 32562,32568 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4a2}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4a3}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-15-20250607/gcc/ada/gnat_ugn.texi gcc-15-20250614/gcc/ada/gnat_ugn.texi
*** gcc-15-20250607/gcc/ada/gnat_ugn.texi	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/gnat_ugn.texi	Sat Jun 14 22:32:42 2025
*************** Library (RTL) ALI files.
*** 10072,10078 ****
  @code{n} controls the optimization level:
  
  
! @multitable {xxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  `n'
--- 10072,10078 ----
  @code{n} controls the optimization level:
  
  
! @multitable {xxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  `n'
*************** Effect
*** 10087,10093 ****
  
  @tab
  
! No optimization, the default setting if no @code{-O} appears
  
  @item
  
--- 10087,10093 ----
  
  @tab
  
! No optimization, the default setting if no @code{-O} appears.
  
  @item
  
*************** No optimization, the default setting if
*** 10095,10103 ****
  
  @tab
  
! Normal optimization, the default if you specify @code{-O} without an
! operand. A good compromise between code quality and compilation
! time.
  
  @item
  
--- 10095,10102 ----
  
  @tab
  
! Moderate optimization, same as @code{-O} without an operand.
! A good compromise between code quality and compilation time.
  
  @item
  
*************** time.
*** 10105,10111 ****
  
  @tab
  
! Extensive optimization, may improve execution time, possibly at
  the cost of substantially increased compilation time.
  
  @item
--- 10104,10110 ----
  
  @tab
  
! Extensive optimization, should improve execution time, possibly at
  the cost of substantially increased compilation time.
  
  @item
*************** the cost of substantially increased comp
*** 10114,10121 ****
  
  @tab
  
! Same as @code{-O2}, and also includes inline expansion for small
! subprograms in the same unit.
  
  @item
  
--- 10113,10120 ----
  
  @tab
  
! Full optimization, may further improve execution time, possibly at
! the cost of substantially larger generated code.
  
  @item
  
*************** subprograms in the same unit.
*** 10123,10129 ****
  
  @tab
  
! Optimize space usage
  
  @end multitable
  
--- 10122,10144 ----
  
  @tab
  
! Optimize for size (code and data) rather than speed.
! 
! @item
! 
! `z'
! 
! @tab
! 
! Optimize aggressively for size (code and data) rather than speed.
! 
! @item
! 
! `g'
! 
! @tab
! 
! Optimize for debugging experience rather than speed.
  
  @end multitable
  
*************** Turning on optimization makes the compil
*** 20277,20289 ****
  performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
! If you use multiple @code{-O} switches, with or without level
! numbers, the last such switch is the one that’s used.
! 
! You can use the
! @code{-O} switch (the permitted forms are @code{-O0}, @code{-O1}
! @code{-O2}, @code{-O3}, and @code{-Os})
! to @code{gcc} to control the optimization level:
  
  
  @itemize *
--- 20292,20303 ----
  performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
! You can pass the @code{-O} switch, with or without an operand
! (the permitted forms with an operand are @code{-O0}, @code{-O1},
! @code{-O2}, @code{-O3}, @code{-Os}, @code{-Oz}, and
! @code{-Og}) to @code{gcc} to control the optimization level. If you
! pass multiple @code{-O} switches, with or without an operand,
! the last such switch is the one that’s used:
  
  
  @itemize *
*************** to @code{gcc} to control the optimizatio
*** 20294,20301 ****
  
  @item @code{-O0}
  
! No optimization (the default);
! generates unoptimized code but has
  the fastest compilation time. Debugging is easiest with this switch.
  
  Note that many other compilers do substantial optimization even if
--- 20308,20314 ----
  
  @item @code{-O0}
  
! No optimization (the default); generates unoptimized code but has
  the fastest compilation time. Debugging is easiest with this switch.
  
  Note that many other compilers do substantial optimization even if
*************** mind when doing performance comparisons.
*** 20312,20321 ****
  
  @item @code{-O1}
  
! Moderate optimization; optimizes reasonably well but does not
! degrade compilation time significantly. You may not be able to see
! some variables in the debugger and changing the value of some
! variables in the debugger may not have the effect you desire.
  @end table
  
  @item 
--- 20325,20335 ----
  
  @item @code{-O1}
  
! Moderate optimization (same as @code{-O} without an operand);
! optimizes reasonably well but does not degrade compilation time
! significantly. You may not be able to see some variables in the
! debugger, and changing the value of some variables in the debugger
! may not have the effect you desire.
  @end table
  
  @item 
*************** variables in the debugger may not have t
*** 20324,20332 ****
  
  @item @code{-O2}
  
! Full optimization;
! generates highly optimized code and has
! the slowest compilation time. You may see significant impacts on
  your ability to display and modify variables in the debugger.
  @end table
  
--- 20338,20345 ----
  
  @item @code{-O2}
  
! Extensive optimization; generates highly optimized code but has
! an increased compilation time. You may see significant impacts on
  your ability to display and modify variables in the debugger.
  @end table
  
*************** your ability to display and modify varia
*** 20336,20344 ****
  
  @item @code{-O3}
  
! Full optimization as in @code{-O2};
! also uses more aggressive automatic inlining of subprograms within a unit
! (@ref{104,,Inlining of Subprograms}) and attempts to vectorize loops.
  @end table
  
  @item 
--- 20349,20357 ----
  
  @item @code{-O3}
  
! Full optimization; attempts more sophisticated transformations, in
! particular on loops, possibly at the cost of larger generated code.
! You may be hardly able to use the debugger at this optimization level.
  @end table
  
  @item 
*************** also uses more aggressive automatic inli
*** 20347,20362 ****
  
  @item @code{-Os}
  
! Optimize space usage (code and data) of resulting program.
  @end table
  @end itemize
  
  Higher optimization levels perform more global transformations on the
  program and apply more expensive analysis algorithms in order to generate
  faster and more compact code. The price in compilation time, and the
! resulting improvement in execution time,
! both depend on the particular application and the hardware environment.
! You should experiment to find the best level for your application.
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
--- 20360,20400 ----
  
  @item @code{-Os}
  
! Optimize for size (code and data) of resulting binary rather than
! speed; based on the @code{-O2} optimization level, but disables
! some of its transformations that often increase code size, as well
! as performs further optimizations designed to reduce code size.
! @end table
! 
! @item 
! 
! @table @asis
! 
! @item @code{-Oz}
! 
! Optimize aggressively for size (code and data) of resulting binary
! rather than speed; may increase the number of instructions executed
! if these instructions require fewer bytes to be encoded.
! @end table
! 
! @item 
! 
! @table @asis
! 
! @item @code{-Og}
! 
! Optimize for debugging experience rather than speed; based on the
! @code{-O1} optimization level, but attempts to eliminate all the
! negative effects of optimization on debugging.
  @end table
  @end itemize
  
  Higher optimization levels perform more global transformations on the
  program and apply more expensive analysis algorithms in order to generate
  faster and more compact code. The price in compilation time, and the
! resulting improvement in execution time, both depend on the particular
! application and the hardware environment. You should experiment to find
! the best level for your application.
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
diff -Nrcpad gcc-15-20250607/gcc/ada/libgnarl/s-stusta.adb gcc-15-20250614/gcc/ada/libgnarl/s-stusta.adb
*** gcc-15-20250607/gcc/ada/libgnarl/s-stusta.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/libgnarl/s-stusta.adb	Sat Jun 14 22:32:42 2025
***************
*** 32,37 ****
--- 32,38 ----
  --  This is why this package is part of GNARL:
  
  with System.Tasking.Debug;
+ with System.Tasking.Stages;
  with System.Task_Primitives.Operations;
  
  with System.IO;
*************** package body System.Stack_Usage.Tasking
*** 103,109 ****
  
              --  Calculate the task usage for a given task
  
!             Report_For_Task (Id);
           end loop;
  
        end if;
--- 104,112 ----
  
              --  Calculate the task usage for a given task
  
!             if not System.Tasking.Stages.Terminated (Id) then
!                Report_For_Task (Id);
!             end if;
           end loop;
  
        end if;
diff -Nrcpad gcc-15-20250607/gcc/ada/sem_case.adb gcc-15-20250614/gcc/ada/sem_case.adb
*** gcc-15-20250607/gcc/ada/sem_case.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/sem_case.adb	Sat Jun 14 22:32:43 2025
*************** package body Sem_Case is
*** 3684,3696 ****
                             --  Use of nonstatic predicate is an error
  
                             if not Is_Discrete_Type (E)
!                              or else not Has_Static_Predicate (E)
                               or else Has_Dynamic_Predicate_Aspect (E)
                               or else Has_Ghost_Predicate_Aspect (E)
                             then
                                Bad_Predicated_Subtype_Use
!                                 ("cannot use subtype& with non-static "
!                                  & "predicate as case alternative",
                                   Choice, E, Suggest_Static => True);
  
                             --  Static predicate case. The bounds are those of
--- 3684,3698 ----
                             --  Use of nonstatic predicate is an error
  
                             if not Is_Discrete_Type (E)
!                              or else (not Has_Static_Predicate (E)
!                                         and then
!                                       not Has_Static_Predicate_Aspect (E))
                               or else Has_Dynamic_Predicate_Aspect (E)
                               or else Has_Ghost_Predicate_Aspect (E)
                             then
                                Bad_Predicated_Subtype_Use
!                                 ("cannot use subtype& with nonstatic "
!                                  & "predicate as choice in case alternative",
                                   Choice, E, Suggest_Static => True);
  
                             --  Static predicate case. The bounds are those of
diff -Nrcpad gcc-15-20250607/gcc/ada/sem_ch12.adb gcc-15-20250614/gcc/ada/sem_ch12.adb
*** gcc-15-20250607/gcc/ada/sem_ch12.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/sem_ch12.adb	Sat Jun 14 22:32:43 2025
*************** package body Sem_Ch12 is
*** 9340,9348 ****
                and then Nkind (Ancestor_Type (N)) in N_Entity
              then
                 declare
-                   Root_Typ : constant Entity_Id :=
-                                Root_Type (Ancestor_Type (N));
- 
                    Typ : Entity_Id := Ancestor_Type (N);
  
                 begin
--- 9340,9345 ----
*************** package body Sem_Ch12 is
*** 9351,9357 ****
                          Switch_View (Typ);
                       end if;
  
!                      exit when Typ = Root_Typ;
  
                       Typ := Etype (Typ);
                    end loop;
--- 9348,9354 ----
                          Switch_View (Typ);
                       end if;
  
!                      exit when Etype (Typ) = Typ;
  
                       Typ := Etype (Typ);
                    end loop;
*************** package body Sem_Ch12 is
*** 14132,14137 ****
--- 14129,14144 ----
                 T2 := Etype (I2);
              end if;
  
+             --  In the case of a fixed-lower-bound subtype, we want to check
+             --  against the index type's range rather than the range of the
+             --  subtype (which will be seen as unconstrained, and whose bounds
+             --  won't generally match those of the formal unconstrained array
+             --  type's corresponding index type).
+ 
+             if Is_Fixed_Lower_Bound_Index_Subtype (T2) then
+                T2 := Etype (Scalar_Range (T2));
+             end if;
+ 
              if not Subtypes_Match
                       (Find_Actual_Type (Etype (I1), A_Gen_T), T2)
              then
diff -Nrcpad gcc-15-20250607/gcc/ada/sem_ch3.adb gcc-15-20250614/gcc/ada/sem_ch3.adb
*** gcc-15-20250607/gcc/ada/sem_ch3.adb	Sat Jun  7 22:32:21 2025
--- gcc-15-20250614/gcc/ada/sem_ch3.adb	Sat Jun 14 22:32:43 2025
*************** package body Sem_Ch3 is
*** 8488,8498 ****
  
                 Analyze (Decl);
  
!                pragma Assert (Has_Discriminants (Full_Der)
!                  and then not Has_Unknown_Discriminants (Full_Der));
  
                 Uninstall_Declarations (Par_Scope);
  
                 --  Freeze the underlying record view, to prevent generation of
                 --  useless dispatching information, which is simply shared with
                 --  the real derived type.
--- 8488,8506 ----
  
                 Analyze (Decl);
  
!                pragma
!                  Assert
!                    ((Has_Discriminants (Full_Der)
!                      and then not Has_Unknown_Discriminants (Full_Der))
!                       or else Serious_Errors_Detected > 0);
  
                 Uninstall_Declarations (Par_Scope);
  
+                if Etype (Full_Der) = Any_Type then
+                   pragma Assert (Serious_Errors_Detected > 0);
+                   return;
+                end if;
+ 
                 --  Freeze the underlying record view, to prevent generation of
                 --  useless dispatching information, which is simply shared with
                 --  the real derived type.
*************** package body Sem_Ch3 is
*** 9457,9464 ****
        if Constraint_Present then
           if not Has_Discriminants (Parent_Base)
             or else
!              (Has_Unknown_Discriminants (Parent_Base)
!                and then Is_Private_Type (Parent_Base))
           then
              Error_Msg_N
                ("invalid constraint: type has no discriminant",
--- 9465,9472 ----
        if Constraint_Present then
           if not Has_Discriminants (Parent_Base)
             or else
!              (Has_Unknown_Discriminants (Parent_Type)
!                and then Is_Private_Type (Parent_Type))
           then
              Error_Msg_N
                ("invalid constraint: type has no discriminant",
*************** package body Sem_Ch3 is
*** 15092,15098 ****
        --  If this is a range for a fixed-lower-bound subtype, then set the
        --  index itype's low bound to the FLB and the index itype's upper bound
        --  to the high bound of the parent array type's index subtype. Also,
!       --  mark the itype as an FLB index subtype.
  
        if Nkind (S) = N_Range and then Is_FLB_Index then
           Set_Scalar_Range
--- 15100,15107 ----
        --  If this is a range for a fixed-lower-bound subtype, then set the
        --  index itype's low bound to the FLB and the index itype's upper bound
        --  to the high bound of the parent array type's index subtype. Also,
!       --  set the Etype of the new scalar range and mark the itype as an FLB
!       --  index subtype.
  
        if Nkind (S) = N_Range and then Is_FLB_Index then
           Set_Scalar_Range
*************** package body Sem_Ch3 is
*** 15100,15105 ****
--- 15109,15115 ----
              Make_Range (Sloc (S),
                Low_Bound  => Low_Bound (S),
                High_Bound => Type_High_Bound (T)));
+          Set_Etype (Scalar_Range (Def_Id), Etype (Index));
           Set_Is_Fixed_Lower_Bound_Index_Subtype (Def_Id);
  
        else
diff -Nrcpad gcc-15-20250607/gcc/ada/sem_prag.adb gcc-15-20250614/gcc/ada/sem_prag.adb
*** gcc-15-20250607/gcc/ada/sem_prag.adb	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/ada/sem_prag.adb	Sat Jun 14 22:32:43 2025
*************** package body Sem_Prag is
*** 14696,14714 ****
  
              D := Declaration_Node (E);
  
!             if (Nkind (D) = N_Full_Type_Declaration and then Is_Array_Type (E))
                or else
                  (Nkind (D) = N_Object_Declaration
                     and then Ekind (E) in E_Constant | E_Variable
                     and then Nkind (Object_Definition (D)) =
                                         N_Constrained_Array_Definition)
-               or else
-                  (Ada_Version >= Ada_2022
-                    and then Nkind (D) = N_Formal_Type_Declaration)
              then
                 --  The flag is set on the base type, or on the object
  
!                if Nkind (D) = N_Full_Type_Declaration then
                    E := Base_Type (E);
                 end if;
  
--- 14696,14713 ----
  
              D := Declaration_Node (E);
  
!             if (Nkind (D) in N_Full_Type_Declaration
!                            | N_Formal_Type_Declaration
!                   and then Is_Array_Type (E))
                or else
                  (Nkind (D) = N_Object_Declaration
                     and then Ekind (E) in E_Constant | E_Variable
                     and then Nkind (Object_Definition (D)) =
                                         N_Constrained_Array_Definition)
              then
                 --  The flag is set on the base type, or on the object
  
!                if Is_Array_Type (E) then
                    E := Base_Type (E);
                 end if;
  
diff -Nrcpad gcc-15-20250607/gcc/ada/usage.adb gcc-15-20250614/gcc/ada/usage.adb
*** gcc-15-20250607/gcc/ada/usage.adb	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/ada/usage.adb	Sat Jun 14 22:32:43 2025
*************** begin
*** 92,108 ****
  
     --  Common switches available everywhere
  
!    Write_Switch_Char ("g            ", "");
     Write_Line ("Generate debugging information");
  
!    Write_Switch_Char ("Idir         ", "");
     Write_Line ("Specify source files search path");
  
!    Write_Switch_Char ("I-           ", "");
     Write_Line ("Do not look for sources in current directory");
  
!    Write_Switch_Char ("O[0123]      ", "");
!    Write_Line ("Control the optimization level");
  
     Write_Eol;
  
--- 92,108 ----
  
     --  Common switches available everywhere
  
!    Write_Switch_Char ("g        ", "");
     Write_Line ("Generate debugging information");
  
!    Write_Switch_Char ("Idir     ", "");
     Write_Line ("Specify source files search path");
  
!    Write_Switch_Char ("I-       ", "");
     Write_Line ("Do not look for sources in current directory");
  
!    Write_Switch_Char ("O[?]     ", "");
!    Write_Line ("Control the optimization level (?=0/1/2/3/s/z/g)");
  
     Write_Eol;
  
diff -Nrcpad gcc-15-20250607/gcc/config/avr/avr.md gcc-15-20250614/gcc/config/avr/avr.md
*** gcc-15-20250607/gcc/config/avr/avr.md	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/config/avr/avr.md	Sat Jun 14 22:32:43 2025
***************
*** 5273,5278 ****
--- 5273,5313 ----
  ;;<< << << << << << << << << << << << << << << << << << << << << << << << << <<
  ;; arithmetic shift left
  
+ ;; Work around PR120423: Transform left shift of a paradoxical subreg
+ ;; into left shift of the zero-extended entity.
+ (define_split ; PR120423
+   [(set (match_operand:HISI 0 "register_operand")
+         (ashift:HISI (subreg:HISI (match_operand:QIPSI 1 "nonimmediate_operand")
+                                   0)
+                      (match_operand:QI 2 "const_int_operand")))]
+   "!reload_completed
+    && !avropt_lra_p
+    && <HISI:SIZE> > <QIPSI:SIZE>"
+   [(set (match_dup 4)
+         (zero_extend:HISI (match_dup 5)))
+    (set (match_dup 0)
+         (ashift:HISI (match_dup 4)
+                      (match_dup 2)))]
+   {
+     operands[4] = gen_reg_rtx (<HISI:MODE>mode);
+     operands[5] = force_reg (<QIPSI:MODE>mode, operands[1]);
+   })
+ 
+ ;; Similar happens for PR116389.
+ (define_split ; PR116389
+   [(set (match_operand:HISI 0 "register_operand")
+         (subreg:HISI (match_operand:QIPSI 1 "nonimmediate_operand")
+                      0))]
+   "!reload_completed
+    && !avropt_lra_p
+    && <HISI:SIZE> > <QIPSI:SIZE>"
+   [(set (match_dup 0)
+         (zero_extend:HISI (match_dup 2)))]
+   {
+     operands[2] = force_reg (<QIPSI:MODE>mode, operands[1]);
+   })
+ 
+ 
  ;; "ashlqi3"
  ;; "ashlqq3"  "ashluqq3"
  (define_expand "ashl<mode>3"
diff -Nrcpad gcc-15-20250607/gcc/cp/ChangeLog gcc-15-20250614/gcc/cp/ChangeLog
*** gcc-15-20250607/gcc/cp/ChangeLog	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/cp/ChangeLog	Sat Jun 14 22:32:44 2025
***************
*** 1,3 ****
--- 1,19 ----
+ 2025-06-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-06  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120555
+ 	* decl2.cc (fn_being_defined, fn_template_being_defined): New.
+ 	(mark_used): Check fn_template_being_defined.
+ 
+ 2025-06-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120502
+ 	* cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: Do constexpr evaluation
+ 	before genericize.
+ 	* constexpr.cc (cxx_eval_store_expression): Add comment.
+ 
  2025-06-02  Jason Merrill  <jason@redhat.com>
  
  	PR c++/120123
diff -Nrcpad gcc-15-20250607/gcc/cp/constexpr.cc gcc-15-20250614/gcc/cp/constexpr.cc
*** gcc-15-20250607/gcc/cp/constexpr.cc	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/cp/constexpr.cc	Sat Jun 14 22:32:44 2025
*************** cxx_eval_store_expression (const constex
*** 6421,6427 ****
  
    if (TREE_CLOBBER_P (init)
        && CLOBBER_KIND (init) < CLOBBER_OBJECT_END)
!     /* Only handle clobbers ending the lifetime of objects.  */
      return void_node;
  
    /* First we figure out where we're storing to.  */
--- 6421,6428 ----
  
    if (TREE_CLOBBER_P (init)
        && CLOBBER_KIND (init) < CLOBBER_OBJECT_END)
!     /* Only handle clobbers ending the lifetime of objects.
!        ??? We should probably set CONSTRUCTOR_NO_CLEARING.  */
      return void_node;
  
    /* First we figure out where we're storing to.  */
diff -Nrcpad gcc-15-20250607/gcc/cp/cp-gimplify.cc gcc-15-20250614/gcc/cp/cp-gimplify.cc
*** gcc-15-20250607/gcc/cp/cp-gimplify.cc	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/cp/cp-gimplify.cc	Sat Jun 14 22:32:44 2025
*************** cp_fold_r (tree *stmt_p, int *walk_subtr
*** 1473,1478 ****
--- 1473,1491 ----
        break;
  
      case TARGET_EXPR:
+       if (!flag_no_inline)
+ 	if (tree &init = TARGET_EXPR_INITIAL (stmt))
+ 	  {
+ 	    tree folded = maybe_constant_init (init, TARGET_EXPR_SLOT (stmt),
+ 					       (data->flags & ff_mce_false
+ 						? mce_false : mce_unknown));
+ 	    if (folded != init && TREE_CONSTANT (folded))
+ 	      init = folded;
+ 	  }
+ 
+       /* This needs to happen between the constexpr evaluation (which wants
+ 	 pre-generic trees) and fold (which wants the cp_genericize_init
+ 	 transformations).  */
        if (data->flags & ff_genericize)
  	cp_genericize_target_expr (stmt_p);
  
*************** cp_fold_r (tree *stmt_p, int *walk_subtr
*** 1481,1494 ****
  	  cp_walk_tree (&init, cp_fold_r, data, NULL);
  	  cp_walk_tree (&TARGET_EXPR_CLEANUP (stmt), cp_fold_r, data, NULL);
  	  *walk_subtrees = 0;
- 	  if (!flag_no_inline)
- 	    {
- 	      tree folded = maybe_constant_init (init, TARGET_EXPR_SLOT (stmt),
- 						 (data->flags & ff_mce_false
- 						  ? mce_false : mce_unknown));
- 	      if (folded != init && TREE_CONSTANT (folded))
- 		init = folded;
- 	    }
  	  /* Folding might replace e.g. a COND_EXPR with a TARGET_EXPR; in
  	     that case, strip it in favor of this one.  */
  	  if (TREE_CODE (init) == TARGET_EXPR)
--- 1494,1499 ----
diff -Nrcpad gcc-15-20250607/gcc/cp/decl2.cc gcc-15-20250614/gcc/cp/decl2.cc
*** gcc-15-20250607/gcc/cp/decl2.cc	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/cp/decl2.cc	Sat Jun 14 22:32:44 2025
*************** mark_single_function (tree expr, tsubst_
*** 6267,6272 ****
--- 6267,6299 ----
    return true;
  }
  
+ /* True iff we have started, but not finished, defining FUNCTION_DECL DECL.  */
+ 
+ bool
+ fn_being_defined (tree decl)
+ {
+   /* DECL_INITIAL is set to error_mark_node in grokfndecl for a definition, and
+      changed to BLOCK by poplevel at the end of the function.  */
+   return (TREE_CODE (decl) == FUNCTION_DECL
+ 	  && DECL_INITIAL (decl) == error_mark_node);
+ }
+ 
+ /* True if DECL is an instantiation of a function template currently being
+    defined.  */
+ 
+ bool
+ fn_template_being_defined (tree decl)
+ {
+   if (TREE_CODE (decl) != FUNCTION_DECL
+       || !DECL_LANG_SPECIFIC (decl)
+       || !DECL_TEMPLOID_INSTANTIATION (decl)
+       || DECL_TEMPLATE_INSTANTIATED (decl))
+     return false;
+   tree tinfo = DECL_TEMPLATE_INFO (decl);
+   tree pattern = DECL_TEMPLATE_RESULT (TI_TEMPLATE (tinfo));
+   return fn_being_defined (pattern);
+ }
+ 
  /* Mark DECL (either a _DECL or a BASELINK) as "used" in the program.
     If DECL is a specialization or implicitly declared class member,
     generate the actual definition.  Return false if something goes
*************** mark_used (tree decl, tsubst_flags_t com
*** 6415,6420 ****
--- 6442,6450 ----
      maybe_instantiate_decl (decl);
  
    if (!decl_dependent_p (decl)
+       /* Don't require this yet for an instantiation of a function template
+ 	 we're currently defining (c++/120555).  */
+       && !fn_template_being_defined (decl)
        && !require_deduced_type (decl, complain))
      return false;
  
*************** mark_used (tree decl, tsubst_flags_t com
*** 6429,6437 ****
        && uses_template_parms (DECL_TI_ARGS (decl)))
      return true;
  
-   if (!require_deduced_type (decl, complain))
-     return false;
- 
    if (builtin_pack_fn_p (decl))
      {
        error ("use of built-in parameter pack %qD outside of a template",
--- 6459,6464 ----
diff -Nrcpad gcc-15-20250607/gcc/ext-dce.cc gcc-15-20250614/gcc/ext-dce.cc
*** gcc-15-20250607/gcc/ext-dce.cc	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/ext-dce.cc	Sat Jun 14 22:32:44 2025
*************** along with GCC; see the file COPYING3.
*** 35,40 ****
--- 35,41 ----
  #include "print-rtl.h"
  #include "dbgcnt.h"
  #include "diagnostic-core.h"
+ #include "target.h"
  
  /* These should probably move into a C++ class.  */
  static vec<bitmap_head> livein;
*************** ext_dce_process_uses (rtx_insn *insn, rt
*** 764,776 ****
  			 We don't want to mark those bits live unnecessarily
  			 as that inhibits extension elimination in important
  			 cases such as those in Coremark.  So we need that
! 			 outer code.  */
  		      if (!REG_P (SUBREG_REG (y))
  			  || (SUBREG_PROMOTED_VAR_P (y)
  			      && ((GET_CODE (SET_SRC (x)) == SIGN_EXTEND
  				   && SUBREG_PROMOTED_SIGNED_P (y))
  				  || (GET_CODE (SET_SRC (x)) == ZERO_EXTEND
! 				      && SUBREG_PROMOTED_UNSIGNED_P (y)))))
  			break;
  
  		      bit = subreg_lsb (y).to_constant ();
--- 765,789 ----
  			 We don't want to mark those bits live unnecessarily
  			 as that inhibits extension elimination in important
  			 cases such as those in Coremark.  So we need that
! 			 outer code.
! 
! 			 But if !TRULY_NOOP_TRUNCATION_MODES_P, the mode
! 			 change performed by Y would normally need to be a
! 			 TRUNCATE rather than a SUBREG.  It is probably the
! 			 guarantee provided by SUBREG_PROMOTED_VAR_P that
! 			 allows the SUBREG in Y as an exception.  We must
! 			 therefore preserve that guarantee and treat the
! 			 upper bits of the inner register as live
! 			 regardless of the outer code.  See PR 120050.  */
  		      if (!REG_P (SUBREG_REG (y))
  			  || (SUBREG_PROMOTED_VAR_P (y)
  			      && ((GET_CODE (SET_SRC (x)) == SIGN_EXTEND
  				   && SUBREG_PROMOTED_SIGNED_P (y))
  				  || (GET_CODE (SET_SRC (x)) == ZERO_EXTEND
! 				      && SUBREG_PROMOTED_UNSIGNED_P (y))
! 				  || !TRULY_NOOP_TRUNCATION_MODES_P (
! 					GET_MODE (y),
! 					GET_MODE (SUBREG_REG (y))))))
  			break;
  
  		      bit = subreg_lsb (y).to_constant ();
diff -Nrcpad gcc-15-20250607/gcc/fortran/ChangeLog gcc-15-20250614/gcc/fortran/ChangeLog
*** gcc-15-20250607/gcc/fortran/ChangeLog	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/fortran/ChangeLog	Sat Jun 14 22:32:44 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-06-13  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-06-13  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120483
+ 	* trans-expr.cc (gfc_conv_substring): Use pointer arithmetic on
+ 	static allocatable char arrays.
+ 
  2025-06-04  Harald Anlauf  <anlauf@gmx.de>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250607/gcc/fortran/trans-expr.cc gcc-15-20250614/gcc/fortran/trans-expr.cc
*** gcc-15-20250607/gcc/fortran/trans-expr.cc	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/fortran/trans-expr.cc	Sat Jun 14 22:32:44 2025
*************** gfc_conv_substring (gfc_se * se, gfc_ref
*** 2784,2792 ****
  	start.expr = gfc_evaluate_now (start.expr, &se->pre);
  
        /* Change the start of the string.  */
!       if ((TREE_CODE (TREE_TYPE (se->expr)) == ARRAY_TYPE
! 	   || TREE_CODE (TREE_TYPE (se->expr)) == INTEGER_TYPE)
! 	  && TYPE_STRING_FLAG (TREE_TYPE (se->expr)))
  	tmp = se->expr;
        else
  	tmp = build_fold_indirect_ref_loc (input_location,
--- 2784,2794 ----
  	start.expr = gfc_evaluate_now (start.expr, &se->pre);
  
        /* Change the start of the string.  */
!       if (((TREE_CODE (TREE_TYPE (se->expr)) == ARRAY_TYPE
! 	    || TREE_CODE (TREE_TYPE (se->expr)) == INTEGER_TYPE)
! 	   && TYPE_STRING_FLAG (TREE_TYPE (se->expr)))
! 	  || (POINTER_TYPE_P (TREE_TYPE (se->expr))
! 	      && TREE_CODE (TREE_TYPE (TREE_TYPE (se->expr))) != ARRAY_TYPE))
  	tmp = se->expr;
        else
  	tmp = build_fold_indirect_ref_loc (input_location,
*************** gfc_conv_substring (gfc_se * se, gfc_ref
*** 2797,2802 ****
--- 2799,2812 ----
  	  tmp = gfc_build_array_ref (tmp, start.expr, NULL_TREE, true);
  	  se->expr = gfc_build_addr_expr (type, tmp);
  	}
+       else if (POINTER_TYPE_P (TREE_TYPE (tmp)))
+ 	{
+ 	  tree diff;
+ 	  diff = fold_build2 (MINUS_EXPR, size_type_node, start.expr,
+ 			      build_one_cst (size_type_node));
+ 	  se->expr
+ 	    = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (tmp), tmp, diff);
+ 	}
      }
  
    /* Length = end + 1 - start.  */
diff -Nrcpad gcc-15-20250607/gcc/ipa-prop.cc gcc-15-20250614/gcc/ipa-prop.cc
*** gcc-15-20250607/gcc/ipa-prop.cc	Sat Jun  7 22:32:22 2025
--- gcc-15-20250614/gcc/ipa-prop.cc	Sat Jun 14 22:32:44 2025
*************** update_jump_functions_after_inlining (st
*** 3329,3334 ****
--- 3329,3338 ----
    ipa_edge_args *args = ipa_edge_args_sum->get (e);
    if (!args)
      return;
+   ipa_node_params *old_inline_root_info = ipa_node_params_sum->get (cs->callee);
+   ipa_node_params *new_inline_root_info
+     = ipa_node_params_sum->get (cs->caller->inlined_to
+ 				? cs->caller->inlined_to : cs->caller);
    int count = ipa_get_cs_argument_count (args);
    int i;
  
*************** update_jump_functions_after_inlining (st
*** 3540,3545 ****
--- 3544,3573 ----
  		    enum tree_code operation;
  		    operation = ipa_get_jf_pass_through_operation (src);
  
+ 		    tree old_ir_ptype = ipa_get_type (old_inline_root_info,
+ 						      dst_fid);
+ 		    tree new_ir_ptype = ipa_get_type (new_inline_root_info,
+ 						      formal_id);
+ 		    if (!useless_type_conversion_p (old_ir_ptype, new_ir_ptype))
+ 		      {
+ 			/* Jump-function construction now permits type-casts
+ 			   from an integer to another if the latter can hold
+ 			   all values or has at least the same precision.
+ 			   However, as we're combining multiple pass-through
+ 			   functions together, we are losing information about
+ 			   signedness and thus if conversions should sign or
+ 			   zero extend.  Therefore we must prevent combining
+ 			   such jump-function if signednesses do not match.  */
+ 			if (!INTEGRAL_TYPE_P (old_ir_ptype)
+ 			    || !INTEGRAL_TYPE_P (new_ir_ptype)
+ 			    || (TYPE_UNSIGNED (new_ir_ptype)
+ 				!= TYPE_UNSIGNED (old_ir_ptype)))
+ 			  {
+ 			    ipa_set_jf_unknown (dst);
+ 			    continue;
+ 			  }
+ 		      }
+ 
  		    if (operation == NOP_EXPR)
  		      {
  			bool agg_p;
diff -Nrcpad gcc-15-20250607/gcc/po/ChangeLog gcc-15-20250614/gcc/po/ChangeLog
*** gcc-15-20250607/gcc/po/ChangeLog	Sat Jun  7 22:32:23 2025
--- gcc-15-20250614/gcc/po/ChangeLog	Sat Jun 14 22:32:45 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-06-12  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* es.po: Update.
+ 
  2025-05-15  Joseph Myers  <josmyers@redhat.com>
  
  	* zh_CN.po: Update.
diff -Nrcpad gcc-15-20250607/gcc/po/es.po gcc-15-20250614/gcc/po/es.po
*** gcc-15-20250607/gcc/po/es.po	Sat Jun  7 22:32:23 2025
--- gcc-15-20250614/gcc/po/es.po	Sat Jun 14 22:32:45 2025
***************
*** 2,8 ****
  # Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
  # Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
! # Antonio Ceballos Roa <aceballos@gmail.com>, 2016, 2017, 2018, 2019, 2020
  #
  # Agradezco a Juan Cuquejo Mira por sus comentarios sobre esta traducción
  #
--- 2,8 ----
  # Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
  # Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
! # Antonio Ceballos Roa <aceballos@gmail.com>, 2016, 2017, 2018, 2019, 2020, 2025
  #
  # Agradezco a Juan Cuquejo Mira por sus comentarios sobre esta traducción
  #
***************
*** 40,49 ****
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 10.1-b20200209\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-04-23 19:27+0000\n"
! "PO-Revision-Date: 2020-03-22 16:48+0100\n"
  "Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
  "Language-Team: Spanish <es@tp.org.es>\n"
  "Language: es\n"
--- 40,49 ----
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 15.1.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-04-23 19:27+0000\n"
! "PO-Revision-Date: 2025-06-12 23:08+0200\n"
  "Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
  "Language-Team: Spanish <es@tp.org.es>\n"
  "Language: es\n"
*************** msgstr "Activa las opciones comunes para
*** 15533,15544 ****
  #: common.opt:2648
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
! msgstr ""
  
  #: common.opt:2652
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
! msgstr ""
  
  #: common.opt:2656
  #, no-c-format
--- 15533,15544 ----
  #: common.opt:2648
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
! msgstr "Registra la información de análisis de perfil en la sección .gcov_info en lugar de utilizar un constructor/destructor."
  
  #: common.opt:2652
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
! msgstr "Registra la información de análisis de perfil en la sección especificada en lugar de utilizar un constructor/destructor."
  
  #: common.opt:2656
  #, no-c-format
*************** msgstr ""
*** 18902,18908 ****
  #: gcov-tool.cc:157 gcov-tool.cc:300
  #, c-format
  msgid "no profile files were merged\n"
! msgstr ""
  
  #: gcov-tool.cc:169
  #, c-format
--- 18902,18908 ----
  #: gcov-tool.cc:157 gcov-tool.cc:300
  #, c-format
  msgid "no profile files were merged\n"
! msgstr "no se han mezclado ficheros de perfil\n"
  
  #: gcov-tool.cc:169
  #, c-format
*************** msgid "    -w, --weight <w1,w2>
*** 18925,18950 ****
  msgstr "    -w, --weight <p1,p2>                Establece los pesos (valores de coma flotante)\n"
  
  #: gcov-tool.cc:188
! #, fuzzy, c-format
! #| msgid "Merge subcomand usage:"
  msgid "Merge subcommand usage:"
  msgstr "Modo de empleo de la suborden de mezcla:"
  
  #: gcov-tool.cc:240
! #, fuzzy, c-format
! #| msgid ""
! #| "  -l, --long-file-names           Use long output file names for included\n"
! #| "                                    source files\n"
  msgid ""
  "  merge-stream [options] [<file>]       Merge coverage stream file (or stdin)\n"
  "                                        and coverage file contents\n"
  msgstr ""
! "  -l, --long-file-names           Usa nombres largos de ficheros para los\n"
! "                                    ficheros fuentes incluidos\n"
  
  #: gcov-tool.cc:258
! #, fuzzy, c-format
! #| msgid "Merge subcomand usage:"
  msgid "Merge-stream subcommand usage:"
  msgstr "Modo de empleo de la suborden de mezcla:"
  
--- 18925,18946 ----
  msgstr "    -w, --weight <p1,p2>                Establece los pesos (valores de coma flotante)\n"
  
  #: gcov-tool.cc:188
! #, c-format
  msgid "Merge subcommand usage:"
  msgstr "Modo de empleo de la suborden de mezcla:"
  
  #: gcov-tool.cc:240
! #, c-format
  msgid ""
  "  merge-stream [options] [<file>]       Merge coverage stream file (or stdin)\n"
  "                                        and coverage file contents\n"
  msgstr ""
! "  merge-stream [options] [<fich>]       Mezcla el fichero de flujo de cobertura\n"
! "                                        (o stdin) y el contenido del fichero de\n"
! "                                        cobertura\n"
  
  #: gcov-tool.cc:258
! #, c-format
  msgid "Merge-stream subcommand usage:"
  msgstr "Modo de empleo de la suborden de mezcla:"
  
*************** msgid "    -t <float>, --hot_threshold <
*** 19014,19021 ****
  msgstr "    -t <float>, --hot_threshold <float> Establece el umbral de calentura\n"
  
  #: gcov-tool.cc:510
! #, fuzzy, c-format
! #| msgid "Overlap subcomand usage:"
  msgid "Overlap subcommand usage:"
  msgstr "Modo de empleo de la suborden de solapamiento:"
  
--- 19010,19016 ----
  msgstr "    -t <float>, --hot_threshold <float> Establece el umbral de calentura\n"
  
  #: gcov-tool.cc:510
! #, c-format
  msgid "Overlap subcommand usage:"
  msgstr "Modo de empleo de la suborden de solapamiento:"
  
*************** msgstr ""
*** 19059,19068 ****
  "%s.\n"
  
  #: gcov-tool.cc:595
! #, fuzzy, c-format
! #| msgid "Copyright %s 2019 Free Software Foundation, Inc.\n"
  msgid "Copyright %s 2025 Free Software Foundation, Inc.\n"
! msgstr "Copyright %s 2019 Free Software Foundation, Inc.\n"
  
  #: gcov.cc:1096
  #, c-format
--- 19054,19062 ----
  "%s.\n"
  
  #: gcov-tool.cc:595
! #, c-format
  msgid "Copyright %s 2025 Free Software Foundation, Inc.\n"
! msgstr "Copyright %s 2025 Free Software Foundation, Inc.\n"
  
  #: gcov.cc:1096
  #, c-format
*************** msgstr ""
*** 19102,19123 ****
  "                                    en lugar de los porcentajes\n"
  
  #: gcov.cc:1102
! #, fuzzy, c-format
! #| msgid ""
! #| "  -c, --branch-counts             Output counts of branches taken\n"
! #| "                                    rather than percentages\n"
  msgid ""
  "  -g, --conditions                Include modified condition/decision\n"
  "                                    coverage (masking MC/DC) in output\n"
  msgstr ""
! "  -c, --branch-counts             Se muestra el número de ramificaciones\n"
! "                                    en lugar de los porcentajes\n"
  
  #: gcov.cc:1104
! #, fuzzy, c-format
! #| msgid "  -p, --preserve-paths            Preserve all pathname components\n"
  msgid "  -e, --prime-paths               Show prime path coverage summary\n"
! msgstr "  -p, --preserve-paths            Preserva todos los nombres de ruta de los componentes\n"
  
  #: gcov.cc:1105
  #, c-format
--- 19096,19116 ----
  "                                    en lugar de los porcentajes\n"
  
  #: gcov.cc:1102
! #, c-format
  msgid ""
  "  -g, --conditions                Include modified condition/decision\n"
  "                                    coverage (masking MC/DC) in output\n"
  msgstr ""
! "  -g, --conditions                Incluye la cobertura de condición/decisión\n"
! "                                    modificada (enmascarando MC/DC) en la\n"
! "                                    salida\n"
  
  #: gcov.cc:1104
! #, c-format
  msgid "  -e, --prime-paths               Show prime path coverage summary\n"
! msgstr ""
! "  -e, --prime-paths               Muestra el resumen de la cobertura de camino\n"
! "                                    primario\n"
  
  #: gcov.cc:1105
  #, c-format
*************** msgid ""
*** 19127,19132 ****
--- 19120,19129 ----
  "                                    TYPE is 'covered', 'uncovered', or 'both'\n"
  "                                    and defaults to 'uncovered'\n"
  msgstr ""
+ "      --prime-paths-lines[=TIPO]  Incluye los caminos en la salida\n"
+ "                                    modo de traza de línea - no afecta a json\n"
+ "                                    TIPO es 'covered', 'uncovered' o 'both'\n"
+ "                                    y el predefinido es 'uncovered'\n"
  
  #: gcov.cc:1109
  #, c-format
*************** msgid ""
*** 19136,19141 ****
--- 19133,19142 ----
  "                                    TYPE is 'covered', 'uncovered', or 'both'\n"
  "                                    and defaults to 'uncovered'\n"
  msgstr ""
+ "      --prime-paths-source[=TIPO] Incluye los caminos en la salida\n"
+ "                                    modo de traza de fuente - no afecta a json\n"
+ "                                    TIPO es 'covered', 'uncovered' o 'both'\n"
+ "                                    y el predefinido es 'uncovered'\n"
  
  #: gcov.cc:1113
  #, c-format
*************** msgstr "  -d, --display-progress
*** 19145,19151 ****
  #: gcov.cc:1114
  #, c-format
  msgid "  -D, --debug\t\t\t    Display debugging dumps\n"
! msgstr ""
  
  #: gcov.cc:1115
  #, c-format
--- 19146,19152 ----
  #: gcov.cc:1114
  #, c-format
  msgid "  -D, --debug\t\t\t    Display debugging dumps\n"
! msgstr "  -D, --debug\t\t\t    Muestra volcados de depuración\n"
  
  #: gcov.cc:1115
  #, c-format
*************** msgid "  -f, --function-summaries
*** 19153,19168 ****
  msgstr "  -f, --function-summaries        Muestra sumarios para cada función\n"
  
  #: gcov.cc:1116
! #, fuzzy, c-format
! #| msgid "    -f, --function                      Print function level info\n"
  msgid "      --include                   Include functions matching this regex\n"
! msgstr "    -f, --function                      Imprime información sobre el nivel de funciones\n"
  
  #: gcov.cc:1117
! #, fuzzy, c-format
! #| msgid "  -h, --help                      Print this help, then exit\n"
  msgid "      --exclude                   Exclude functions matching this regex\n"
! msgstr "  -h, --help                      Muestra esta información, y finaliza\n"
  
  #: gcov.cc:1118
  #, c-format
--- 19154,19167 ----
  msgstr "  -f, --function-summaries        Muestra sumarios para cada función\n"
  
  #: gcov.cc:1116
! #, c-format
  msgid "      --include                   Include functions matching this regex\n"
! msgstr "      --include                   Incluye funciones coincidentes con esta regex\n"
  
  #: gcov.cc:1117
! #, c-format
  msgid "      --exclude                   Exclude functions matching this regex\n"
! msgstr "      --exclude                   Excluye funciones coincidentes con esta regex\n"
  
  #: gcov.cc:1118
  #, c-format
*************** msgid "  -h, --help
*** 19170,19187 ****
  msgstr "  -h, --help                      Muestra esta información, y finaliza\n"
  
  #: gcov.cc:1119
! #, fuzzy, c-format
! #| msgid "  -i, --json-format               Output JSON intermediate format into .gcov.json.gz file\n"
  msgid ""
  "  -j, --json-format               Output JSON intermediate format\n"
  "                                    into .gcov.json.gz file\n"
! msgstr "  -i, --json-format               Salida con formato JSON intermedia en el fichero .gcov.json.gz\n"
  
  #: gcov.cc:1121
! #, fuzzy, c-format
! #| msgid "  -j, --human-readable            Output human readable numbers\n"
  msgid "  -H, --human-readable            Output human readable numbers\n"
! msgstr "  -j, --human-readable            Salida con números legibles para humanos\n"
  
  #: gcov.cc:1122
  #, c-format
--- 19169,19186 ----
  msgstr "  -h, --help                      Muestra esta información, y finaliza\n"
  
  #: gcov.cc:1119
! #, c-format
  msgid ""
  "  -j, --json-format               Output JSON intermediate format\n"
  "                                    into .gcov.json.gz file\n"
! msgstr ""
! "  -j, --json-format               Envía el formato intermedio JSON\n"
! "                                    al fichero .gcov.json.gz\n"
  
  #: gcov.cc:1121
! #, c-format
  msgid "  -H, --human-readable            Output human readable numbers\n"
! msgstr "  -H, --human-readable            Salida con números legibles para humanos\n"
  
  #: gcov.cc:1122
  #, c-format
*************** msgstr ""
*** 19200,19218 ****
  #: gcov.cc:1125
  #, c-format
  msgid "  -m, --demangled-names           Output demangled function names\n"
! msgstr "  -m, --demangled-names           Nombres de función mutilados de salida\n"
  
  #: gcov.cc:1126
! #, fuzzy, c-format
! #| msgid ""
! #| "  -l, --long-file-names           Use long output file names for included\n"
! #| "                                    source files\n"
  msgid ""
  "  -M, --filter-on-demangled       Make --include/--exclude match on demangled\n"
  "                                    names. This does not imply -m\n"
  msgstr ""
! "  -l, --long-file-names           Usa nombres largos de ficheros para los\n"
! "                                    ficheros fuentes incluidos\n"
  
  #: gcov.cc:1128
  #, c-format
--- 19199,19214 ----
  #: gcov.cc:1125
  #, c-format
  msgid "  -m, --demangled-names           Output demangled function names\n"
! msgstr "  -m, --demangled-names           Saca nombres de función desofuscados\n"
  
  #: gcov.cc:1126
! #, c-format
  msgid ""
  "  -M, --filter-on-demangled       Make --include/--exclude match on demangled\n"
  "                                    names. This does not imply -m\n"
  msgstr ""
! "  -M, --filter-on-demangled       Aplica --include/--exclude a los nombres\n"
! "                                    desofuscados. No implica -m\n"
  
  #: gcov.cc:1128
  #, c-format
*************** msgid "  -x, --hash-filenames
*** 19270,19293 ****
  msgstr "  -x, --hash-filenames            Nombres de ruta largos de Hash\n"
  
  #: gcov.cc:1139
! #, fuzzy, c-format
! #| msgid "Options:\n"
  msgid ""
  "\n"
  "Obsolete options:\n"
! msgstr "Opciones:\n"
  
  #: gcov.cc:1140
! #, fuzzy, c-format
! #| msgid "  -i, --json-format               Output JSON intermediate format into .gcov.json.gz file\n"
  msgid "  -i, --json-format               Replaced with -j, --json-format\n"
! msgstr "  -i, --json-format               Salida con formato JSON intermedia en el fichero .gcov.json.gz\n"
  
  #: gcov.cc:1141
! #, fuzzy, c-format
! #| msgid "  -j, --human-readable            Output human readable numbers\n"
  msgid "  -j, --human-readable            Replaced with -H, --human-readable\n"
! msgstr "  -j, --human-readable            Salida con números legibles para humanos\n"
  
  #: gcov.cc:1152
  #, c-format
--- 19266,19288 ----
  msgstr "  -x, --hash-filenames            Nombres de ruta largos de Hash\n"
  
  #: gcov.cc:1139
! #, c-format
  msgid ""
  "\n"
  "Obsolete options:\n"
! msgstr ""
! "\n"
! "Opciones obsoletas:\n"
  
  #: gcov.cc:1140
! #, c-format
  msgid "  -i, --json-format               Replaced with -j, --json-format\n"
! msgstr "  -i, --json-format               Reemplazado por -j, --json-format\n"
  
  #: gcov.cc:1141
! #, c-format
  msgid "  -j, --human-readable            Replaced with -H, --human-readable\n"
! msgstr "  -j, --human-readable            Reemplazado por -H, --human-readable\n"
  
  #: gcov.cc:1152
  #, c-format
*************** msgid "gcov %s%s\n"
*** 19295,19314 ****
  msgstr "gcov %s%s\n"
  
  #: gcov.cc:1153
! #, fuzzy, c-format
! #| msgid "collect2 version %s\n"
  msgid "JSON format version: %s\n"
! msgstr "collect2 versión %s\n"
  
  #: gcov.cc:1237
  #, c-format
  msgid "invalid argument '%s' for '--prime-paths-lines'. Valid arguments are: 'covered', 'uncovered', 'both'\n"
! msgstr ""
  
  #: gcov.cc:1258
  #, c-format
  msgid "invalid argument '%s' for '--prime-paths-source'. Valid arguments are: 'covered', 'uncovered', 'both'\n"
! msgstr ""
  
  #: gcov.cc:1726
  #, c-format
--- 19290,19308 ----
  msgstr "gcov %s%s\n"
  
  #: gcov.cc:1153
! #, c-format
  msgid "JSON format version: %s\n"
! msgstr "versión del formato JSON: %s\n"
  
  #: gcov.cc:1237
  #, c-format
  msgid "invalid argument '%s' for '--prime-paths-lines'. Valid arguments are: 'covered', 'uncovered', 'both'\n"
! msgstr "argumento no válido '%s' para --prime-paths-lines'. Argumentos válidos: 'covered', 'uncovered', 'both'\n"
  
  #: gcov.cc:1258
  #, c-format
  msgid "invalid argument '%s' for '--prime-paths-source'. Valid arguments are: 'covered', 'uncovered', 'both'\n"
! msgstr "argumento no válido '%s' para --prime-paths-source'. Argumentos válidos: 'covered', 'uncovered', 'both'\n"
  
  #: gcov.cc:1726
  #, c-format
*************** msgid "%s:already seen blocks for '%s'\n
*** 19376,19385 ****
  msgstr "%s:ya se vieron bloques para '%s'\n"
  
  #: gcov.cc:2391
! #, fuzzy, c-format
! #| msgid "%s:already seen blocks for '%s'\n"
  msgid "%s:already seen conditions for '%s'\n"
! msgstr "%s:ya se vieron bloques para '%s'\n"
  
  #: gcov.cc:2449 gcov.cc:2589
  #, c-format
--- 19370,19378 ----
  msgstr "%s:ya se vieron bloques para '%s'\n"
  
  #: gcov.cc:2391
! #, c-format
  msgid "%s:already seen conditions for '%s'\n"
! msgstr "%s:condiciones ya vistas para '%s'\n"
  
  #: gcov.cc:2449 gcov.cc:2589
  #, c-format
*************** msgid "No calls\n"
*** 19482,19509 ****
  msgstr "No hay llamadas\n"
  
  #: gcov.cc:3090 gcov.cc:3144
! #, fuzzy, c-format
! #| msgid "Lines executed:%s of %d\n"
  msgid "Condition outcomes covered:%s of %d\n"
! msgstr "Líneas ejecutadas:%s de %d\n"
  
  #: gcov.cc:3095 gcov.cc:3149
! #, fuzzy, c-format
! #| msgid "bad condition code"
  msgid "No conditions\n"
! msgstr "código de condición erróneo"
  
  #: gcov.cc:3101 gcov.cc:3155
! #, fuzzy, c-format
! #| msgid "Branches executed:%s of %d\n"
  msgid "Prime paths covered:%s of %d\n"
! msgstr "Ramificaciones ejecutadas:%s de %d\n"
  
  #: gcov.cc:3105 gcov.cc:3159
! #, fuzzy, c-format
! #| msgid "Display this information."
  msgid "No path information\n"
! msgstr "Muestra esta información."
  
  #: gcov.cc:3379
  #, c-format
--- 19475,19498 ----
  msgstr "No hay llamadas\n"
  
  #: gcov.cc:3090 gcov.cc:3144
! #, c-format
  msgid "Condition outcomes covered:%s of %d\n"
! msgstr "Salidas de condiciones cubiertas:%s de %d\n"
  
  #: gcov.cc:3095 gcov.cc:3149
! #, c-format
  msgid "No conditions\n"
! msgstr "No hay condiciones\n"
  
  #: gcov.cc:3101 gcov.cc:3155
! #, c-format
  msgid "Prime paths covered:%s of %d\n"
! msgstr "Caminos primarios cubiertos:%s de %d\n"
  
  #: gcov.cc:3105 gcov.cc:3159
! #, c-format
  msgid "No path information\n"
! msgstr "No hay información de caminos\n"
  
  #: gcov.cc:3379
  #, c-format
*************** msgstr "%s:no hay líneas para '%s'\n"
*** 19513,19525 ****
  #: gcov.cc:3515
  #, c-format
  msgid "condition outcomes covered %d/%d\n"
! msgstr ""
  
  #: gcov.cc:3528
! #, fuzzy, c-format
! #| msgid "unconditional %2d taken %s\n"
  msgid "condition %2u not covered (%s%s)\n"
! msgstr "el incondicional %2d tomado %s\n"
  
  #: gcov.cc:3542
  #, c-format
--- 19502,19513 ----
  #: gcov.cc:3515
  #, c-format
  msgid "condition outcomes covered %d/%d\n"
! msgstr "salidas de condiciones cubiertas %d/%d\n"
  
  #: gcov.cc:3528
! #, c-format
  msgid "condition %2u not covered (%s%s)\n"
! msgstr "condición %2u no cubierta (%s%s)\n"
  
  #: gcov.cc:3542
  #, c-format
*************** msgid "branch %2d taken %s%s"
*** 19537,19546 ****
  msgstr "ramificación %2d tomada %s%s"
  
  #: gcov.cc:3557
! #, fuzzy, c-format
! #| msgid "branch %2d never executed"
  msgid "branch %2d never executed%s"
! msgstr "la ramificacion %2d nunca se ejecuta"
  
  #: gcov.cc:3562
  #, c-format
--- 19525,19533 ----
  msgstr "ramificación %2d tomada %s%s"
  
  #: gcov.cc:3557
! #, c-format
  msgid "branch %2d never executed%s"
! msgstr "la ramificacion %2d nunca se ejecuta%s"
  
  #: gcov.cc:3562
  #, c-format
*************** msgid "unconditional %2d never executed\
*** 19558,19572 ****
  msgstr "el incondicional %2d nunca se ejecuta\n"
  
  #: gcov.cc:3729
! #, fuzzy, c-format
! #| msgid "parameter name omitted"
  msgid "path coverage omitted\n"
! msgstr "se omitió el nombre del parámetro"
  
  #: gcov.cc:3731
  #, c-format
  msgid "paths covered %u of %zu\n"
! msgstr ""
  
  #: gcov.cc:3806
  #, c-format
--- 19545,19558 ----
  msgstr "el incondicional %2d nunca se ejecuta\n"
  
  #: gcov.cc:3729
! #, c-format
  msgid "path coverage omitted\n"
! msgstr "cobertura de caminos omitida\n"
  
  #: gcov.cc:3731
  #, c-format
  msgid "paths covered %u of %zu\n"
! msgstr "caminos cubiertos %u de %zu\n"
  
  #: gcov.cc:3806
  #, c-format
*************** msgid "End of search list.\n"
*** 19612,19627 ****
  msgstr "Fin de la lista de búsqueda.\n"
  
  #: incpath.cc:408
! #, fuzzy, c-format
! #| msgid "#include <...> search starts here:\n"
  msgid "#embed <...> search starts here:\n"
! msgstr "la búsqueda de #include <...> inicia aquí:\n"
  
  #: incpath.cc:411
! #, fuzzy, c-format
! #| msgid "End of search list.\n"
  msgid "End of #embed search list.\n"
! msgstr "Fin de la lista de búsqueda.\n"
  
  #: input.cc:35
  msgid "<built-in>"
--- 19598,19611 ----
  msgstr "Fin de la lista de búsqueda.\n"
  
  #: incpath.cc:408
! #, c-format
  msgid "#embed <...> search starts here:\n"
! msgstr "la búsqueda de #embed <...> comienza aquí:\n"
  
  #: incpath.cc:411
! #, c-format
  msgid "End of #embed search list.\n"
! msgstr "Fin de la lista de búsqueda de #embed.\n"
  
  #: input.cc:35
  msgid "<built-in>"
*************** msgid "wrong number of arguments to %%:d
*** 27144,27153 ****
  msgstr "número erróneo de argumentos para %%:debug-level-gt"
  
  #: gcov-tool.cc:75
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "error in removing %s\n"
  msgid "error in removing %s"
! msgstr "error al quitar %s\n"
  
  #: gcov-tool.cc:106
  #, gcc-internal-format, gfc-internal-format
--- 27128,27136 ----
  msgstr "número erróneo de argumentos para %%:debug-level-gt"
  
  #: gcov-tool.cc:75
! #, gcc-internal-format, gfc-internal-format
  msgid "error in removing %s"
! msgstr "error al quitar %s"
  
  #: gcov-tool.cc:106
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "No se puede cambiar al directori
*** 27167,27185 ****
  #: gcov-tool.cc:125
  #, gcc-internal-format, gfc-internal-format
  msgid "output file %s already exists in folder %s"
! msgstr ""
  
  #: gcov-tool.cc:217 gcov-tool.cc:285
! #, fuzzy, gcc-internal-format
! #| msgid "weights need to be non-negative\n"
  msgid "weights need to be non-negative"
! msgstr "los pesos tienen que ser no negativos\n"
  
  #: gcov-tool.cc:424
! #, fuzzy, gcc-internal-format
! #| msgid "scale needs to be non-negative\n"
  msgid "scale needs to be non-negative"
! msgstr "la escala tiene que ser no negativa\n"
  
  #: gcse.cc:4194
  #, gcc-internal-format, gfc-internal-format
--- 27150,27166 ----
  #: gcov-tool.cc:125
  #, gcc-internal-format, gfc-internal-format
  msgid "output file %s already exists in folder %s"
! msgstr "el fichero de salida %s ya existe en la carpeta %s"
  
  #: gcov-tool.cc:217 gcov-tool.cc:285
! #, gcc-internal-format
  msgid "weights need to be non-negative"
! msgstr "los pesos han de ser no negativos"
  
  #: gcov-tool.cc:424
! #, gcc-internal-format
  msgid "scale needs to be non-negative"
! msgstr "la escala ha de ser no negativa"
  
  #: gcse.cc:4194
  #, gcc-internal-format, gfc-internal-format
diff -Nrcpad gcc-15-20250607/gcc/real.cc gcc-15-20250614/gcc/real.cc
*** gcc-15-20250607/gcc/real.cc	Sat Jun  7 22:32:23 2025
--- gcc-15-20250614/gcc/real.cc	Sat Jun 14 22:32:45 2025
*************** real_from_integer (REAL_VALUE_TYPE *r, f
*** 2230,2236 ****
      {
        unsigned int len = val_in.get_precision ();
        int i, j, e = 0;
-       int maxbitlen = MAX_BITSIZE_MODE_ANY_INT + HOST_BITS_PER_WIDE_INT;
        const unsigned int realmax = (SIGNIFICAND_BITS / HOST_BITS_PER_WIDE_INT
  				    * HOST_BITS_PER_WIDE_INT);
  
--- 2230,2235 ----
*************** real_from_integer (REAL_VALUE_TYPE *r, f
*** 2238,2249 ****
        r->cl = rvc_normal;
        r->sign = wi::neg_p (val_in, sgn);
  
-       /* We have to ensure we can negate the largest negative number.  */
-       wide_int val = wide_int::from (val_in, maxbitlen, sgn);
- 
-       if (r->sign)
- 	val = -val;
- 
        /* Ensure a multiple of HOST_BITS_PER_WIDE_INT, ceiling, as elt
  	 won't work with precisions that are not a multiple of
  	 HOST_BITS_PER_WIDE_INT.  */
--- 2237,2242 ----
*************** real_from_integer (REAL_VALUE_TYPE *r, f
*** 2252,2258 ****
        /* Ensure we can represent the largest negative number.  */
        len += 1;
  
!       len = len/HOST_BITS_PER_WIDE_INT * HOST_BITS_PER_WIDE_INT;
  
        /* Cap the size to the size allowed by real.h.  */
        if (len > realmax)
--- 2245,2257 ----
        /* Ensure we can represent the largest negative number.  */
        len += 1;
  
!       len = len / HOST_BITS_PER_WIDE_INT * HOST_BITS_PER_WIDE_INT;
! 
!       /* We have to ensure we can negate the largest negative number.  */
!       wide_int val = wide_int::from (val_in, len, sgn);
! 
!       if (r->sign)
! 	val = -val;
  
        /* Cap the size to the size allowed by real.h.  */
        if (len > realmax)
*************** real_from_integer (REAL_VALUE_TYPE *r, f
*** 2260,2273 ****
  	  HOST_WIDE_INT cnt_l_z;
  	  cnt_l_z = wi::clz (val);
  
! 	  if (maxbitlen - cnt_l_z > realmax)
  	    {
! 	      e = maxbitlen - cnt_l_z - realmax;
  
  	      /* This value is too large, we must shift it right to
  		 preserve all the bits we can, and then bump the
! 		 exponent up by that amount.  */
! 	      val = wi::lrshift (val, e);
  	    }
  	  len = realmax;
  	}
--- 2259,2276 ----
  	  HOST_WIDE_INT cnt_l_z;
  	  cnt_l_z = wi::clz (val);
  
! 	  if (len - cnt_l_z > realmax)
  	    {
! 	      e = len - cnt_l_z - realmax;
  
  	      /* This value is too large, we must shift it right to
  		 preserve all the bits we can, and then bump the
! 		 exponent up by that amount, but or in 1 if any of
! 		 the shifted out bits are non-zero.  */
! 	      if (wide_int::from (val, e, UNSIGNED) != 0)
! 		val = wi::set_bit (wi::lrshift (val, e), 0);
! 	      else
! 		val = wi::lrshift (val, e);
  	    }
  	  len = realmax;
  	}
diff -Nrcpad gcc-15-20250607/gcc/testsuite/ChangeLog gcc-15-20250614/gcc/testsuite/ChangeLog
*** gcc-15-20250607/gcc/testsuite/ChangeLog	Sat Jun  7 22:32:23 2025
--- gcc-15-20250614/gcc/testsuite/ChangeLog	Sat Jun 14 22:32:45 2025
***************
*** 1,3 ****
--- 1,57 ----
+ 2025-06-13  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-06-12  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR middle-end/117811
+ 	PR testsuite/52641
+ 	* gcc.dg/torture/pr117811.c: Fix for int < 32 bit.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/120638
+ 	* gcc.dg/pr120638.c: New test.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120547
+ 	* gcc.dg/bitint-123.c: New test.
+ 
+ 2025-06-13  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-06-13  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120483
+ 	* gfortran.dg/save_8.f90: New test.
+ 
+ 2025-06-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2025-05-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/120295
+ 	* gcc.dg/ipa/pr120295.c: New test.
+ 
+ 2025-06-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-06  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120555
+ 	* g++.dg/cpp1z/constexpr-if39.C: New test.
+ 
+ 2025-06-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120502
+ 	* g++.dg/cpp2a/constexpr-prvalue2.C: New test.
+ 
  2025-06-06  Richard Biener  <rguenther@suse.de>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250607/gcc/testsuite/g++.dg/cpp1z/constexpr-if39.C gcc-15-20250614/gcc/testsuite/g++.dg/cpp1z/constexpr-if39.C
*** gcc-15-20250607/gcc/testsuite/g++.dg/cpp1z/constexpr-if39.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/gcc/testsuite/g++.dg/cpp1z/constexpr-if39.C	Sat Jun 14 22:32:46 2025
***************
*** 0 ****
--- 1,30 ----
+ // PR c++/120555
+ // { dg-do compile { target c++17 } }
+ 
+ struct A { int m; };
+ 
+ template<class T>
+ constexpr auto f() {
+   if constexpr (sizeof(T) == sizeof(int))
+     return 1;
+   else
+     return A{f<int>()};
+ }
+ 
+ static_assert(f<bool>().m == 1);
+ static_assert(f<int>() == 1);
+ 
+ template <class T> constexpr auto g();
+ 
+ template<class T>
+ constexpr auto f2() {
+   if constexpr (sizeof(T) == sizeof(int))
+     return 1;
+   else
+     return A{g<int>()};		// { dg-error "auto" }
+ }
+ 
+ template <class T> constexpr auto g() { return A{1}; }
+ 
+ static_assert(f2<bool>().m == 1);
+ static_assert(f2<int>() == 1);
diff -Nrcpad gcc-15-20250607/gcc/testsuite/g++.dg/cpp2a/constexpr-prvalue2.C gcc-15-20250614/gcc/testsuite/g++.dg/cpp2a/constexpr-prvalue2.C
*** gcc-15-20250607/gcc/testsuite/g++.dg/cpp2a/constexpr-prvalue2.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/gcc/testsuite/g++.dg/cpp2a/constexpr-prvalue2.C	Sat Jun 14 22:32:46 2025
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/120502
+ // { dg-do compile { target c++20 } }
+ // { dg-additional-options -O }
+ 
+ struct non_trivial_if {
+   constexpr non_trivial_if() {}
+ };
+ struct allocator : non_trivial_if {};
+ struct padding {};
+ struct __short {
+   [[no_unique_address]] padding p;
+ };
+ struct basic_string {
+   union {
+     __short s;
+     int l;
+   };
+   [[no_unique_address]] allocator a;
+   constexpr basic_string() {}
+   ~basic_string() {}
+ };
+ struct time_zone {
+   basic_string __abbrev;
+   long __offset;
+ };
+ time_zone convert_to_time_zone() { return {}; }
diff -Nrcpad gcc-15-20250607/gcc/testsuite/gcc.dg/bitint-123.c gcc-15-20250614/gcc/testsuite/gcc.dg/bitint-123.c
*** gcc-15-20250607/gcc/testsuite/gcc.dg/bitint-123.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/gcc/testsuite/gcc.dg/bitint-123.c	Sat Jun 14 22:32:50 2025
***************
*** 0 ****
--- 1,26 ----
+ /* PR middle-end/120547 */
+ /* { dg-do run { target bitint } } */
+ /* { dg-options "-O2" } */
+ /* { dg-add-options float64 } */
+ /* { dg-require-effective-target float64 } */
+ 
+ #define CHECK(x, y) \
+   if ((_Float64) x != (_Float64) y				\
+       || (_Float64) (x + 1) != (_Float64) (y + 1))		\
+     __builtin_abort ()
+ 
+ int
+ main ()
+ {
+   unsigned long long a = 0x20000000000001ULL << 7;
+   volatile unsigned long long b = a;
+   CHECK (a, b);
+ #if __BITINT_MAXWIDTH__ >= 4096
+   unsigned _BitInt(4096) c = ((unsigned _BitInt(4096)) 0x20000000000001ULL) << 253;
+   volatile unsigned _BitInt(4096) d = c;
+   CHECK (c, d);
+   unsigned _BitInt(4096) e = ((unsigned _BitInt(4096)) 0x20000000000001ULL) << 931;
+   volatile unsigned _BitInt(4096) f = e;
+   CHECK (e, f);
+ #endif
+ }
diff -Nrcpad gcc-15-20250607/gcc/testsuite/gcc.dg/ipa/pr120295.c gcc-15-20250614/gcc/testsuite/gcc.dg/ipa/pr120295.c
*** gcc-15-20250607/gcc/testsuite/gcc.dg/ipa/pr120295.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/gcc/testsuite/gcc.dg/ipa/pr120295.c	Sat Jun 14 22:32:51 2025
***************
*** 0 ****
--- 1,66 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3" } */
+ 
+ struct {
+   signed a;
+ } b;
+ int a, f, j, l;
+ char c, k, g, e;
+ short d[2] = {0};
+ int *i = &j;
+ 
+ volatile int glob;
+ void __attribute__((noipa)) sth (const char *, int a)
+ {
+   glob = a;
+   return;
+ }
+ 
+ void marker_37() {
+   a++;
+   sth ("%d\n", a);
+ }
+ unsigned long long m(unsigned, char, unsigned, short);
+ int n(int, unsigned char, long long);
+ int o(long long, unsigned, unsigned);
+ unsigned short p(void) {
+   int *r = &l;
+   *r |= ({
+     long long y = (m(c, c, 0, c), b.a);
+     y;
+   });
+   return 0;
+ }
+ unsigned long long m(unsigned q, char v, unsigned s, short u) {
+   unsigned short ab = 5;
+   if (n(q, ab, d[1]))
+     for (; g; g++)
+       ;
+   return c;
+ }
+ int n(int af, unsigned char e, long long ae) {
+   unsigned ag = 4;
+   int *ah = &f;
+   *ah = ({ short ad = o(af, f, ag); ad<0 || ad> e; });
+   return *i;
+ }
+ int o(long long aj, unsigned ai, unsigned ak) {
+   for (; e; e--) {
+     int *al = &f;
+     for (; k; k++)
+       *al = 0;
+   }
+   if (18446744073709551606UL != (unsigned long long) aj)
+     ;
+   else
+     marker_37();
+   return ak;
+ }
+ int f123() {
+   c = 0xf6;
+   p();
+   return 0;
+ }
+ int main() {
+   return f123();
+ }
diff -Nrcpad gcc-15-20250607/gcc/testsuite/gcc.dg/pr120638.c gcc-15-20250614/gcc/testsuite/gcc.dg/pr120638.c
*** gcc-15-20250607/gcc/testsuite/gcc.dg/pr120638.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/gcc/testsuite/gcc.dg/pr120638.c	Sat Jun 14 22:32:51 2025
***************
*** 0 ****
--- 1,31 ----
+ /* PR tree-optimization/120638 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -ffast-math" } */
+ 
+ extern float sqrtf (float x);
+ 
+ __attribute__((noipa)) float
+ foo (unsigned int s)
+ {
+   return 0.5f / sqrtf (1.f + s);
+ }
+ 
+ __attribute__((noipa)) float
+ bar (float s)
+ {
+   if (s < 0.0 || s > 65535.0f)
+     __builtin_unreachable ();
+   return 0.5f / sqrtf (1.f + s);
+ }
+ 
+ int
+ main ()
+ {
+   if (__builtin_fabsf (foo (3) - 0.25f) > 0.00390625f
+       || __builtin_fabsf (foo (15) - 0.125f) > 0.00390625f
+       || __builtin_fabsf (foo (63) - 0.0625f) > 0.00390625f
+       || __builtin_fabsf (bar (3.0f) - 0.25f) > 0.00390625f
+       || __builtin_fabsf (bar (15.0f) - 0.125f) > 0.00390625f
+       || __builtin_fabsf (bar (63.0f) - 0.0625f) > 0.00390625f)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-15-20250607/gcc/testsuite/gcc.dg/torture/pr117811.c gcc-15-20250614/gcc/testsuite/gcc.dg/torture/pr117811.c
*** gcc-15-20250607/gcc/testsuite/gcc.dg/torture/pr117811.c	Sat Jun  7 22:32:57 2025
--- gcc-15-20250614/gcc/testsuite/gcc.dg/torture/pr117811.c	Sat Jun 14 22:32:51 2025
*************** void __attribute__((noclone,noinline)) d
*** 18,25 ****
--- 18,30 ----
  
  int main ()
  {
+ #if __SIZEOF_INT__ >= 4
    v4 vec =  {0x1000000, 0x2000, 0x300, 0x40};
    v4 vec2 = {0x100000,  0x200,  0x30,  0x4};
+ #else
+   v4 vec =  {0x4000, 0x2000, 0x300, 0x40};
+   v4 vec2 = {0x400,  0x200,  0x30,  0x4};
+ #endif
    do_shift (&vec, 4);
    if (memcmp (&vec, &vec2, sizeof (v4)) != 0)
      __builtin_abort ();
diff -Nrcpad gcc-15-20250607/gcc/testsuite/gcc.target/avr/torture/pr120423-1.c gcc-15-20250614/gcc/testsuite/gcc.target/avr/torture/pr120423-1.c
*** gcc-15-20250607/gcc/testsuite/gcc.target/avr/torture/pr120423-1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/gcc/testsuite/gcc.target/avr/torture/pr120423-1.c	Sat Jun 14 22:32:55 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ 
+ struct data
+ {
+     int a;
+     int b;
+     long c;
+ };
+ 
+ unsigned char val;
+ unsigned val2;
+ 
+ void func1 (struct data *d)
+ {
+     d->a = 0;
+     d->b = 0x100 * val - 1;
+ }
+ 
+ void func2 (struct data *d)
+ {
+     d->a = 0;
+     d->c = 0x10000 * val2 - 1;
+ }
+ 
+ void func3 (struct data *d)
+ {
+     d->a = 0;
+     d->c = 0x1000000 * val - 1;
+ }
diff -Nrcpad gcc-15-20250607/gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c gcc-15-20250614/gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c
*** gcc-15-20250607/gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c	Sat Jun 14 22:32:55 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ 
+ struct T { int val; };
+ 
+ void f_int (int);
+ char* get_pos (void);
+ struct T* get_pT (void);
+ 
+ void func (char i)
+ {
+     struct T t = * get_pT ();
+     unsigned diff = get_pos () - &i;
+ 
+     if (diff)
+     {
+         long val32 = t.val;
+         if (get_pos ())
+             val32 = diff;
+         if (get_pos ())
+             f_int (2 * val32);
+     }
+ }
diff -Nrcpad gcc-15-20250607/gcc/testsuite/gcc.target/avr/torture/pr120423-2.c gcc-15-20250614/gcc/testsuite/gcc.target/avr/torture/pr120423-2.c
*** gcc-15-20250607/gcc/testsuite/gcc.target/avr/torture/pr120423-2.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/gcc/testsuite/gcc.target/avr/torture/pr120423-2.c	Sat Jun 14 22:32:55 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-ffixed-18 -ffixed-20 -ffixed-22" } */
+ 
+ struct data
+ {
+     int a;
+     int b;
+     long c;
+ };
+ 
+ unsigned char val;
+ unsigned val2;
+ 
+ void func1 (struct data *d)
+ {
+     d->a = 0;
+     d->b = 0x100 * val - 1;
+ }
+ 
+ void func2 (struct data *d)
+ {
+     d->a = 0;
+     d->c = 0x10000 * val2 - 1;
+ }
+ 
+ void func3 (struct data *d)
+ {
+     d->a = 0;
+     d->c = 0x1000000 * val - 1;
+ }
diff -Nrcpad gcc-15-20250607/gcc/testsuite/gfortran.dg/save_8.f90 gcc-15-20250614/gcc/testsuite/gfortran.dg/save_8.f90
*** gcc-15-20250607/gcc/testsuite/gfortran.dg/save_8.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/gcc/testsuite/gfortran.dg/save_8.f90	Sat Jun 14 22:32:59 2025
***************
*** 0 ****
--- 1,13 ----
+ !{ dg-do run }
+ 
+ ! Check PR120483 is fixed.
+ ! Contributed by Thomas Koenig  <tkoenig@gcc.gnu.org>
+ !            and Peter Güntert  <peter@guentert.com> 
+ 
+ program save_8
+   implicit none
+   character(len=:), allocatable, save :: s1
+   s1 = 'ABC'
+   if (s1(3:3) /= 'C') stop 1
+ end program save_8
+ 
diff -Nrcpad gcc-15-20250607/gcc/tree-chrec.cc gcc-15-20250614/gcc/tree-chrec.cc
*** gcc-15-20250607/gcc/tree-chrec.cc	Sat Jun  7 22:33:10 2025
--- gcc-15-20250614/gcc/tree-chrec.cc	Sat Jun 14 22:33:00 2025
*************** convert_affine_scev (class loop *loop, t
*** 1490,1496 ****
    new_step = *step;
    if (TYPE_PRECISION (step_type) > TYPE_PRECISION (ct) && TYPE_UNSIGNED (ct))
      {
!       tree signed_ct = build_nonstandard_integer_type (TYPE_PRECISION (ct), 0);
        new_step = chrec_convert (signed_ct, new_step, at_stmt,
                                  use_overflow_semantics);
      }
--- 1490,1496 ----
    new_step = *step;
    if (TYPE_PRECISION (step_type) > TYPE_PRECISION (ct) && TYPE_UNSIGNED (ct))
      {
!       tree signed_ct = signed_type_for (ct);
        new_step = chrec_convert (signed_ct, new_step, at_stmt,
                                  use_overflow_semantics);
      }
diff -Nrcpad gcc-15-20250607/gcc/tree-ssa-math-opts.cc gcc-15-20250614/gcc/tree-ssa-math-opts.cc
*** gcc-15-20250607/gcc/tree-ssa-math-opts.cc	Sat Jun  7 22:33:10 2025
--- gcc-15-20250614/gcc/tree-ssa-math-opts.cc	Sat Jun 14 22:33:00 2025
*************** pass_cse_reciprocals::execute (function
*** 1053,1058 ****
--- 1053,1059 ----
  		    continue;
  
  		  gimple_replace_ssa_lhs (call, arg1);
+ 		  reset_flow_sensitive_info (arg1);
  		  if (gimple_call_internal_p (call) != (ifn != IFN_LAST))
  		    {
  		      auto_vec<tree, 4> args;
diff -Nrcpad gcc-15-20250607/gcc/tree-vectorizer.h gcc-15-20250614/gcc/tree-vectorizer.h
*** gcc-15-20250607/gcc/tree-vectorizer.h	Sat Jun  7 22:33:10 2025
--- gcc-15-20250614/gcc/tree-vectorizer.h	Sat Jun 14 22:33:00 2025
*************** typedef struct _slp_tree *slp_tree;
*** 30,35 ****
--- 30,36 ----
  #include "internal-fn.h"
  #include "tree-ssa-operands.h"
  #include "gimple-match.h"
+ #include "dominance.h"
  
  /* Used for naming of new temporaries.  */
  enum vect_var_kind {
diff -Nrcpad gcc-15-20250607/libstdc++-v3/ChangeLog gcc-15-20250614/libstdc++-v3/ChangeLog
*** gcc-15-20250607/libstdc++-v3/ChangeLog	Sat Jun  7 22:33:14 2025
--- gcc-15-20250614/libstdc++-v3/ChangeLog	Sat Jun 14 22:33:02 2025
***************
*** 1,3 ****
--- 1,41 ----
+ 2025-06-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120625
+ 	* include/std/format (__format::__disabled): Remove.
+ 	(__formatter_disabled): New type.
+ 	(formatter<char*, wchar_t>, formatter<const char*, wchar_t>)
+ 	(formatter<char[N], wchar_t>, formatter<string, wchar_t>)
+ 	(formatter<string_view, wchar_t>): Use __formatter_disabled as
+ 	base class instead of formatter<__disabled, wchar_t>.
+ 	* testsuite/std/format/formatter/120625.cc: New test.
+ 
+ 2025-06-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/99832
+ 	* include/bits/chrono.h (system_clock::to_time_t): Add
+ 	always_inline attribute to be agnostic to the underlying type of
+ 	time_t.
+ 	(system_clock::from_time_t): Add always_inline for consistency
+ 	with to_time_t.
+ 	* testsuite/20_util/system_clock/99832.cc: New test.
+ 
+ 2025-06-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120548
+ 	* include/std/format (__formatter_fp::_M_localize): Do not
+ 	include a leading sign character in the string to be grouped.
+ 	* testsuite/std/format/functions/format.cc: Check grouping when
+ 	sign is present in the output.
+ 
  2025-06-06  Patrick Palka  <ppalka@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250607/libstdc++-v3/include/bits/chrono.h gcc-15-20250614/libstdc++-v3/include/bits/chrono.h
*** gcc-15-20250607/libstdc++-v3/include/bits/chrono.h	Sat Jun  7 22:33:15 2025
--- gcc-15-20250614/libstdc++-v3/include/bits/chrono.h	Sat Jun 14 22:33:02 2025
*************** _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
*** 1244,1249 ****
--- 1244,1250 ----
        now() noexcept;
  
        // Map to C API
+       [[__gnu__::__always_inline__]]
        static std::time_t
        to_time_t(const time_point& __t) noexcept
        {
*************** _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
*** 1251,1256 ****
--- 1252,1258 ----
  			   (__t.time_since_epoch()).count());
        }
  
+       [[__gnu__::__always_inline__]]
        static time_point
        from_time_t(std::time_t __t) noexcept
        {
diff -Nrcpad gcc-15-20250607/libstdc++-v3/include/std/format gcc-15-20250614/libstdc++-v3/include/std/format
*** gcc-15-20250607/libstdc++-v3/include/std/format	Sat Jun  7 22:33:15 2025
--- gcc-15-20250614/libstdc++-v3/include/std/format	Sat Jun 14 22:33:03 2025
*************** namespace __format
*** 2362,2370 ****
  	const size_t __r = __str.size() - __e; // Length of remainder.
  	auto __overwrite = [&](_CharT* __p, size_t) {
  	  // Apply grouping to the digits before the radix or exponent.
! 	  auto __end = std::__add_grouping(__p, __np.thousands_sep(),
  					   __grp.data(), __grp.size(),
! 					   __str.data(), __str.data() + __e);
  	  if (__r) // If there's a fractional part or exponent
  	    {
  	      if (__d != __str.npos)
--- 2362,2377 ----
  	const size_t __r = __str.size() - __e; // Length of remainder.
  	auto __overwrite = [&](_CharT* __p, size_t) {
  	  // Apply grouping to the digits before the radix or exponent.
! 	  int __off = 0;
! 	  if (auto __c = __str.front(); __c == '-' || __c == '+' || __c == ' ')
! 	    {
! 	      *__p = __c;
! 	      __off = 1;
! 	    }
! 	  auto __end = std::__add_grouping(__p + __off, __np.thousands_sep(),
  					   __grp.data(), __grp.size(),
! 					   __str.data() + __off,
! 					   __str.data() + __e);
  	  if (__r) // If there's a fractional part or exponent
  	    {
  	      if (__d != __str.npos)
*************** namespace __format
*** 3010,3033 ****
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // 3944. Formatters converting sequences of char to sequences of wchar_t
  
!   namespace __format { struct __disabled; }
  
-   // std::formatter<__disabled, C> uses the primary template, which is disabled.
    template<>
      struct formatter<char*, wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
    template<>
      struct formatter<const char*, wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
    template<size_t _Nm>
      struct formatter<char[_Nm], wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
    template<class _Traits, class _Allocator>
      struct formatter<basic_string<char, _Traits, _Allocator>, wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
    template<class _Traits>
      struct formatter<basic_string_view<char, _Traits>, wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
  #endif
  
    /// An iterator after the last character written, and the number of
--- 3017,3044 ----
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // 3944. Formatters converting sequences of char to sequences of wchar_t
  
!   struct __formatter_disabled
!   {
!     __formatter_disabled() = delete; // Cannot format char sequence to wchar_t
!     __formatter_disabled(const __formatter_disabled&) = delete;
!     __formatter_disabled& operator=(const __formatter_disabled&) = delete;
!   };
  
    template<>
      struct formatter<char*, wchar_t>
!     : private __formatter_disabled { };
    template<>
      struct formatter<const char*, wchar_t>
!     : private __formatter_disabled { };
    template<size_t _Nm>
      struct formatter<char[_Nm], wchar_t>
!     : private __formatter_disabled { };
    template<class _Traits, class _Allocator>
      struct formatter<basic_string<char, _Traits, _Allocator>, wchar_t>
!     : private __formatter_disabled { };
    template<class _Traits>
      struct formatter<basic_string_view<char, _Traits>, wchar_t>
!     : private __formatter_disabled { };
  #endif
  
    /// An iterator after the last character written, and the number of
diff -Nrcpad gcc-15-20250607/libstdc++-v3/testsuite/20_util/system_clock/99832.cc gcc-15-20250614/libstdc++-v3/testsuite/20_util/system_clock/99832.cc
*** gcc-15-20250607/libstdc++-v3/testsuite/20_util/system_clock/99832.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/libstdc++-v3/testsuite/20_util/system_clock/99832.cc	Sat Jun 14 22:33:03 2025
***************
*** 0 ****
--- 1,14 ----
+ // { dg-options "-O0 -g0" }
+ // { dg-do compile { target c++20 } }
+ // { dg-final { scan-assembler-not "system_clock9to_time_t" } }
+ 
+ // Bug libstdc++/99832
+ // std::chrono::system_clock::to_time_t needs ABI tag for 32-bit time_t
+ 
+ #include <chrono>
+ 
+ std::time_t
+ test_pr99832(std::chrono::system_clock::time_point t)
+ {
+   return std::chrono::system_clock::to_time_t(t);
+ }
diff -Nrcpad gcc-15-20250607/libstdc++-v3/testsuite/std/format/formatter/120625.cc gcc-15-20250614/libstdc++-v3/testsuite/std/format/formatter/120625.cc
*** gcc-15-20250607/libstdc++-v3/testsuite/std/format/formatter/120625.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20250614/libstdc++-v3/testsuite/std/format/formatter/120625.cc	Sat Jun 14 22:33:04 2025
***************
*** 0 ****
--- 1,19 ----
+ // { dg-do compile { target c++20 } }
+ 
+ // Bug libstdc++/120625
+ // std::formatter<__disabled> specializations cause errors in user code
+ 
+ #include <format>
+ 
+ enum X { };
+ 
+ // A concept that cannot be used with incomplete types:
+ template<typename T>
+ concept is_X = !std::is_empty_v<T> && std::is_same_v<X, T>;
+ 
+ // A valid program-defined specialization:
+ template<typename T, typename C> requires is_X<T>
+ struct std::formatter<T, C> : std::formatter<int, C> { };
+ 
+ // Instantiate the program-defined formatter specialization:
+ auto s = sizeof(std::formatter<X, char>);
diff -Nrcpad gcc-15-20250607/libstdc++-v3/testsuite/std/format/functions/format.cc gcc-15-20250614/libstdc++-v3/testsuite/std/format/functions/format.cc
*** gcc-15-20250607/libstdc++-v3/testsuite/std/format/functions/format.cc	Sat Jun  7 22:33:17 2025
--- gcc-15-20250614/libstdc++-v3/testsuite/std/format/functions/format.cc	Sat Jun 14 22:33:04 2025
*************** test_locale()
*** 260,265 ****
--- 260,275 ----
    s = std::format(eloc, "{0:Le} {0:Lf} {0:Lg}", -nan);
    VERIFY( s == "-nan -nan -nan" );
  
+   // PR libstdc++/120548 format confuses a negative sign for a thousands digit
+   s = std::format(bloc, "{:L}", -123.45);
+   VERIFY( s == "-123.45" );
+   s = std::format(bloc, "{:-L}", -876543.21);
+   VERIFY( s == "-876,543.21" );
+   s = std::format(bloc, "{:+L}", 333.22);
+   VERIFY( s == "+333.22" );
+   s = std::format(bloc, "{: L}", 999.44);
+   VERIFY( s == " 999.44" );
+ 
    // Restore
    std::locale::global(cloc);
  }
